|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
- A( v6 p3 X6 `5 z private boolean findPotentialPartner(){5 k' g M' }$ k P- ^4 B
boolean value = false;
3 k+ q( E! t! P5 R . w' |4 _, v1 V0 u: T/ Q- [8 Z
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();' L ~" @% h$ a6 t h
Iterator iterator = grid.getIteratorAt(x, y);
% E4 i5 M& F4 O+ B SexAgent ag1 = null; % e% R+ O1 S2 T5 ~! ~* v8 v. l2 W
SexAgent [] potenAgent = new SexAgent[20];" W+ _5 X4 }3 C+ n
int goodNumber = 0;
( T" x7 M+ g5 r* r while(iterator.hasNext()){
* b" M% ]! r5 o5 H% c System.out.println("XXXXXXXXXXXXXXXXXXXXX");0 ~9 ` I% V: @0 v: e1 p
ag1 = (SexAgent)iterator.next();8 c/ \: O( z' [' C8 _
if((ag1.sex == FEMALE) . N( ^$ I! f8 h# H0 i! B
&&(!ag1.isCoupled())){
7 j$ n% x1 R6 Y4 r# O& x2 _( p System.out.println("YYYYYYYYYYYYYYYYYYYY");% G+ O" g# |& n/ E( Z m
potenAgent[goodNumber] = ag1;
0 U5 {7 G% J9 e# x goodNumber ++;
$ R4 ^9 E9 L& ?/ u1 {: y0 T }
* r% b! }1 B/ B" O }
2 X( Q6 h8 V1 m$ P5 }
1 p' ]6 W: Z A3 ~ if(goodNumber >0){& N/ [) w5 x3 T/ a" m
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); : o; k0 G( c+ z8 L! U- Z6 y
Random rd1 = new Random();- X# S* I0 p: E) _
int select = rd1.nextInt(goodNumber);
( t+ F3 A+ Z0 n l: {) Y potentialParterner = potenAgent[select];) K6 e' g& u, ~8 Q
value = true;( `! V. r$ S( }4 k2 k
}
: E$ n: Q& H; h$ |! |- V6 A# v5 G5 k return value;
7 e, j8 g- _$ H: [! \, | }
; ?- u4 \& p" L. D. H( z1 U始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|