最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 9 Y. v# H/ f' N* z+ a private boolean findPotentialPartner(){* J. m. n7 a, u3 }
boolean value = false;! v8 S. `- Q# U2 j" _- Q5 d* [/ Q% h
: P6 g- q' E0 u" R0 O OrderedMulti2DGrid grid = space.getCurrentAgentSpace(); , u; N- K% U) J& a! Q* j Iterator iterator = grid.getIteratorAt(x, y);5 S0 k% S& h5 S/ X
SexAgent ag1 = null; 7 }; Z6 k8 I0 {1 c6 q r SexAgent [] potenAgent = new SexAgent[20]; ; r3 e% ^' H3 G5 G* @ int goodNumber = 0; : Y: ?4 U, o2 j4 c& O3 X while(iterator.hasNext()){- a8 l( E9 w* i2 m
System.out.println("XXXXXXXXXXXXXXXXXXXXX"); ; j" p5 x+ U; E+ E0 Z+ \9 y ag1 = (SexAgent)iterator.next();0 k2 V/ |: s& O; T8 d+ x
if((ag1.sex == FEMALE) : `1 ~$ Y, B& T) r9 a! h7 p. |2 W &&(!ag1.isCoupled())){ ( f+ A! h" n L4 N1 T* F System.out.println("YYYYYYYYYYYYYYYYYYYY"); ( Z% Q0 D% b% A( }9 P3 d/ x. x potenAgent[goodNumber] = ag1;0 o# W, Y8 ] |6 z! l5 }$ x* e
goodNumber ++; Y8 U( t" V1 e: j+ Q' W( m
}: R! F8 z/ r: {$ u7 d
} ! g- n0 n( V; T1 k( C- j- Q $ C5 H0 l1 P t1 }4 X
if(goodNumber >0){ * D- X% @3 ]) j2 h4 L5 g System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); . t; |0 X5 d' q; M4 }$ V
Random rd1 = new Random();5 z, Q3 Y: B, H' {/ A$ ^
int select = rd1.nextInt(goodNumber);# ]7 W/ k( f) @ N) C
potentialParterner = potenAgent[select]; |6 ?3 Z. y. X7 W; Q value = true;& s$ k! r9 |( u$ |' l# C8 p5 W
} ! r" T" v" _7 h9 o! h8 k( } return value;! G. n: n. \, x9 V- y3 n- `8 \# M; l
}8 S- I% c- Z8 ~5 P1 w+ u8 m
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。