|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
9 z4 ^/ i: f8 [$ s. H v. s7 b0 ~ private boolean findPotentialPartner(){
; M+ X& _1 e* V L! }' M boolean value = false;
6 a* f6 _# n; p6 t, X! G J
5 P/ q' ^' L/ v! s* W+ c OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
4 {7 V4 b( H9 L* M+ ~ Iterator iterator = grid.getIteratorAt(x, y);, F2 b8 T* n" R! E0 R1 L
SexAgent ag1 = null;
) d9 N, g2 Q+ H4 f' J6 I% A4 \" N( f, ^ SexAgent [] potenAgent = new SexAgent[20];1 o9 P1 `' Z2 |3 S* {) e
int goodNumber = 0;& ?; n4 U/ W0 h7 W
while(iterator.hasNext()){
9 h( V4 B* N& p" J6 u System.out.println("XXXXXXXXXXXXXXXXXXXXX");
0 F2 v: ]/ j S. ~- z% U9 R# o) G/ F. Q ag1 = (SexAgent)iterator.next();
/ m4 I1 r4 l. M' n if((ag1.sex == FEMALE)
# }4 T' x6 A$ S &&(!ag1.isCoupled())){
# v0 u9 s, b" M$ M' } System.out.println("YYYYYYYYYYYYYYYYYYYY");, Y6 S, z9 o3 w; E
potenAgent[goodNumber] = ag1;
! i' z9 V- H. C. v' J. v3 I# s goodNumber ++;
; ]5 h B! \6 H1 ` }( C' e2 [1 ^* n; h$ L
}
, _2 ^/ K+ M+ z& B: }
; `) n+ n3 N; x f+ ?4 s* V3 ^ if(goodNumber >0){
. w! |0 K$ k# ?- X! H B+ A1 a& h5 }! a& x System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
" V/ f1 _$ O+ c. e, u Random rd1 = new Random();
5 Q5 ^3 i: r3 u; t, @9 f int select = rd1.nextInt(goodNumber);
& G }- q* B. E# N. I potentialParterner = potenAgent[select];5 g+ o% W% y, M) O6 |$ p$ S+ D3 k) E$ V
value = true;1 Z+ @' z$ K6 z. d8 y2 [
}, f! v0 X% V g9 N0 x
return value;! r' Z5 m) {+ Y
}* M. g5 i( Z2 r
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|