最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 2 H% h \1 f' K% @1 W- I( k ?' \( h' g private boolean findPotentialPartner(){ $ ~% l- F9 F4 q" c0 O boolean value = false; + [6 V3 o, B7 O1 p, z1 b4 Q2 \ & \( S5 s& |- a0 ?8 @! u! u
OrderedMulti2DGrid grid = space.getCurrentAgentSpace(); : a8 I. g% A* G+ _- z Iterator iterator = grid.getIteratorAt(x, y); 3 \% K5 [3 M, \" \- ]4 f k" r0 x SexAgent ag1 = null; 9 w+ p, D% W. }7 I2 t n SexAgent [] potenAgent = new SexAgent[20]; 0 q1 T) T2 V+ Z* H$ o* M" t int goodNumber = 0;" c! P" j+ I1 m8 ?4 x
while(iterator.hasNext()){ 7 n8 n$ i s" o# ~* y. } System.out.println("XXXXXXXXXXXXXXXXXXXXX");6 k, l7 M. X9 d7 ^
ag1 = (SexAgent)iterator.next(); % q+ j4 P* A8 q8 B; z if((ag1.sex == FEMALE) 8 Z c: e4 L1 C, i" x Y. K &&(!ag1.isCoupled())){. ~; F& x. u3 H. K8 G
System.out.println("YYYYYYYYYYYYYYYYYYYY"); " S$ D, R+ D+ D+ k4 \! ~ potenAgent[goodNumber] = ag1;% j2 N: `: s2 W' Z% _
goodNumber ++;9 z) s, m: ^* v+ A2 k
} $ y" t# K, I$ ]/ e X. {7 q5 _ }0 ]: p$ E) I3 }, ]0 \
* r( s! H' {& q. y$ p! z' h if(goodNumber >0){ 1 L. J$ o. d% A; v, s System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 9 {4 N1 }. ]. Y% _1 G0 ? Random rd1 = new Random(); 1 w4 U; h1 }( H9 d% W b2 A1 ] int select = rd1.nextInt(goodNumber); ! ?; S j! [2 D$ q5 P f2 ~# ^, G) e potentialParterner = potenAgent[select];2 i. p, e- r& W* M
value = true;9 [/ `4 v, I. S
}* E9 a2 P' C' J% ?& f4 E, \
return value; - B7 X# ]4 l+ u2 D; o2 t& Z; V }" ?8 R9 z2 Z/ K N
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。