|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。$ t, z9 @6 c* w; h
private boolean findPotentialPartner(){
, ^5 ~, u4 C' t$ V4 N' `8 [( { boolean value = false;+ x. B4 [/ _0 y/ B' R
1 u$ p0 q. {. Z
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();9 v2 h! r( U! k; G+ o2 H2 ~' y
Iterator iterator = grid.getIteratorAt(x, y);9 V5 C1 V M" k+ S
SexAgent ag1 = null;
# [$ F- w: ]4 d5 f+ S3 Y" s- I SexAgent [] potenAgent = new SexAgent[20];. K) t x1 K! n$ q% J+ n, m2 a/ o5 R/ L
int goodNumber = 0;8 H) O; m, b' z% y. g1 I. k
while(iterator.hasNext()){
( n! l& ~) K$ T7 A+ N System.out.println("XXXXXXXXXXXXXXXXXXXXX");
( s0 l7 n7 e w1 Z9 w$ H! k ag1 = (SexAgent)iterator.next();3 G0 J) O7 w& Z p1 d; J4 f: l( P
if((ag1.sex == FEMALE) ) A- J& A; ~2 e" m: @' W; c5 o
&&(!ag1.isCoupled())){3 s q! j' a5 n( R1 q. b& L
System.out.println("YYYYYYYYYYYYYYYYYYYY");2 G; J: Z; H# X7 |; `
potenAgent[goodNumber] = ag1;# s2 q6 e0 N! p, ~3 p
goodNumber ++;
+ k! S) i% x. f8 N }% l9 ]$ u) y8 W% x' X i+ X: z
}
9 I) D4 }; m, y& Z2 [5 d ( J1 e5 P) U, a: H6 b
if(goodNumber >0){
( B; }/ m w& T# u9 I( l& h2 ^$ ` System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
' z8 |7 {+ p) ?; B" \* J Random rd1 = new Random();, d3 ^ @, \2 L G$ z
int select = rd1.nextInt(goodNumber); \7 U/ L& I( h% w! D' Z9 u! ]
potentialParterner = potenAgent[select];
: L5 m- M8 x8 l! a value = true;' I/ M+ `8 Q( Q9 f
}
# Q: d) C4 P) z) ]0 } return value;
4 l N8 l$ I1 D }; E, y- G1 b6 \# g0 Y
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|