|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。& X! i- a/ E: f& `( O: _+ C
private boolean findPotentialPartner(){/ u. @1 z( A3 l" t) |6 A
boolean value = false;3 F0 \) } w0 f, ?
5 W7 X1 n& k& j
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
' z9 q( h% a. C' f( o [; E Iterator iterator = grid.getIteratorAt(x, y);: _7 q% `4 w+ n- b Y$ D" q
SexAgent ag1 = null; 4 o$ \: ~( g$ P n# e& {& A! V
SexAgent [] potenAgent = new SexAgent[20];# t2 U7 {5 @- ~" b# S
int goodNumber = 0;
* P8 i) u) u9 P" L5 f; ? while(iterator.hasNext()){/ b+ b5 a4 O- {/ L3 P
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
0 m7 @0 u$ [; }7 n2 ^: g* T ag1 = (SexAgent)iterator.next();* T* P! D* _9 X7 t
if((ag1.sex == FEMALE) 8 M1 `+ b$ a* S% q( Z `0 B7 \
&&(!ag1.isCoupled())){
4 u6 d9 A8 `6 b1 z/ Z& e System.out.println("YYYYYYYYYYYYYYYYYYYY");5 G, j: D- d6 X+ A$ ^/ r4 |
potenAgent[goodNumber] = ag1;+ `. v4 i9 n2 h9 m6 n7 {
goodNumber ++;* a' B% y7 J* }+ g+ p% H; y
}
' |1 U+ }3 w; }( L }
' K0 S$ O$ i9 i- c1 d( k; i " F; h9 U9 y7 h b; _/ z0 S
if(goodNumber >0){6 S, `3 ~( n1 X" `$ ?
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
5 t0 t( C0 c) O. G: f Random rd1 = new Random();
4 H! i! C) F9 E$ h1 U int select = rd1.nextInt(goodNumber);. D$ }% D8 `8 B4 z/ o1 Q0 k7 B, ]& G6 I
potentialParterner = potenAgent[select];: I' A( u4 u9 Z! {) m* z* d5 s
value = true;4 n, t* V0 @2 A0 o( V3 b( i) m
}% }7 s3 j2 \) R* u
return value;8 |8 L5 t+ B* r3 o/ N2 W2 i6 r$ n! S! y
}
* ]' P/ l7 F$ P: S& L始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|