|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。% b5 K5 @- `/ D* i; Y/ m
private boolean findPotentialPartner(){
0 A% m: w3 [+ g/ p# u" ? boolean value = false;
* ] v0 x% L* `
7 D: V3 \: o( z) i9 C; J OrderedMulti2DGrid grid = space.getCurrentAgentSpace();6 d6 N2 B+ ^: Z: H4 l/ o
Iterator iterator = grid.getIteratorAt(x, y);% n$ G2 d6 }: @% v& ~& W
SexAgent ag1 = null; + l" `) V* k, a8 k+ L( Q; V0 J
SexAgent [] potenAgent = new SexAgent[20];
! J5 R9 O2 V- i4 E: k2 n9 ]0 d int goodNumber = 0;( v9 a" O: A4 G* |* B4 w
while(iterator.hasNext()){
' X7 L6 G. ]) m$ l System.out.println("XXXXXXXXXXXXXXXXXXXXX");
$ b- D0 W' X! _0 K ag1 = (SexAgent)iterator.next();" |' q: _, N' _0 D
if((ag1.sex == FEMALE) ) \( o& t' Q5 @2 B4 [- |: \
&&(!ag1.isCoupled())){
3 }' s$ }+ A# ]' ~2 q' _+ C System.out.println("YYYYYYYYYYYYYYYYYYYY");
% w ]/ D& q2 K; i potenAgent[goodNumber] = ag1;
; N& i2 b7 N+ e, X/ S goodNumber ++;
) ~- K, o! k1 J$ k- P }
5 i( p( r# Y; l3 q$ n% y' u }
. F) P4 {4 y ~1 \
6 k& M, f m) S" U8 n& v if(goodNumber >0){
* v: R3 L7 a; o: L: Q5 _ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); # ]; E' f6 J& o4 Q" Y+ ~1 x
Random rd1 = new Random();# S ~0 t1 w& {/ C9 `
int select = rd1.nextInt(goodNumber);
Z# k3 m( S5 ?/ @) ?7 E# v; S potentialParterner = potenAgent[select];
+ @# B( V f" ^3 v* ]+ c& i6 B value = true;' |0 b: q. w7 F* Q3 q% c
}
% O& q1 D7 J8 o6 \, ~$ Z$ ` return value;
0 o5 Z |+ G+ G# Z- ]; Q }
+ O: A9 }- a* U. W8 k1 N* [始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|