|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
$ E1 J/ M2 h( a' ]+ ~ private boolean findPotentialPartner(){+ ?# r! i: s" ^: k3 O
boolean value = false;
/ u& ]1 N b% ^8 Y7 s $ `& t# R) l0 W W5 |
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
% i: P$ t! g2 W Iterator iterator = grid.getIteratorAt(x, y);
4 X0 |2 W' ]( N" a6 {9 y8 t SexAgent ag1 = null; ; B# ~$ f( e" U" \& o4 Z
SexAgent [] potenAgent = new SexAgent[20];7 A! W1 ]. {$ @/ T0 Y
int goodNumber = 0;
2 K' `1 D* }, v2 ~$ k5 j a while(iterator.hasNext()){
' h5 t9 e8 C: h+ W System.out.println("XXXXXXXXXXXXXXXXXXXXX");
# c6 S, v5 H P- z ag1 = (SexAgent)iterator.next();
) D0 x/ s ?4 o# }3 D# b if((ag1.sex == FEMALE)
$ r% _3 F7 v1 e5 q( y &&(!ag1.isCoupled())){
' P! S, ]! r" A" h3 P$ a6 w System.out.println("YYYYYYYYYYYYYYYYYYYY");
' F* e4 d! B2 k. W potenAgent[goodNumber] = ag1;3 `& ^( U* m; `4 t
goodNumber ++;
0 o5 f6 Z" K1 e. d6 l0 u% A7 H6 } }4 n% \: U$ j) Z) o/ _
}
+ X' c3 v2 ?& A2 |8 r . a$ N% S# b& ~) y& q( p
if(goodNumber >0){
9 Q* {( `' }& T$ f9 o! S# d( M System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ) B4 {+ c% i0 _6 j, D5 E( T* {
Random rd1 = new Random();4 O6 J( m' B0 G4 @* v
int select = rd1.nextInt(goodNumber);
3 }, Z7 v }1 K! u5 j* p potentialParterner = potenAgent[select];# {1 S. H& @( N
value = true;
; ~9 W N0 L. o+ D- [3 \ [7 a }- F" c* X+ ?, |1 y5 k4 }. J
return value;
* U% \: c4 T$ C/ {4 @ }
q7 J* [8 d e0 E @始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|