|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
; Y- ?- X. C" Q2 k, w* {+ c private boolean findPotentialPartner(){; j4 b& m( x1 y+ b
boolean value = false;+ }9 e0 H" G/ y! d' _+ T5 ?
% Q& r8 i e. z0 K5 f OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
( W7 G% W' _7 U* E Iterator iterator = grid.getIteratorAt(x, y);2 }* y' Z6 ]/ i: X2 x! @
SexAgent ag1 = null; 2 O( F: f$ B) H+ A$ R
SexAgent [] potenAgent = new SexAgent[20];3 R; I/ U L, J: w: [7 |5 a
int goodNumber = 0;! e B! v! n$ o
while(iterator.hasNext()){
4 w5 D/ ?0 R Y System.out.println("XXXXXXXXXXXXXXXXXXXXX");; o- W. J* C3 }: Q3 r) C! S8 s
ag1 = (SexAgent)iterator.next();
; t9 E- B" o$ [0 b4 v if((ag1.sex == FEMALE) 2 s0 F8 ]. S: }' W$ T6 |0 ^& [4 M
&&(!ag1.isCoupled())){
; A S3 R' J3 g: T9 V1 [: A System.out.println("YYYYYYYYYYYYYYYYYYYY");. X: Y1 N6 x- D# l4 h/ m$ ^8 Z( B2 a! e
potenAgent[goodNumber] = ag1;. y6 T; g# E* X6 t! X
goodNumber ++;) y% R; k# c% }0 h/ z4 ^! R) I
}5 g" u3 V) b% b: z$ Z
}
8 t) U F4 t$ v" n7 B5 l . c2 y( G0 H4 f) L( j
if(goodNumber >0){
[( c% {6 _; B- ~' o System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
: k* N+ O$ i; V7 G+ }* W) x8 f Random rd1 = new Random();
' S" b! _) C8 f1 v7 P" u int select = rd1.nextInt(goodNumber); F* z' w) a1 S& Y" O* ^; [
potentialParterner = potenAgent[select];8 [" W' K( J- ]
value = true;1 P5 f5 _" o. N+ Y: c4 N, x
}
* H" b" V2 v% W6 A return value;
2 a* w# t. t1 a" S7 G3 S* X }, j# H; i8 K' a, T) N/ ^
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|