|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
! b, e& u+ S W% j/ E$ q private boolean findPotentialPartner(){( m4 @, U' ], I- }9 e2 I
boolean value = false;
- E$ R& X/ Q4 k, g
- a7 ]9 h& f" G2 r2 ?5 w! `$ w% H OrderedMulti2DGrid grid = space.getCurrentAgentSpace();4 E8 K1 M6 r* D5 E5 K! S
Iterator iterator = grid.getIteratorAt(x, y);
1 z, i. B. E! H- }# _5 t( ] SexAgent ag1 = null; ) B, N# |7 e6 z4 A
SexAgent [] potenAgent = new SexAgent[20];
, K' u' @. S# B7 C! R: a1 a int goodNumber = 0;' e- e2 ?9 U1 M' Z- ~+ ?
while(iterator.hasNext()){
6 F, n7 g( X5 C1 P+ D' O System.out.println("XXXXXXXXXXXXXXXXXXXXX");
' f6 }+ j3 B. U- c& o ag1 = (SexAgent)iterator.next();
0 T5 f7 s# x" y& r+ ?; k if((ag1.sex == FEMALE)
# i+ Y1 N/ x- M8 c% Q &&(!ag1.isCoupled())){+ I) X4 Q; d& B. p) ?5 v
System.out.println("YYYYYYYYYYYYYYYYYYYY");
8 n4 b/ `' q: E2 { potenAgent[goodNumber] = ag1;
5 ?3 ?9 f; V1 {& d4 r. Z( P4 Y goodNumber ++;. ?# }& \$ z" Q, n5 C: {
}1 @, p _) C4 z! H
}
4 n- A9 k3 |& M
9 W% ^, ]/ f2 Z0 f. f8 H- D if(goodNumber >0){! \1 J3 Y1 Z# V
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
7 |& Z' K: s4 B: W7 _ Random rd1 = new Random();
- g. q8 y# T! g& o$ `0 j9 ~( o int select = rd1.nextInt(goodNumber); X n& t+ L9 o7 `& Y G
potentialParterner = potenAgent[select];
1 }& G" Q/ F' w0 \/ N! I2 R value = true;
+ B9 H! I f; F+ r }
2 P; y( V7 L; p4 H( c return value;
6 S8 r. w. ^3 }6 `$ h8 B }
! G! C6 p0 N) d2 ?& |: o& o始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|