|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
; d! m$ q& ?3 T( V: n" L( t private boolean findPotentialPartner(){
) y: ^" h7 P) k8 _7 ^* K; q9 r boolean value = false;# \ q& H2 n1 \: i, p. Q
" C8 {% u. B2 X8 l- e7 a% v7 b OrderedMulti2DGrid grid = space.getCurrentAgentSpace();" a# v3 o, c5 B* {
Iterator iterator = grid.getIteratorAt(x, y);
" T* ]) v8 E+ W) c% h SexAgent ag1 = null;
9 a# n0 k0 _. u SexAgent [] potenAgent = new SexAgent[20];
4 V. {' Y9 a: H1 \' v int goodNumber = 0;; h1 h- M- ?6 Z1 \: g
while(iterator.hasNext()){7 b# m, M8 |% O- g3 q) U! N5 h" q
System.out.println("XXXXXXXXXXXXXXXXXXXXX");: C" g$ [* v7 v4 C: F
ag1 = (SexAgent)iterator.next();
- f+ c9 B- ~' g if((ag1.sex == FEMALE) ' M0 a! `% [- B- x: x. v
&&(!ag1.isCoupled())){ j: v) \. G8 M; \( |5 o
System.out.println("YYYYYYYYYYYYYYYYYYYY");
$ C8 Y9 o0 u, c1 k, v potenAgent[goodNumber] = ag1;3 p! ]- U" M- I# w& O
goodNumber ++;
m5 q1 n4 r- k }5 Q: j+ ]* y! ^+ t
}
! g, D/ J+ q' b: u, x
$ r& j2 A, [7 P, ]+ N, `# e; P/ Q3 J* t if(goodNumber >0){; J4 } J. W; c; @: H E' d+ D
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
# ~5 e( k( T4 Y5 q9 V2 p7 b2 ~$ ]* b Random rd1 = new Random();& R2 ^* e- @: Q
int select = rd1.nextInt(goodNumber);
J( p. @8 y2 F, T potentialParterner = potenAgent[select];
. ], g A7 G |# x3 c) w4 ?( N8 e value = true;% \) g6 A8 O3 e: _6 d
}& P* H+ ?1 T- O$ T$ |5 u% k
return value;0 C7 N, l N% I& w5 R% [3 j
}
; S: a6 ~0 v# @, t6 t始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|