|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。/ W. Y9 E) K6 i
private boolean findPotentialPartner(){
. C: g. g, z# L boolean value = false;$ E, d1 o/ _3 `3 d( ^/ }
+ T& B# z$ `# n
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
3 R& |! q0 h' A2 i( O Iterator iterator = grid.getIteratorAt(x, y);3 \8 q7 h# }" @. {9 j
SexAgent ag1 = null; ; ~7 T% S& {4 G! m( u$ P
SexAgent [] potenAgent = new SexAgent[20];
( C0 t! b) y" S- V int goodNumber = 0;) [- K8 \ U5 }5 Z+ b* B
while(iterator.hasNext()){1 z: t: z6 P0 d. c! G: Y1 U+ `5 O
System.out.println("XXXXXXXXXXXXXXXXXXXXX");0 J' A6 D0 K" y" @7 ]. `
ag1 = (SexAgent)iterator.next();! u* p$ {2 p, C; W. Y0 o
if((ag1.sex == FEMALE)
4 P/ Y" S2 ^& ~ &&(!ag1.isCoupled())){
- C$ f, @6 |% r; |5 A System.out.println("YYYYYYYYYYYYYYYYYYYY");+ E2 Z+ S( h' F' b! w
potenAgent[goodNumber] = ag1;: `" C9 O! ]' A
goodNumber ++;
. F3 n' X# b/ p, K% T7 X. v }/ \/ D* `: y: Z
}, c2 w" X# D c5 Y2 W3 d; k2 j: G
0 s5 K- S/ q& ]; T: q# `3 G: U
if(goodNumber >0){
# s+ ?* _( E& ]5 a+ S System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
+ z) Q2 {1 s( n c; O" m; V0 m Random rd1 = new Random();
4 Z" E/ p, W) C- c1 G int select = rd1.nextInt(goodNumber);
( A% E# ?& u3 A& g potentialParterner = potenAgent[select];
9 b- H5 j* [9 c* \( t value = true;$ r2 J* L4 p. g, }+ K9 w# p6 e8 N
}2 L: x; ]% F6 i% F3 h. x
return value;# M+ x9 F0 Y+ S/ s
}
2 V' I' y( m$ J/ Z. q& O始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|