|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
1 {0 w" f$ P) f/ C private boolean findPotentialPartner(){( a/ @; U; a/ u( Y- d& k8 r6 D
boolean value = false;4 D% m1 v1 U# [3 }. c( ]3 M, x
1 y/ M. n7 x- p3 v( ]- j OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
( r2 F' d7 O8 F7 G+ A5 M R Iterator iterator = grid.getIteratorAt(x, y);5 a: h1 k) N Q! Q0 }! d- J
SexAgent ag1 = null;
$ a1 f9 {& G" M. r& r SexAgent [] potenAgent = new SexAgent[20];; W, Q7 T/ N" B: u
int goodNumber = 0;# K! j2 G. y% e7 L' Z2 ?
while(iterator.hasNext()){6 }' P) u! y' v" ~2 H9 ~
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
4 z+ V0 A' I$ V; ?* ^0 L+ @9 X ag1 = (SexAgent)iterator.next();6 o+ m- L) L0 a1 ]; |
if((ag1.sex == FEMALE) - a! ], c7 Q1 E% \) x# C
&&(!ag1.isCoupled())){3 I/ ^" [+ \2 U" C
System.out.println("YYYYYYYYYYYYYYYYYYYY");
- c) ^5 g! I/ s5 A& y potenAgent[goodNumber] = ag1;* }* \: a! {6 ^; {8 M
goodNumber ++;7 ~5 S! x2 g0 |8 Y/ _
}
4 v, _- ~" B* H( g }
4 l/ q& T! A8 N4 J 6 b" J% A6 a6 H" a& i; L
if(goodNumber >0){
4 F8 ?$ i9 F9 i3 y# B System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
6 Y4 I) T7 m. c( f; f* | Random rd1 = new Random();( w) B; {6 A2 D" e* b0 Y; G5 q
int select = rd1.nextInt(goodNumber);
2 r- t& O* S# ~! @" I2 G. l4 p potentialParterner = potenAgent[select];! d! E: U& _# `5 J3 R- e
value = true;. R' K/ w3 M) A
}, R7 S' D/ U) C0 v! D% V% r
return value;4 ^$ P9 R1 o3 M6 {: G! w/ i
}
3 X% m! e( c9 l/ o8 L! ^始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|