|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
- a5 q w* a/ [) A+ c private boolean findPotentialPartner(){. T7 L8 G7 e f# U+ u
boolean value = false;$ `' u1 Q! d2 F. w8 ]2 r
: m* T* B6 }3 n/ C7 ]+ m
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
9 S! _. j2 ^+ `% w$ Z" n! X% S, m Iterator iterator = grid.getIteratorAt(x, y);
$ w$ s8 S5 P- Z4 w+ t SexAgent ag1 = null; & p( b3 V" d9 d8 }
SexAgent [] potenAgent = new SexAgent[20];- T4 N* f/ G+ m0 l/ Z
int goodNumber = 0;
% v$ J) D; x: E4 n+ G2 Y, D0 W8 [. J while(iterator.hasNext()){+ y1 {( F' S' c+ v
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
- a! o8 u( y# L& e9 {9 j7 g ag1 = (SexAgent)iterator.next();
( v' |" M2 M' ]; d if((ag1.sex == FEMALE)
3 ?9 @ T" B; l2 r O6 ]8 k) J* V &&(!ag1.isCoupled())){! A# l: D1 v; K3 S6 A9 |( S( e" E
System.out.println("YYYYYYYYYYYYYYYYYYYY");) C# y- k8 P$ S' H/ \
potenAgent[goodNumber] = ag1;
4 i2 k% w0 P# F6 u# ?% H+ T goodNumber ++;8 n& n" [( K2 T' `9 R- r ^/ G3 G, ~
}
4 S6 q" b0 N) o1 q }4 W, ~9 Q" [4 L3 k
* I$ ]6 ~8 b" O$ V7 P
if(goodNumber >0){, ~ a: ~8 A: U4 @8 q
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); % u4 |4 B1 s; q: A/ G, K& G! _7 A
Random rd1 = new Random();( U) C. _. P' \+ ]; h) f
int select = rd1.nextInt(goodNumber);, Y3 {7 t4 Y& L \- r* X
potentialParterner = potenAgent[select];
` L0 j: k( L. w, P& Q0 ^8 s value = true;
2 v$ k& N" D6 A }& w! g- y( ?8 V6 d4 d! @
return value;6 O( _) W7 y6 J9 t* N( h, s# \
}: c! ?+ {9 w8 j. S5 l- l+ W( ^ \
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|