|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
( W9 u& O; ^$ e private boolean findPotentialPartner(){( b* i4 K% h. \8 j
boolean value = false;! [/ [& m; J e4 G7 F0 w
1 p: @& J& Y# m z4 W3 i OrderedMulti2DGrid grid = space.getCurrentAgentSpace();3 ~" X" k' l2 Y; F6 G2 g9 L( @
Iterator iterator = grid.getIteratorAt(x, y); R* l- @ G: j6 O( x
SexAgent ag1 = null;
s( N8 U2 s# @7 y/ ~. I0 m ] SexAgent [] potenAgent = new SexAgent[20];0 _5 d( t1 G. X) v
int goodNumber = 0;
$ l1 c8 D0 o9 D1 `8 [ while(iterator.hasNext()){
4 i3 j6 e$ B8 n System.out.println("XXXXXXXXXXXXXXXXXXXXX");* u6 a& F* t' e( U) r
ag1 = (SexAgent)iterator.next();
: I1 D( q7 W* |2 |, L- Q+ o if((ag1.sex == FEMALE) * P5 G |1 w) b$ m) S" b
&&(!ag1.isCoupled())){
- y% }' s' u6 _, } System.out.println("YYYYYYYYYYYYYYYYYYYY");) I0 y$ R: x b% P. {5 m
potenAgent[goodNumber] = ag1;7 v$ z9 i: x2 {' F( y# ~
goodNumber ++;5 n) n! w; a& F& h5 \! c) J
}; ^ x0 ]* k7 K/ y5 l* q! z
}! K S: T% L n+ ?8 U
3 c. q; G' s3 E2 _% W
if(goodNumber >0){
6 W7 o/ i, K5 V u System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 6 `* z: x1 I* W$ \
Random rd1 = new Random();
6 C5 s/ p6 d6 e: a int select = rd1.nextInt(goodNumber);
/ h9 U. F9 }" e" n ^$ M potentialParterner = potenAgent[select];
2 l# {5 p" b: p' U& o. z+ j value = true;
6 O; X' J2 o! I/ A) R6 I }
6 |- a/ s! ]6 }. Q return value;) y& {$ r3 Q7 T& D
}
. E6 D! j' d/ ~2 g- Q9 P始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|