|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。- L) H9 H* C/ P0 h3 p
private boolean findPotentialPartner(){
. ]! B. G. @1 q( i boolean value = false;
5 r7 y+ y4 ]; E
. X& p. N% b7 _; w: p, z. N OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
( K( g, q6 \* R Iterator iterator = grid.getIteratorAt(x, y);/ G) m5 A" r3 F/ G2 `! a I- [
SexAgent ag1 = null; 9 o W5 I4 l5 v7 h1 e
SexAgent [] potenAgent = new SexAgent[20];
5 x8 ?4 h! l& | int goodNumber = 0;
5 k1 M% e& |. v0 z while(iterator.hasNext()){
7 T9 W& v1 T, T5 g) R, S/ v System.out.println("XXXXXXXXXXXXXXXXXXXXX");4 [( Y) o, O& ~
ag1 = (SexAgent)iterator.next();
7 E# p: E/ S+ c, t if((ag1.sex == FEMALE) 1 K/ R- Z4 z9 y3 V
&&(!ag1.isCoupled())){; e b# t: m0 s6 U$ G
System.out.println("YYYYYYYYYYYYYYYYYYYY");1 n9 E/ f6 l' K8 |; d. t1 \
potenAgent[goodNumber] = ag1;
: V5 H. q* w" x( y- N" t goodNumber ++;- |# G( a0 }. R6 z3 D$ \* d
}! F+ ^$ M2 w Q0 W
}; Q. Z7 z7 b. I# D% z, u: I1 X0 H
# I2 ^, K0 p0 B if(goodNumber >0){
5 K; ?7 P5 f( F* v System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 3 u; F- A8 X) M( \3 F
Random rd1 = new Random();8 Z' u( M1 d, s* m
int select = rd1.nextInt(goodNumber);, T+ F0 s* p) k5 o) `$ @
potentialParterner = potenAgent[select];: D+ h: [8 z9 o5 y R# x' Q
value = true;
( E1 B% h$ |+ Y8 N9 l }
- p% ]( I6 l7 y9 y3 `6 a) Q) i. b/ a return value;
; u8 K; m S7 o) R }
; ] _1 ]1 E0 z% p- D始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|