|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
# }5 o, Q( H" A private boolean findPotentialPartner(){. x6 \7 x; W0 @, O' A% O
boolean value = false;
' r; ~! o; f) S0 }# n0 b2 a
# k* I, q Q8 ~% s" I OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
I" K) _0 K8 I( m' B# Y! b Iterator iterator = grid.getIteratorAt(x, y);( p$ n+ P# t7 u* L
SexAgent ag1 = null; 0 R/ r3 L/ O1 Z, i
SexAgent [] potenAgent = new SexAgent[20];6 Q+ C$ G: a6 q$ D# i2 {% [
int goodNumber = 0;' ^$ W: I; |# i( n+ ~. K
while(iterator.hasNext()){$ d' p; b. Q# V8 F; Z& p% ~8 K
System.out.println("XXXXXXXXXXXXXXXXXXXXX");/ z7 B# o! F9 `
ag1 = (SexAgent)iterator.next();
" c. g" A4 |; P6 G( F if((ag1.sex == FEMALE)
0 I; t1 b3 D8 Y& } V) O# F. e &&(!ag1.isCoupled())){
m! Y+ j# ?5 `) d3 m* o8 D System.out.println("YYYYYYYYYYYYYYYYYYYY");
! I) ?2 b, Y0 Z" Q1 T potenAgent[goodNumber] = ag1;4 @0 v6 P( u/ e0 E% k; Z
goodNumber ++;$ g; P$ C! w5 U; T* s
}# L! J0 ~+ J, m% p* J
}
5 y' ^9 c9 G" y/ N
/ a5 g# c; S9 P5 w1 s if(goodNumber >0){
9 d: A+ B$ f5 ~1 J System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); % B9 Q# m8 I( D, v3 P! U
Random rd1 = new Random();
\! e1 f! f6 u5 n int select = rd1.nextInt(goodNumber);! Y1 c1 U+ P# e
potentialParterner = potenAgent[select];2 H" ^; e! E" l& t! d9 \6 [
value = true;
# Q9 a: h# b) i* p }% P3 ]/ A0 w7 W, `4 l/ _0 x
return value;* D& x- x$ f; U1 L7 z* p
}
4 Z7 x5 o9 v$ }! S+ x- k) _始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|