|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
* k! l$ y' `" T& t, e6 n private boolean findPotentialPartner(){
* }. E4 O4 B1 b boolean value = false;6 W u5 Z3 H6 V, `* J
( e. J0 y. q) r6 m7 @
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();( a. y% Q5 M# I, H3 B
Iterator iterator = grid.getIteratorAt(x, y);) b. ~, a, t7 x- r$ }9 G
SexAgent ag1 = null; 0 _! v; f G' P1 Y8 [3 V' f) {
SexAgent [] potenAgent = new SexAgent[20];( ]0 }, y1 M, O$ C
int goodNumber = 0;$ y; W# t% ~, I9 W. u+ R' y
while(iterator.hasNext()){
+ x) M! B' K3 Q) c% ^ System.out.println("XXXXXXXXXXXXXXXXXXXXX");
! W* o7 P8 ^5 R. V4 u8 O: m8 x ag1 = (SexAgent)iterator.next();7 T2 q: n0 ~4 j" i0 \0 L/ M7 |# t
if((ag1.sex == FEMALE)
5 a q. M7 i# r% c* q8 H( X! n! @( F# L &&(!ag1.isCoupled())){
9 F& _% {7 d1 Z* u5 f System.out.println("YYYYYYYYYYYYYYYYYYYY");. f% Y! J; I2 [3 ]7 b
potenAgent[goodNumber] = ag1;, R2 L q/ x9 `" [
goodNumber ++;
! J7 z6 W5 \% \5 k; f6 }/ q$ \; x1 U }
" t9 q) n, G" A7 s0 { }' b2 r. s x, ^) ~+ ]7 s8 ~
, N- K# F3 J N a: k; P
if(goodNumber >0){
: C P9 B9 }, ~' I( P System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
' j1 R, y9 D, k; N& J) B Random rd1 = new Random();4 }5 `, h' ]7 V6 W
int select = rd1.nextInt(goodNumber);7 d' H9 ]: u% U3 [7 H
potentialParterner = potenAgent[select];1 v% ]% K# y7 B4 o+ Y, q1 ]5 ^. `
value = true;6 b5 W3 r4 _; {( J
}* M0 |2 G) t& }9 N
return value;
7 n, k3 s1 u m* T }
K1 n4 |2 M; l始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|