最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 : O2 p& C2 p$ W! O private boolean findPotentialPartner(){! ~! |$ ?7 X, B. z7 x
boolean value = false; ) L+ d- u! ]) G3 G: Y : i2 ^6 ?7 A8 D3 _: C+ D OrderedMulti2DGrid grid = space.getCurrentAgentSpace();, X% Q2 C$ A% ~4 I" O5 [
Iterator iterator = grid.getIteratorAt(x, y); " _2 C; m0 r- I. L! a SexAgent ag1 = null; % e5 @2 @/ E* u6 ] SexAgent [] potenAgent = new SexAgent[20]; 9 x% k+ F/ r# C, y5 V- Q* z int goodNumber = 0; 1 u5 ]* K7 W; k/ ] while(iterator.hasNext()){) I/ a$ z% R- ^7 @4 O0 l. [. T
System.out.println("XXXXXXXXXXXXXXXXXXXXX");1 p/ q8 N8 U" S
ag1 = (SexAgent)iterator.next();5 y" E; a, B6 f6 D
if((ag1.sex == FEMALE) & D( a$ v2 I& J' H3 k
&&(!ag1.isCoupled())){ c- V+ o+ f) r l( y% w System.out.println("YYYYYYYYYYYYYYYYYYYY"); 1 Q) u Q, l* A: J' z$ f' @; h potenAgent[goodNumber] = ag1;. D1 g) e8 N* G" w. O1 k a
goodNumber ++; 3 G( ~0 c, s- D# ]8 D' B* f% A p$ H1 D } - s& e5 g* _1 g. d& q% _ }! t* I7 [8 g2 R1 L
1 R, D, x. g0 u. Y* J& X if(goodNumber >0){ 3 C! {4 a8 P# h1 t$ I, E8 `1 o System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); & ^3 _$ P4 E2 l1 C1 f( k Random rd1 = new Random(); ; P6 P. b& I8 l+ L/ z! \, z int select = rd1.nextInt(goodNumber);# w. ?# { h6 _7 O. Z# A' H% H
potentialParterner = potenAgent[select];) G- R) Z" u8 q: Q& Y9 n
value = true;' ~. |6 _9 m1 F
}6 J. x7 u p0 G5 p$ \0 ^
return value;. i; n. l6 b- P# L( t$ b3 P" {! K
}3 L# g c6 l8 z9 y9 y. N- g. S0 @
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。