|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
/ p$ R1 E& A' f% Z, k6 N1 s private boolean findPotentialPartner(){& Y- e$ G( m3 A$ K4 n
boolean value = false;
0 n# d4 F# Q) z# v; f: w" \ + E: F# E- Q# d8 ?2 n i
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();- o$ U6 m: e" L
Iterator iterator = grid.getIteratorAt(x, y);" l7 N9 i3 { F9 ]0 e' M
SexAgent ag1 = null; " v* ^& w' P6 ~" u% ]" L
SexAgent [] potenAgent = new SexAgent[20];! [ x1 l; l, T
int goodNumber = 0;
0 T" A1 \( u c0 F# {' N# L while(iterator.hasNext()){
+ F4 v) f5 y0 h F System.out.println("XXXXXXXXXXXXXXXXXXXXX");( J- X& m& b9 r
ag1 = (SexAgent)iterator.next();6 i+ j( W7 M9 c9 T( ?1 z
if((ag1.sex == FEMALE) 0 x9 \) Z1 K" o7 s& h" N0 j
&&(!ag1.isCoupled())){% l+ u( `. p) ~$ K
System.out.println("YYYYYYYYYYYYYYYYYYYY");
# _8 G- V, s* U$ S- ? potenAgent[goodNumber] = ag1;
# K, ^* H$ N9 t9 T' r4 o& Z5 C goodNumber ++;
' ?0 M8 [% i- T! F: k }5 V% s$ o, S& f" h9 }
}
7 j4 v; t9 J- H( @
) [$ o f& K3 Z0 U5 g7 }3 ~ if(goodNumber >0){6 f8 z0 `5 a8 `- f" b
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ! X, E- w9 j# _& m* o) y
Random rd1 = new Random();
0 T: `9 b. r" p6 y int select = rd1.nextInt(goodNumber);7 w+ z0 I8 t, T& u+ k
potentialParterner = potenAgent[select];
d) C; u- ^- P" _ value = true;9 i7 I8 S6 M9 b# l) s) \
}0 _- h' t8 y9 e. @* ^
return value;
' \$ f2 C, g6 a7 X& X }
% ^% C% D. z, L5 X, C& ~3 C始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|