最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。. d0 @+ T, q' ^3 F Z* o0 f# t
private boolean findPotentialPartner(){# e+ z: h$ @, t V5 C) t
boolean value = false;4 F7 R2 ~1 b, i! P8 a
; U% ]8 V( K8 Z OrderedMulti2DGrid grid = space.getCurrentAgentSpace();) E B6 j. d0 w
Iterator iterator = grid.getIteratorAt(x, y); - b5 @3 F; t; v# B) C' Z6 O SexAgent ag1 = null; ' G5 F) m: Y- l! } SexAgent [] potenAgent = new SexAgent[20];5 E- x+ I( T- T; c: x
int goodNumber = 0; / @9 e' w2 D- |7 u2 L6 M while(iterator.hasNext()){7 z8 ^9 c5 |+ Q7 L; k0 E+ V$ W
System.out.println("XXXXXXXXXXXXXXXXXXXXX"); - u m) v. J: c) E" e8 l ag1 = (SexAgent)iterator.next(); : m) |; t* ~5 ~ if((ag1.sex == FEMALE) : h: s& S+ o5 ^' B5 B! z9 }- M A) n
&&(!ag1.isCoupled())){ . ~/ {$ r' O1 r4 }* M System.out.println("YYYYYYYYYYYYYYYYYYYY"); # N+ j" z% G$ x$ Z9 {) x7 Q0 L' l potenAgent[goodNumber] = ag1;, m; v# ?; D, V
goodNumber ++; ) |$ p, i, N( [8 q+ j0 W0 ^* } }) n" m2 H* b% W% Z4 e" u7 X$ z% j
}* E, y6 a1 R% m( Y2 C
! Y4 D- G6 s3 d& e& ] if(goodNumber >0){ 9 {% e5 h- i/ P9 R3 n; i. s% [ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); - }- F/ c6 {$ x" G* n# S2 }, e
Random rd1 = new Random();$ t ^+ r3 I) Z2 Y& f
int select = rd1.nextInt(goodNumber);8 k* x" t6 H5 ~& { O
potentialParterner = potenAgent[select];( d: ?. _$ i: `9 t _
value = true; 0 ~5 o9 N1 f# h9 U9 k- U ] } + \5 _! m/ y/ l. i8 e* N N return value; & c7 F; \* T/ w- C) x5 w# Z M }3 \ h) P- K7 W6 b& ]! ?- ]3 V
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。