|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
; V4 e6 h0 ~6 O) p private boolean findPotentialPartner(){: V: g+ f s, T- U# C4 i2 H- J
boolean value = false;" s" a5 a8 T$ U. K0 X
! J) ^% ^# j) D6 P# U OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
) J: V! T5 Y7 d4 U* Q Iterator iterator = grid.getIteratorAt(x, y);
5 h1 @% X9 b4 ], P1 o SexAgent ag1 = null; 9 P5 t8 u; z3 N0 O% k! O
SexAgent [] potenAgent = new SexAgent[20];# G5 t# F6 O6 {/ z# b2 s( x
int goodNumber = 0;. d& }* a$ z! z& |8 z
while(iterator.hasNext()){4 S; e* T: Z! T/ F( O. R
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
. M+ Z6 x' o+ _/ i1 ], k+ Q: B ag1 = (SexAgent)iterator.next();
c/ f% L, _/ K9 T if((ag1.sex == FEMALE)
. S7 {6 h2 O. `9 b &&(!ag1.isCoupled())){4 X: O7 u% d# x3 w0 z. Z! g
System.out.println("YYYYYYYYYYYYYYYYYYYY");. b" \. m5 u2 i, m& Y# N
potenAgent[goodNumber] = ag1;
7 x% E7 @9 z; X goodNumber ++;
* b$ J: b' H, Y4 ~ }
2 N7 m1 Q' d7 p; n6 O0 t }
& h% W$ M( t6 d9 }5 Z
! t) u ]" m) N. x b if(goodNumber >0){) c2 J9 K" n% r N0 j, ` r+ s
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
; F% P" L: B- f Random rd1 = new Random();# |! |/ I* _/ p! P
int select = rd1.nextInt(goodNumber);5 p* }& y4 h) @( v
potentialParterner = potenAgent[select];
5 h/ I) U& o; s value = true;' z- Z O# i q$ j0 P8 c+ G
}
9 s" y+ C4 S/ E+ S return value;% ~( f2 j7 ]/ p% O: m! y0 ^
}
{* D5 D1 l- Z始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|