|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。( Q( P( l P; \* W) X
private boolean findPotentialPartner(){% [6 L4 C/ E5 Q; b: o8 v/ w
boolean value = false;
0 T2 o3 }9 u" P' u% H- f+ c 4 f: q) E& |! g) z* J1 @% c' b
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();5 N$ T& l* e, Q2 u9 A* K0 @, G
Iterator iterator = grid.getIteratorAt(x, y);
4 I& m$ l6 k4 g: f& M" a SexAgent ag1 = null; ; W: z+ C. h1 P) d* M( v6 G. w
SexAgent [] potenAgent = new SexAgent[20];
9 \( g, y& l8 O2 |% z; e. l0 j9 H int goodNumber = 0; M7 h7 ]' t6 ]/ u R. d1 P
while(iterator.hasNext()){/ I* b1 o. n% F; C: Z
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
+ V# F) h6 v5 U, H; s4 t ag1 = (SexAgent)iterator.next();, Q3 `! _6 P( j
if((ag1.sex == FEMALE)
# L1 V2 }4 v+ C" {3 k* D+ v &&(!ag1.isCoupled())){, p- a$ a5 j; @* j
System.out.println("YYYYYYYYYYYYYYYYYYYY");
3 {8 G- }- |7 S d( Q! \9 M potenAgent[goodNumber] = ag1;
. Z3 ?( { [& K- |5 S goodNumber ++;- k9 c' b, f0 G$ K3 i1 `; V
}, Q2 h9 d$ l5 g2 `' l4 {' a4 J
}
1 \( g" b) M: m: H 5 V8 A* u5 s3 \/ b, m
if(goodNumber >0){* T$ ^/ J. D5 O+ f) m+ Y. T) V
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
( N1 o( P: V) u: }' ~$ M Random rd1 = new Random();
( V4 D n5 r! [$ M5 t1 @" S4 f int select = rd1.nextInt(goodNumber);
`2 o) {8 ~ B, ]) f U9 m potentialParterner = potenAgent[select];
& {; G4 T4 v7 _7 z value = true;8 P0 O) d3 j0 n6 G( w9 I
}
% \% w0 F# v5 Y5 W return value;
6 f! w. ^5 r; N! v! C) p7 c }% w0 E" |# Q- j9 h' A- A1 ]3 H' N
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|