|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
0 p* h3 T1 }! w' w private boolean findPotentialPartner(){ Q8 a, }' S, v: G( e+ s- X
boolean value = false;
& s7 E; v2 _; q . F a# i) V7 j6 p1 s5 R
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
5 T/ l$ ?8 g4 _3 T Iterator iterator = grid.getIteratorAt(x, y);
7 ?+ t5 J" a% ^) f SexAgent ag1 = null; 2 m# t' n2 C# X+ }
SexAgent [] potenAgent = new SexAgent[20];* N: }- g7 B$ |4 X2 M* R
int goodNumber = 0;
% J3 o4 g6 O' c, ` while(iterator.hasNext()){3 T1 z, g6 ~- L2 n% ~/ D
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
& Z: D/ J/ w1 _, I/ B# _ ag1 = (SexAgent)iterator.next();& B- d- F' p8 q! a3 \
if((ag1.sex == FEMALE)
; |) T) n1 w' I& j$ m &&(!ag1.isCoupled())){4 z9 t ^; ~3 ^6 Z
System.out.println("YYYYYYYYYYYYYYYYYYYY");1 `+ H: s3 n. _ z7 r2 |
potenAgent[goodNumber] = ag1;! Z1 v, t$ `, f. g$ C3 S3 \) I0 G# c
goodNumber ++;5 s5 ^5 w! R N) } c& L( l2 l
}
9 Q0 Z; m3 i( J1 E' Z/ B) v' [ }
. z( w4 l3 H4 t# g4 K
* M4 T/ w* r/ U: x( f; g. b if(goodNumber >0){
+ L- h z [) \: M, f System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 2 \$ }( H+ |0 h- q7 S$ E. z2 |
Random rd1 = new Random();! u6 k. V3 }' _$ {% u: T2 M
int select = rd1.nextInt(goodNumber);; k; |: H; {' c) k& G+ o0 x
potentialParterner = potenAgent[select];
# H' A. E* @ F' z value = true;% j1 A6 Q1 {/ |& o7 }
}* c9 n; |% Y) ~/ l; j! x) Q) w4 E( H
return value;! R- Q2 R8 c, Z
}
: C6 x; G3 k h; u* L! T7 F5 F始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|