|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
3 d$ L, ?4 W1 Z4 x! ^. M# z private boolean findPotentialPartner(){
6 S7 ]# Y) b( o1 Q1 _# ^3 S6 w boolean value = false;
4 i/ L3 u e$ V0 W! P8 r ' y; _# p% _/ z" P
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
: B& I4 a8 w X2 Y, ^% o Iterator iterator = grid.getIteratorAt(x, y);- N! b% G' ~1 w( y0 ]& X6 P3 c; r( j
SexAgent ag1 = null;
* @+ P1 O& c5 x5 ~6 i" k SexAgent [] potenAgent = new SexAgent[20];% V; n8 m0 M7 e/ C
int goodNumber = 0;
+ o; E9 A& m, d W9 y' q3 R while(iterator.hasNext()){9 z% }( H) Q9 K3 W
System.out.println("XXXXXXXXXXXXXXXXXXXXX");$ V; F* @$ m: {: q( Y
ag1 = (SexAgent)iterator.next();6 G5 u9 ]5 G/ [& R. k
if((ag1.sex == FEMALE)
$ Y& F+ `2 |+ z4 Y& I+ H &&(!ag1.isCoupled())){& o( W6 C, T7 u! L: S2 V
System.out.println("YYYYYYYYYYYYYYYYYYYY");7 `- w' U4 w& z3 @- O4 j, H; Y9 E
potenAgent[goodNumber] = ag1;. c$ U+ k0 x) i7 |& c( m/ f1 M
goodNumber ++;* U7 f% j8 U9 e y
}
4 X( r2 A. n: w; @ }4 T; v& F( x6 k( J* L
: Z% u& F7 R5 [4 M+ x
if(goodNumber >0){) h" z, A6 z7 Z1 h# ]
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
( g- T0 k& d1 M X9 c- D Random rd1 = new Random();4 f6 `$ V! V3 ]) D
int select = rd1.nextInt(goodNumber);" \+ I" d* p4 B
potentialParterner = potenAgent[select];$ H2 V! s3 M2 P/ X0 Z1 D9 p! S
value = true;
+ a8 b0 f0 C& {! U8 L) w }
h5 s0 o2 K" B$ y+ W9 D5 N return value;$ o- }6 [" {) w
}/ s# k4 h' l8 d2 b
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|