|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
@8 R5 @0 `3 M1 L( H: c$ F private boolean findPotentialPartner(){
5 i" ^7 k1 P2 e2 {( C# A0 n; }/ I boolean value = false;" H+ E4 F6 U% e) F- n
6 z- k: V6 n5 i" _/ A$ e
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();/ G3 t- B/ U. z, A$ a: m- U1 w8 p
Iterator iterator = grid.getIteratorAt(x, y);
7 f! Q5 N H* q SexAgent ag1 = null;
' g1 B( C B; c3 V" j2 A SexAgent [] potenAgent = new SexAgent[20];
! Y' w$ z( {5 V) f int goodNumber = 0;
3 Q8 d; }" r, V2 J6 R while(iterator.hasNext()){ y& z/ Z# Q: C0 |; r. `
System.out.println("XXXXXXXXXXXXXXXXXXXXX");+ P3 ~% G. m2 j7 Y; |
ag1 = (SexAgent)iterator.next();& z4 Q0 f5 U0 ^
if((ag1.sex == FEMALE) % m1 Q+ C! \ X! d
&&(!ag1.isCoupled())){% X4 m3 }) x9 G1 }
System.out.println("YYYYYYYYYYYYYYYYYYYY");
5 p) \4 a9 O! |9 M2 X potenAgent[goodNumber] = ag1;
) Z2 B3 a; I8 N/ H2 X goodNumber ++;- L, C, Z- ]& V7 x2 v ]
}
- p- B. V' m- V, n, l1 A% ]$ A; v }
$ B5 N# t+ a6 t' ?% @9 w2 e5 y
: p+ X3 ^2 {6 M# z2 E0 N if(goodNumber >0){' ] v& Q( g$ R8 U
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ; S6 x4 X, b: V
Random rd1 = new Random();
3 z+ `* C* I% Q int select = rd1.nextInt(goodNumber);$ ~" x3 |5 c' V! S1 u
potentialParterner = potenAgent[select];7 P' g7 Q Y% `
value = true;
" }) ~4 e* p) @# ?. V9 V3 C }: ~% N6 j3 [* k; }" |7 {% R2 j9 Y
return value;
& H9 ]5 G2 W8 b2 S3 W! ]1 n! k }/ n) w4 C; y2 o- o
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|