|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
/ F5 @+ [$ S* K2 W$ ?7 e0 ~+ U1 C private boolean findPotentialPartner(){* ]' X6 w7 c( [) o$ X( b
boolean value = false;+ m8 K; Q1 T8 w' X$ ~2 f3 n
, R- H, u) a* m. ?: [ a OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
) j9 N _* x* U1 q4 |: i$ ]. ` Iterator iterator = grid.getIteratorAt(x, y);( H3 v- Q9 A0 u9 i0 [
SexAgent ag1 = null;
& c X0 v9 ^/ b7 x3 D: R/ W SexAgent [] potenAgent = new SexAgent[20];* W# O6 w. {! u2 u. U
int goodNumber = 0;, H" l5 _% i+ [3 f
while(iterator.hasNext()){
6 K) t5 Q4 g& n) W* x$ F System.out.println("XXXXXXXXXXXXXXXXXXXXX");
' i2 A( R% F8 Z4 ?+ W ag1 = (SexAgent)iterator.next();
) P* f' \% M% x/ t/ s) `/ d9 ] if((ag1.sex == FEMALE)
$ i' T. b" X) B' E6 W1 a& w: c &&(!ag1.isCoupled())){8 u: U" g) M M0 i
System.out.println("YYYYYYYYYYYYYYYYYYYY");% u, ^. i; X4 u2 L8 [& N
potenAgent[goodNumber] = ag1;: W, s; d' i7 w4 y
goodNumber ++;
- X$ Y& H5 c; J" E2 ?0 U- Q0 M5 ^ }9 C1 {# H% w( j; d
}
2 _$ P1 |3 H, @ % G5 i/ d2 h) @+ i ?
if(goodNumber >0){
; q& w: _2 z! o System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); * q$ O I) m) b% }2 I% P
Random rd1 = new Random();
; E- I: S3 |% F int select = rd1.nextInt(goodNumber);
# D* I7 b+ q/ d; j3 i: g0 z: _, w potentialParterner = potenAgent[select];/ J5 R7 a; N; ?( ]6 c& K i F
value = true;. c* E; L+ s+ o3 K r
}
) [9 p. [4 E0 Z! ]& t* C) a return value;5 X& [4 r7 Q1 m6 s' A/ k K. \
}: V4 R: j' ]3 K* o
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|