|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。, k! l1 E. K$ `" o8 X) @) N
private boolean findPotentialPartner(){
2 G3 w1 U" Y* J* C8 \ boolean value = false;
: d! Z! G3 r: J* k( m. z9 F" J- Q% } 7 u# d# L% E! G+ G+ y+ D; m/ ^* O
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
. p# U- ~2 N: [* d4 g Iterator iterator = grid.getIteratorAt(x, y);
+ T0 `: s) `6 M' Z& A SexAgent ag1 = null;
" G, b& G' E4 w6 w5 O" _, h SexAgent [] potenAgent = new SexAgent[20];
+ w) d, b; f; G' m int goodNumber = 0;& `1 ]( W2 Z4 i( M3 u
while(iterator.hasNext()){
1 M* B9 v3 J' g0 k) j System.out.println("XXXXXXXXXXXXXXXXXXXXX");1 ~1 p" P {0 r$ @8 T
ag1 = (SexAgent)iterator.next();
( a2 b; F( H6 D) ~. J if((ag1.sex == FEMALE) ( r: c9 d s z0 q) I" W
&&(!ag1.isCoupled())){ W0 L. P* l( t$ x7 F5 Z# \$ M
System.out.println("YYYYYYYYYYYYYYYYYYYY");3 X- B2 Q+ T: ~* @8 v- G
potenAgent[goodNumber] = ag1;, c3 v( R6 \2 [+ Z0 a2 S
goodNumber ++;
# P8 A( }& R3 v, O, s; B p- o }
. D5 r$ F& k" a7 x( p }
0 o8 {- D4 k/ v+ w+ K; G/ H # B* ^+ x9 w+ Y4 ^- T+ Y l1 B
if(goodNumber >0){
6 ?) n8 k; v& w h System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 2 E* T$ e8 U# t# x7 v
Random rd1 = new Random();, W2 ~4 Z2 ~0 e: q
int select = rd1.nextInt(goodNumber);
. e X! a- ]! T- X potentialParterner = potenAgent[select];6 G: K% @5 M4 G' u% i; s, p. } G
value = true;
K7 g L( s5 o }; o5 _4 v( t5 F! H. A y
return value;* L8 Q; ?% U3 E5 |& b1 _3 x
}
/ g* B' B- p# ~: p始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|