|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
( y8 p# g& @8 ^6 l1 y4 m" S* u private boolean findPotentialPartner(){( d6 J5 B5 H7 ?) }# w
boolean value = false;
5 | J4 n) U: B! I& L 5 _# y [ m* Y- {6 h8 o
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
8 s" i! f$ y0 t% D& s& W( i( t* w Iterator iterator = grid.getIteratorAt(x, y);
+ v Q: y9 g: W& x) e SexAgent ag1 = null; 3 Y+ x" n' t5 J$ z% j
SexAgent [] potenAgent = new SexAgent[20];6 M" v& v1 W) q
int goodNumber = 0;
J. d& K l4 s" ~% R. u while(iterator.hasNext()){
5 P( H: ?0 z0 ?) }( U# V5 w System.out.println("XXXXXXXXXXXXXXXXXXXXX");* Z; E' u! x. r ~
ag1 = (SexAgent)iterator.next();, G9 M; v2 [ b( C7 w! c/ y; S/ ]+ w/ D9 g: D
if((ag1.sex == FEMALE) $ `) a$ U/ |* D5 H( }: x6 v8 u
&&(!ag1.isCoupled())){9 f( W/ S+ i2 O
System.out.println("YYYYYYYYYYYYYYYYYYYY");
: Q- x6 m0 T% x: B potenAgent[goodNumber] = ag1;% B6 I) u, S. y2 {7 ^ j
goodNumber ++;+ Z k0 ^5 d4 A
}
v2 h) g( @* u$ U- {+ p }- N* b# L- O5 l* y2 b
% e- x4 D% W! e2 `6 a3 \- ^
if(goodNumber >0){
# R7 N+ l; Q. K$ A# @ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 7 o; l7 N* R6 \- C. B/ X
Random rd1 = new Random();9 \' d$ V( P' n5 D5 g1 \
int select = rd1.nextInt(goodNumber);
6 |% p9 d( R3 O M9 q potentialParterner = potenAgent[select];7 k6 l2 t7 h; ]" E: D: P
value = true;
. L h$ X5 x6 R9 q! v }
7 c$ D! k: j" Z2 y return value;
# V5 J6 L2 t# t }4 A" c( ~4 ~' i9 y2 n
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|