|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。. ]+ {5 F' F+ W$ q6 v! C! d
private boolean findPotentialPartner(){: F/ ?/ A5 _# W0 g" P( p; |
boolean value = false;: b9 ]3 M6 K/ `4 s0 c) U4 q; {
5 {: H2 ]/ M: _) a3 h& O6 E
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
# d. {3 V5 i+ E1 C' f Iterator iterator = grid.getIteratorAt(x, y);' h* C/ f" e8 D7 K
SexAgent ag1 = null;
' q+ v2 ` K7 C) b SexAgent [] potenAgent = new SexAgent[20];
) h* r* I3 y0 v- Q. B2 ]: v int goodNumber = 0;: q, K, r; O8 a9 @" E
while(iterator.hasNext()){7 V/ r0 X5 ^8 b0 C b' z% E! T
System.out.println("XXXXXXXXXXXXXXXXXXXXX");! C. e1 i4 S) Q0 s) ?: A
ag1 = (SexAgent)iterator.next();2 u% x+ m4 v" z7 o7 i! g0 q+ F
if((ag1.sex == FEMALE) 7 e: ~# k% [3 C8 p3 ~
&&(!ag1.isCoupled())){' b7 S/ f8 a/ F9 w3 a
System.out.println("YYYYYYYYYYYYYYYYYYYY");
, c; R. Q, n$ B+ M/ x potenAgent[goodNumber] = ag1;
3 ~: T* Q/ |* L4 |1 Z! {5 x goodNumber ++;7 F/ P c5 x2 L
}
7 ]: D9 ^1 P; d9 B0 a9 k, T }
; k- ?( W" M: A! L# Q
. ^- Z& U3 u( t# D$ b if(goodNumber >0){2 c' k- w. d8 v! e! G4 T* I
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
# l: V3 f; K' O* ^/ \# { [% Z6 P7 Y Random rd1 = new Random();& F* L& B( d' w% E4 ^
int select = rd1.nextInt(goodNumber);
2 f; V) ]1 s2 y7 J3 [$ Y potentialParterner = potenAgent[select];- i& r; A4 ^2 y( M& m4 I2 Y
value = true;4 `& s3 M' l- N
}- E$ n' p3 x7 G8 S0 Q6 G/ {
return value;
1 A) {2 A& J4 }1 E }6 Q( m9 v, i2 S* L0 a
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|