最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 1 c2 W. Y; I3 w private boolean findPotentialPartner(){ _/ j8 q; Y* J/ [; d boolean value = false;& R9 p! a) l( U/ W( g
1 G5 z% U. o( r7 x0 o OrderedMulti2DGrid grid = space.getCurrentAgentSpace(); ! d7 f3 ?( v, Z3 x! x$ C Iterator iterator = grid.getIteratorAt(x, y); - b. j" o1 q/ J* P" o4 v( _/ \ SexAgent ag1 = null; * @ {, O1 C5 k; x# p* x4 s8 N SexAgent [] potenAgent = new SexAgent[20];9 [, m6 c& B7 R g- T- E8 e
int goodNumber = 0;5 P" ~3 Y7 a' K; o& t! i" X1 @
while(iterator.hasNext()){' P. X) @% x {7 U+ d5 L3 \
System.out.println("XXXXXXXXXXXXXXXXXXXXX");( N& T- ?" N" ` H3 L6 Y
ag1 = (SexAgent)iterator.next(); $ [" T3 r. h2 m5 l if((ag1.sex == FEMALE) ( t& Y3 \ T; z1 e, w' A( C
&&(!ag1.isCoupled())){! Z- C9 Q$ A$ P5 n1 j8 j1 m( c
System.out.println("YYYYYYYYYYYYYYYYYYYY");) H( B$ y! ?. V# ~3 r
potenAgent[goodNumber] = ag1; 6 C& y+ J: D2 q goodNumber ++; : E4 A3 ~0 S* }/ d* X } * M* w% g, y3 R- z& B% d% I } " S2 Z2 @' R ~& |- Y( U @# J3 x6 y7 {5 s$ l if(goodNumber >0){+ E0 s7 L; X" l# ?# y5 g
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ' h+ d* A1 f& u6 l) p5 d. @1 N
Random rd1 = new Random();( y5 W7 \4 ^- R! M
int select = rd1.nextInt(goodNumber); 2 d( A6 d) R) o* N5 ~. R potentialParterner = potenAgent[select]; 4 R7 N! s: N, |: R) k9 |8 R( z k, l1 F value = true; ( X0 ~: B, T7 ^ }0 A7 e" P# o {- [
return value;2 ^: [" ]: [4 R1 a% o1 U
}& Y! b8 F* I9 {
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。