|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
4 G- Y$ \: l% b! R) G* y private boolean findPotentialPartner(){
( C1 T, _4 n# g6 d1 V$ F1 X5 H boolean value = false;
, j0 A# G& } u1 J$ F 0 |0 a8 H' W. B4 z; I% e& J- W+ \
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
+ a: u1 J; f* s1 _+ G$ `6 t Iterator iterator = grid.getIteratorAt(x, y);
* V+ d% q. z+ y1 E" K SexAgent ag1 = null; 3 v5 o9 h% Z- A, B: f) T5 `. }
SexAgent [] potenAgent = new SexAgent[20];- s: y2 h) S# x
int goodNumber = 0;! E9 n0 x& x! ]8 S2 ~/ o
while(iterator.hasNext()){
" d2 B& P# j% V" b4 a. h4 D! r System.out.println("XXXXXXXXXXXXXXXXXXXXX");6 W7 m2 _' Y, h, L, q
ag1 = (SexAgent)iterator.next();
' [/ E3 W+ J9 v if((ag1.sex == FEMALE) ) ]5 c' r. G. Q8 g6 D H) n
&&(!ag1.isCoupled())){
! b6 D m5 ?0 ~" L; s! u5 n3 g System.out.println("YYYYYYYYYYYYYYYYYYYY");6 L/ l- \. B: O' P3 ?1 e
potenAgent[goodNumber] = ag1;9 E" G3 u, U4 [2 b
goodNumber ++;
2 s- b: d' S% m2 R& H# {, N) n7 F }
2 d7 I6 D+ l3 l. b/ H }
|& r" U5 V4 u1 r: B; p* L1 c : t5 x# T6 S, d! p7 P
if(goodNumber >0){! R/ Z# E6 F! r
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
7 g U, g! f+ k" w Random rd1 = new Random();7 L+ S% G8 e6 \9 R( F, v
int select = rd1.nextInt(goodNumber);/ ^5 x- x) A( k( ^4 S: Z
potentialParterner = potenAgent[select];
* L& e/ p2 }# ~) g0 j4 A value = true;0 a, [) i/ Y: F& J. l
}" y3 @& B3 q" n2 b6 c
return value;- y- \! @6 s6 ~+ d
}
5 }" J; q8 p' u9 [+ R0 Q( O始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|