|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。+ e# T5 G/ W; E5 M, u4 i8 ~
private boolean findPotentialPartner(){
4 s$ D0 w o7 ?, `( I0 U2 {0 L0 I boolean value = false;
& T# J- [( x3 ~' {- E8 T4 i) Q
7 a5 L2 Q( P. \" D/ @& |: g4 _ OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
4 L( ?4 Z+ S" L y Iterator iterator = grid.getIteratorAt(x, y);
4 h, Y T6 c% S" g7 x SexAgent ag1 = null;
0 \6 d8 m, Q% i2 f* |/ k SexAgent [] potenAgent = new SexAgent[20];
8 q. a6 c1 F5 `' i int goodNumber = 0;, Q: g$ u& c, L R
while(iterator.hasNext()){( x2 b( S* w/ `. X2 U8 @+ G! t
System.out.println("XXXXXXXXXXXXXXXXXXXXX");" `! @$ F* Z/ N
ag1 = (SexAgent)iterator.next();6 V8 G5 E6 \, F! t- x
if((ag1.sex == FEMALE) * H, t+ x5 J% `( V
&&(!ag1.isCoupled())){$ T% u+ }- B. b2 B B; `+ l
System.out.println("YYYYYYYYYYYYYYYYYYYY");( l9 w9 }9 k4 M. I0 V5 o: e
potenAgent[goodNumber] = ag1;
" I' \1 ?0 p3 _, ]& R. R$ Y8 i* Z goodNumber ++;; \$ G6 s" {+ ?2 f# d: l
}4 {& W- w, g3 V1 S
}
& ~5 d8 s8 A1 d6 |% P ' {# Y ~* y i
if(goodNumber >0){
5 {8 t, ~; e4 m! K! r System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 4 Z7 a K7 w" z e7 ]* u
Random rd1 = new Random();
7 Q1 g. d1 b) i- c/ ^, B int select = rd1.nextInt(goodNumber);& W* [3 r- W( X
potentialParterner = potenAgent[select];9 I) W w8 j# B/ g3 Y
value = true;
" q4 u2 R8 R: X3 Y& d; K }" [$ R/ `! L* u
return value;
, T) K% b- i8 O/ k }/ I; l/ q. C C$ A' n
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|