|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。6 {0 O4 Y4 \. F9 C. W) F7 _
private boolean findPotentialPartner(){2 d" r( k, Z& Y& ?& {3 z2 k
boolean value = false;
* H! K( l9 g, e
8 |# P* l* U) y OrderedMulti2DGrid grid = space.getCurrentAgentSpace();( X5 o' {; Z, B$ }5 P( Q
Iterator iterator = grid.getIteratorAt(x, y);
. Q% Y& Z$ \ N6 O8 @+ T. G SexAgent ag1 = null;
C( d2 r% N* u$ } SexAgent [] potenAgent = new SexAgent[20];
' Y T( }5 m. n/ _/ n6 ]2 L int goodNumber = 0;2 c( g; k H) x( l
while(iterator.hasNext()){
3 N$ ^) k% \$ W( x" I/ [: M System.out.println("XXXXXXXXXXXXXXXXXXXXX");! t" q' [8 F- q6 t5 ]+ I
ag1 = (SexAgent)iterator.next();
1 q7 p* M- F; w* R# }" E5 [ if((ag1.sex == FEMALE)
% O5 {7 ~3 @( {. C$ y8 y# ?$ M" K &&(!ag1.isCoupled())){) K, i1 q `" ]! o/ G
System.out.println("YYYYYYYYYYYYYYYYYYYY");
& o9 V% s( j( X W" e! i# G" l potenAgent[goodNumber] = ag1;
4 `0 M/ j- e, E- ]) J) Z8 \ goodNumber ++;% K/ B) U1 f6 I; A8 _) s) l+ L% \0 X
}! A4 w1 _ v1 K4 x$ X
}0 j5 ~% M2 p, ?, q0 C0 F/ e7 L
# f8 Z* ~+ ]2 M# b if(goodNumber >0){
: e+ _4 v) Q1 X9 m8 N: j System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 8 Q5 {3 u4 |8 z, M' O+ a
Random rd1 = new Random();
+ E# a/ I7 o' q2 P int select = rd1.nextInt(goodNumber); F0 Y% X5 d( R5 x$ v8 r
potentialParterner = potenAgent[select];
4 Q! @) K6 Q$ ~4 P) z value = true;
0 P1 n* Y$ ^' U: |- ? }9 h U" z, U) ?2 k' W1 C9 m% |9 V
return value;
1 K7 T2 T( B) `0 p( O7 q/ r, [" l* @1 ~ }$ E- J9 U4 ` @6 O E
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|