|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。8 k4 k: r! e* t3 I
private boolean findPotentialPartner(){- c$ p; `; k- ~; a
boolean value = false;& d1 L9 F' v9 x. N. o
: D5 O* E! I: b7 x. l7 w+ R% D
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();. ~4 m$ c/ t0 U% t9 w
Iterator iterator = grid.getIteratorAt(x, y);! ^8 E- A% q+ }. y" H5 K
SexAgent ag1 = null; / P: P+ V: E% R& z+ b( q
SexAgent [] potenAgent = new SexAgent[20];5 H, x% G0 y) C6 K. Z; y1 S. `
int goodNumber = 0;9 R# a! V0 }0 g6 R( v: j
while(iterator.hasNext()){
; ?6 J& H% W7 r& N7 g* ] System.out.println("XXXXXXXXXXXXXXXXXXXXX");
) p$ \2 Y4 w% }0 Z7 c" k: w; c! Q ag1 = (SexAgent)iterator.next();% J. U ?( j7 L D
if((ag1.sex == FEMALE)
1 v& D& y. `8 Z &&(!ag1.isCoupled())){: Q* Y J3 _; K& j( {
System.out.println("YYYYYYYYYYYYYYYYYYYY");
1 F$ B) i$ _6 M1 p; D potenAgent[goodNumber] = ag1;
F; T5 N$ P8 [5 x# K goodNumber ++;
" I, A$ @! T9 R' L' O( w ^ }5 B! O+ u! R! U' j/ `1 u
}% J W0 {$ M+ Z% j. t0 c: D0 a
) Q2 K# B2 z1 t8 N: F7 K2 D3 Y X if(goodNumber >0){% d- S/ ] O9 X1 R; q- N
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ! b+ o# X# ?4 n4 M# l0 m& h, q! n
Random rd1 = new Random();
0 T% x. e# e* a6 V# Q! h! v int select = rd1.nextInt(goodNumber);2 o: i& Y/ k# y' \5 \
potentialParterner = potenAgent[select];4 n9 t2 W( f$ } ]5 W# z
value = true;
, X2 w0 E. s9 S2 k. ^' W. B }
1 r: _; R1 ~( v3 t2 g& p return value;/ B. R. g1 q- R S4 ]& m
}
6 ]+ Y, ^: N2 w% w3 j5 {始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|