|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
% o% L1 `6 P) ^ private boolean findPotentialPartner(){
3 ~+ D& m( j- j, t' P) I* Z boolean value = false;
2 P; N- T5 f* L z4 w, u* r/ C9 S0 c
0 W' E. k! j7 F$ r+ N OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
, p1 ~. L8 \$ a Iterator iterator = grid.getIteratorAt(x, y);- K% w0 Y6 ?7 a0 S9 E- `8 c6 ?) E( G* d
SexAgent ag1 = null;
' U- C1 ^. f8 u; ~- _& p8 t1 Z SexAgent [] potenAgent = new SexAgent[20];5 F8 X" S5 e( ^3 a- \2 b
int goodNumber = 0;
( ]& u0 ^7 f9 b: F u while(iterator.hasNext()){
: G9 ]" E& P* H+ T System.out.println("XXXXXXXXXXXXXXXXXXXXX");
* b# W3 L, Y6 T' X ag1 = (SexAgent)iterator.next();2 x$ H! b2 ~% u$ a- f+ _
if((ag1.sex == FEMALE) 0 G; j/ M& V/ l+ p6 V6 i+ E) y
&&(!ag1.isCoupled())){/ V/ r( E: R: m p9 `9 y
System.out.println("YYYYYYYYYYYYYYYYYYYY");
+ c, Q; R$ g8 u+ k potenAgent[goodNumber] = ag1;
6 \+ |1 ~) U% y3 b goodNumber ++;+ C( Z' e" L: F/ z9 `
}; Y/ p0 \, e" P; n( P
}# h9 |# Y0 ?! {$ E8 X, v
' C, |3 t: r4 k5 j5 y3 c- L if(goodNumber >0){ y1 ?& e G$ V
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
& m3 N- F& X2 n4 ?& o. C- L' o: u! c Random rd1 = new Random();7 z% \9 y; a+ ]: X) Z7 J
int select = rd1.nextInt(goodNumber);" u/ [3 @2 I1 O* s
potentialParterner = potenAgent[select];. Y7 T* M. i3 s5 x0 |( X
value = true;! x& M7 x( @: M* ^, J! ?5 J6 }
}
3 F* L; U- V% \1 z2 h; t0 x, U return value;
) F+ } K, M7 m" q3 T }
: F/ l7 w! |+ h始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|