|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
2 V. J$ a5 K8 f! X$ A* ~ private boolean findPotentialPartner(){% B, x- P: N$ f4 V/ {8 y
boolean value = false; z8 b: P' ]3 ?$ C) Y( v& A
8 i2 T3 w! g6 K& o OrderedMulti2DGrid grid = space.getCurrentAgentSpace();4 ^7 x1 s% ?3 n9 F6 L1 a9 k
Iterator iterator = grid.getIteratorAt(x, y);! N* J4 v" W6 z' F% S# y
SexAgent ag1 = null;
3 R- L) ~ h" q: t- m; K SexAgent [] potenAgent = new SexAgent[20];
1 o" p; ]& N2 z int goodNumber = 0;* I5 A6 a/ `; M: X4 {. m
while(iterator.hasNext()){
7 D8 \$ C/ q% z1 ~ System.out.println("XXXXXXXXXXXXXXXXXXXXX");2 t4 N7 W4 I" I$ n
ag1 = (SexAgent)iterator.next();6 H9 z/ B! N2 ^, N% d( {2 _
if((ag1.sex == FEMALE) : a# Y- h0 j1 W8 A% n
&&(!ag1.isCoupled())){- F/ N7 U5 M4 u( r3 F; ?' s p
System.out.println("YYYYYYYYYYYYYYYYYYYY");( Y. I Z6 Q2 q: v
potenAgent[goodNumber] = ag1;+ j2 g e; d& m
goodNumber ++;
/ y1 a6 [% `. K7 T2 G) t3 C }7 j6 U1 h: X9 F, H: V
}
l& q( H3 G) d% d' l " L9 g- B* Q( R9 P) @
if(goodNumber >0){
$ i2 w. y8 D7 h System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); : l. H( d8 ?3 w( X d" S
Random rd1 = new Random();
7 u9 U3 D* m( D3 v/ c, L5 Y | int select = rd1.nextInt(goodNumber);
1 q, Z/ j3 e# B9 ? potentialParterner = potenAgent[select];) _. G& W# B* s" e8 o
value = true;
) ^/ i- ?( R$ p" H }0 r0 d0 a& v; H( q. A
return value;4 P9 I- @$ U2 u* C9 Z8 ]$ A$ x
}
/ X- p+ B* A# |& o7 ~- r& S始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|