|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。% v7 X& x9 A1 o8 n5 K2 N- W1 J( [
private boolean findPotentialPartner(){
) W2 w* N9 ?7 o; k6 Q' u, V$ A+ \2 _' q- d boolean value = false;
1 ?- Y0 N' L. ?" r9 Z# y
3 ^3 e8 b W$ v: q* o: x OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
* g+ H* N. e, l5 a6 _/ Z Iterator iterator = grid.getIteratorAt(x, y);
$ X9 a1 w d r! Z; [5 |! Y7 C SexAgent ag1 = null; 7 }& H( d$ {$ i9 M3 M- J
SexAgent [] potenAgent = new SexAgent[20]; Y7 h9 e3 u0 E; A
int goodNumber = 0;! N1 a7 o2 b" h8 t) }' U9 T4 I; U+ E
while(iterator.hasNext()){
7 T" r& W0 M3 L8 ?0 }! Y: h System.out.println("XXXXXXXXXXXXXXXXXXXXX");( M! G* s; y$ s7 O1 D
ag1 = (SexAgent)iterator.next();
. O+ y; n4 O, J" | n# ^ if((ag1.sex == FEMALE) & F( Z1 `1 q2 \3 j( d9 ?* @3 @8 j) }8 c
&&(!ag1.isCoupled())){, ?, ^) q' i0 g% y- h
System.out.println("YYYYYYYYYYYYYYYYYYYY");
) {' F7 z, H2 U0 ^! A5 \ potenAgent[goodNumber] = ag1;
: Q) W: X t# V goodNumber ++;8 T* N5 G' Y4 O; B: p9 F' i
}
1 ?$ } Y. d: E, Z }& k3 }2 _% H% @& g
5 u5 U* R9 a0 g' S2 l0 p if(goodNumber >0){9 P8 K8 w5 o* L/ }1 M
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 5 |6 L" ~9 C* r+ y; t* Z& o" d
Random rd1 = new Random();
2 x- s" k8 D9 x) Z int select = rd1.nextInt(goodNumber);: g4 a+ X) x0 }% O, @
potentialParterner = potenAgent[select];
8 V; s+ ?! h5 v* ]; p value = true;) z2 T+ a7 G4 P& h( L
}$ d( n* P# F' |" V' B+ y9 W$ _0 Z3 q
return value;
. d h l% {/ \0 J }& ] F' t& _: J7 O3 n) d
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|