|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
+ P0 m% x$ `3 o: L2 K, D private boolean findPotentialPartner(){, g: }7 U2 P, \# J
boolean value = false;+ R, n+ x7 j+ j1 w1 [
) N* L% u4 \) m0 |' L OrderedMulti2DGrid grid = space.getCurrentAgentSpace();/ \ e& F. W. K
Iterator iterator = grid.getIteratorAt(x, y);" e+ w( p9 P# v% I$ U
SexAgent ag1 = null;
5 D/ B. s. P! B1 J- J/ \ SexAgent [] potenAgent = new SexAgent[20];
& s0 [ Q% [8 z3 t$ k6 L# E int goodNumber = 0;
9 |4 u, ^3 U8 H! V/ `* s; _; ?& X while(iterator.hasNext()){7 t. w* L9 P5 ]
System.out.println("XXXXXXXXXXXXXXXXXXXXX");# A9 q, ]' a3 f6 a9 q% }6 Q P
ag1 = (SexAgent)iterator.next();/ }8 W% I1 B6 \- [1 H8 {2 }
if((ag1.sex == FEMALE)
% |: o. i- l$ n &&(!ag1.isCoupled())){
3 Y8 P* s; ~$ y' K0 M8 m2 |& I System.out.println("YYYYYYYYYYYYYYYYYYYY");- E/ J3 l' ^ U# D3 d
potenAgent[goodNumber] = ag1;
' F5 G' {- S+ r" q2 ~6 H& F4 ` goodNumber ++;
0 H: _" ^7 }( k5 U }" E/ Y% O# ~0 ]: d4 r+ b, A+ g8 T
}
: c& R! Y$ h. D; x$ u' U 7 r1 n9 f9 v' T* e4 d8 Y0 d
if(goodNumber >0){& A& n; p% O0 v0 X0 S1 ?
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ! ?. V5 ~$ ^- o
Random rd1 = new Random();3 q* v( D" M1 B3 U/ x. w5 J
int select = rd1.nextInt(goodNumber);
5 Y: @$ q" o+ T( H potentialParterner = potenAgent[select];
3 f# Z/ I8 e$ E) K* N# X: A3 X value = true;
0 W: f7 j/ V6 G0 y- h8 F; f }
2 z3 D$ @3 T6 e" \- O' E& s return value;+ X% C/ _1 b% y# N5 p
}
/ f8 K* q, Z) x始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|