|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
- y3 v! ?; M" ]! ] private boolean findPotentialPartner(){+ M* K3 R, L4 G' Y1 ~1 O
boolean value = false; s0 U; U! D2 k/ e+ J% x0 _+ Y
* Y! B6 Z) @2 }1 t) D: W
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();0 I0 K# J% A" }
Iterator iterator = grid.getIteratorAt(x, y);2 J0 ^+ I, a o# k T3 s
SexAgent ag1 = null;
: b( \- Q/ G2 B* X8 E9 z SexAgent [] potenAgent = new SexAgent[20];6 B& Y, P$ _# w1 u
int goodNumber = 0;* }( a2 W7 \' T; u9 O: X- ^( K
while(iterator.hasNext()){
' C6 k6 L& @0 v5 D System.out.println("XXXXXXXXXXXXXXXXXXXXX");5 c# x- s! e" n! W2 |
ag1 = (SexAgent)iterator.next();1 r0 T; v6 y0 D( _ u
if((ag1.sex == FEMALE)
9 ^: x4 ~4 a" C5 \* J2 K &&(!ag1.isCoupled())){
; z3 b. ^5 g; M+ h. T$ Q System.out.println("YYYYYYYYYYYYYYYYYYYY");% |$ M' [5 O' T
potenAgent[goodNumber] = ag1;
( q J( O4 _* ?8 Z6 Q5 \7 o goodNumber ++;/ m- h9 d) D- T" F' ^; U
}% q# [3 p2 m) r# W
}4 u7 Q# q5 d% p+ K g7 M ~
( s2 o7 A6 y6 i, e/ K$ E
if(goodNumber >0){: ? }1 p7 V1 R: \
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
) e+ ?( f: c. I9 G! q Random rd1 = new Random();; I' Q- \1 T8 h# y
int select = rd1.nextInt(goodNumber);
- k: \* J( a4 \& H6 W: S potentialParterner = potenAgent[select];" g8 C- W, H' w. o# ~
value = true;
& y$ _ f$ V: q7 I- r }
. L$ G# l) H8 H, ~- O return value;0 F: Z( y2 ]% p( R
}/ i3 O3 A" d; |3 X+ s
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|