|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。2 |7 p. S) ? `! N/ L. t$ x$ t
private boolean findPotentialPartner(){ ~ L* X+ Z7 o: H; M) O% M
boolean value = false;
& ~7 i+ ^/ L- ]) l1 W; p2 Q ^) W
! N0 }2 s6 k# t0 W OrderedMulti2DGrid grid = space.getCurrentAgentSpace();1 E P6 ^& y! W7 e8 r
Iterator iterator = grid.getIteratorAt(x, y);
. f- x2 t- f7 r% R% W: u2 M SexAgent ag1 = null;
' v9 L; q6 ~% V) k9 L i$ p- p SexAgent [] potenAgent = new SexAgent[20];/ i! A N' Z5 v0 t9 D
int goodNumber = 0;
+ r, Y3 h; t4 C ^- h& U3 r& Q6 v! ] while(iterator.hasNext()){
/ T8 W6 X& y' M1 P5 a# d System.out.println("XXXXXXXXXXXXXXXXXXXXX");
; t) Y' f1 \7 \7 P; Z, @ ag1 = (SexAgent)iterator.next();
5 k1 z( R6 y8 \# b6 c if((ag1.sex == FEMALE)
7 e* `% R! B6 e \# q5 Q1 c &&(!ag1.isCoupled())){
2 X) {5 L: K8 ]; k9 X7 W; j; L System.out.println("YYYYYYYYYYYYYYYYYYYY");7 z6 k+ R$ f! D
potenAgent[goodNumber] = ag1;
+ \! o# C% ]7 Q& o: q$ ` goodNumber ++;$ K1 {1 u! Z% s: ~& p+ i
}
: L) G, e+ H6 s1 g4 b' R* w }" v2 v- N/ h+ d, H. @
) G5 D% [; H, D$ u8 n# q if(goodNumber >0){
6 `7 E' s1 p: a6 I2 R4 d System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); , l# L* o r& b B' T
Random rd1 = new Random();
0 n3 z! G7 i+ m P int select = rd1.nextInt(goodNumber);
3 m$ A+ I- X* }; B e, ^+ D& g" g potentialParterner = potenAgent[select];9 [/ w4 z- m+ \5 I
value = true;
" ]* o: G* L: c Z }' q9 H/ m7 P0 J, _. p' F' Y, }
return value;
: o) g: [; V# f% ? }
# U% \8 Q3 R3 s6 R) q( n% b" z始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|