|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
+ f6 d7 b- f; V* H3 C# E private boolean findPotentialPartner(){: L1 {% V+ Q P; ^4 ?
boolean value = false;' B( v" X; T6 h2 W
% V/ i" y1 f* `( q+ B
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();* j3 M& ^" y& x$ h1 [9 D6 g
Iterator iterator = grid.getIteratorAt(x, y);
- f0 }' j5 ~! z% I$ R SexAgent ag1 = null;
2 W& l$ R$ h" [% t; [, `/ Y' a SexAgent [] potenAgent = new SexAgent[20];* r! l/ R2 | v+ m) `! P
int goodNumber = 0;
8 t8 u7 i7 k% {& B) L" W" I while(iterator.hasNext()){
# N+ e: k0 q& Y! \4 |8 V& p System.out.println("XXXXXXXXXXXXXXXXXXXXX");) M4 b- b- v U6 |( W1 F
ag1 = (SexAgent)iterator.next();
' |& Q7 d* I: i/ T1 V if((ag1.sex == FEMALE) # M+ u0 }3 D" x& R- n
&&(!ag1.isCoupled())){
$ J* Q0 [5 Q+ o- E# L System.out.println("YYYYYYYYYYYYYYYYYYYY");
# Q8 g/ b. V% }8 `( Z3 y* Q3 r4 v potenAgent[goodNumber] = ag1;
* @$ ^/ Q+ a) [& o ~2 _) r4 @& b goodNumber ++;4 H7 E3 M- j2 t+ R
}
& c" Q* @$ h1 w# L3 J( S+ x9 Z9 g }
: q5 t9 E* ]$ w* M5 t$ z- V3 H1 c 4 G& [6 m- V5 ?1 F8 v* z2 @7 N9 r
if(goodNumber >0){5 v; j- `8 z1 n" Y
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 2 P+ P" U$ [# S! \
Random rd1 = new Random();
/ U3 `' `3 t) X int select = rd1.nextInt(goodNumber);' }0 L4 y6 v" A1 ~( B1 d1 `8 L
potentialParterner = potenAgent[select];* i8 W* j" x( u5 X% p8 y4 \' M# S; R
value = true;
7 r' t" T8 x! X8 J' x& J }* r" y" s& o, Q! u& Y# B, W
return value;
- s& B0 g/ x7 C }
- {# Z/ _" L" H, L1 E. e始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|