最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 6 s! {& R* O D. W2 G! D private boolean findPotentialPartner(){ ; Z+ G5 i# X6 i- F boolean value = false;* D' K m) R; W& R& A
9 u; l0 ~# g8 ]. _: u0 a+ S6 m OrderedMulti2DGrid grid = space.getCurrentAgentSpace(); 8 Q8 f o# L! c# Q H) g Iterator iterator = grid.getIteratorAt(x, y); ; L8 \. L5 z/ C1 f0 k9 i1 ~2 S$ d SexAgent ag1 = null; % a) e% J- m/ `& ~0 ~
SexAgent [] potenAgent = new SexAgent[20];( M( i8 a' z; b2 {8 h; ^
int goodNumber = 0;: ^ C, m% S# z2 R0 W% s
while(iterator.hasNext()){ 2 O) o. |+ X5 M0 L7 m5 T- D System.out.println("XXXXXXXXXXXXXXXXXXXXX");3 ]+ Y$ Z% d, e3 g' M
ag1 = (SexAgent)iterator.next();- l7 ? ~5 z7 `* X6 A8 R. s
if((ag1.sex == FEMALE) * J% S2 v8 ~: b6 k# V$ U( i. X &&(!ag1.isCoupled())){6 }: }) U3 f% p1 \( Y& o
System.out.println("YYYYYYYYYYYYYYYYYYYY"); ( |3 b4 s ^) x) {( U: _: W! X potenAgent[goodNumber] = ag1;# K6 [6 _5 q E# z4 x
goodNumber ++;* \$ t; Z, W8 H/ ~8 R
} 1 H! X- p: _% |3 e" f" W: p: W( Z: F } & @: _& o8 G% q# [ D, O$ ^: A# f- T$ x3 n$ K. a8 Y/ s if(goodNumber >0){ ! s' x. w& y# p. V% s System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); * _! r' F9 k4 B) Y" T2 [9 w. H" c# t+ N Random rd1 = new Random(); 9 b( X3 @6 M4 O int select = rd1.nextInt(goodNumber); i; `9 }* @* F ]& H! G potentialParterner = potenAgent[select];2 n1 \) _' {: {- q( @1 s% Z! r
value = true;" Y4 \/ Q9 Q0 I+ v5 O% J$ @( ~& U. V0 p
}, q' O y$ W& w1 c7 d" g
return value;/ y( t5 ]- a/ k4 K8 A
} + g" \! ]5 G3 p! J! G始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。