|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
7 ]1 ~; U" t4 r4 S private boolean findPotentialPartner(){* o7 y: _" r2 T3 w! l" }" O
boolean value = false;
- N' m1 ?8 F$ K& ]" l' _+ L! E0 N3 G
2 E0 i- ^ a& r+ L9 _5 W3 L P) c OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
7 q& A$ E- [& i7 O4 g( v Iterator iterator = grid.getIteratorAt(x, y);# [3 W2 m. ^' `6 ?, r1 n
SexAgent ag1 = null; + e4 H; m, T# M+ a; X4 N
SexAgent [] potenAgent = new SexAgent[20];
2 L; k% ^8 R5 Q$ w) t# \ int goodNumber = 0;) c7 ]0 }* T. ^2 r) j
while(iterator.hasNext()){
H( q6 J1 m, | System.out.println("XXXXXXXXXXXXXXXXXXXXX");
+ T4 d/ r( r( H- g3 H2 | w ag1 = (SexAgent)iterator.next();; o1 \: i" h6 ?4 ~! Y
if((ag1.sex == FEMALE)
: x: F7 o/ q% f6 W &&(!ag1.isCoupled())){7 N- i9 m& A( x8 V8 E2 u$ O, p
System.out.println("YYYYYYYYYYYYYYYYYYYY");
, _( y& V+ I! C potenAgent[goodNumber] = ag1;( U! j' D Q+ c) R6 x( a+ I9 P3 _
goodNumber ++;
5 ]6 I- |3 u$ O }7 \5 G& A# w8 G% C! w- ]
}
7 U: E/ p6 H% D' l* W+ c1 G' v+ I+ e ( X. c- z4 S" o! H N; _# O
if(goodNumber >0){
j; _( O/ x% m1 {; n! A: b7 Y System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); " p9 z' g1 C2 K+ n; W7 y
Random rd1 = new Random();
0 Z7 y& V( f* x- d' W. E! }1 Q9 ~ int select = rd1.nextInt(goodNumber);
7 y: Z& H8 w: q4 j, h9 U potentialParterner = potenAgent[select];
+ w. Y, p/ L9 P; G1 M value = true;$ y. i9 x* y- F+ ~
}0 B: b) j! \& i8 o+ R- E( T
return value;1 H X' h( x% Z- [+ i( X( d
}
/ f! S* y6 T( Z3 @% V始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|