|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。5 f5 p- g$ Z3 ~
private boolean findPotentialPartner(){
# J. E2 r& E5 p. T* f& `9 m boolean value = false;0 x$ R1 ?" k3 i/ J' Z4 S
. ?# ]# D l/ h+ M/ F OrderedMulti2DGrid grid = space.getCurrentAgentSpace();6 y' C! J7 {" G3 y
Iterator iterator = grid.getIteratorAt(x, y);8 \+ d9 ]4 C4 ?: i
SexAgent ag1 = null; - b5 x& I* M8 f3 t9 f ~
SexAgent [] potenAgent = new SexAgent[20];
7 m3 R* ]2 V* V' `8 A$ e: L int goodNumber = 0;
# h7 G* C5 X" e' s) z while(iterator.hasNext()){9 o# P1 H7 T* {
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
, o- t8 G2 q, P) B4 {. ^1 ^ ag1 = (SexAgent)iterator.next();( ?. y! x* K# \3 C" _) p1 Q. h
if((ag1.sex == FEMALE) ; g: x2 K2 z X$ x- p
&&(!ag1.isCoupled())){
4 ?8 C! h3 F$ v# {8 R/ D, g7 g/ J System.out.println("YYYYYYYYYYYYYYYYYYYY");: U% G& ^9 o/ i
potenAgent[goodNumber] = ag1;/ Z* L4 | q2 Z0 } K' ]; C, a% Z
goodNumber ++;
! I' T; M8 e& y( S }
6 a6 r4 F0 a" g/ c } A, n6 H9 v% T: v, @: W8 U( ^
+ M9 t) O% B( J b5 z
if(goodNumber >0){
5 u" U( J v/ Q! q+ Y- ? System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
' {# \' m5 U+ @' @. |" o Random rd1 = new Random();
2 u3 D$ l* K" S+ q; z& h/ Z* t int select = rd1.nextInt(goodNumber);
5 l6 z: X3 Z' h$ f; a; d potentialParterner = potenAgent[select];5 K) F* Q& d4 B; |7 Q, U* ]
value = true;4 ^& o1 Q# r! Q
}6 b& S; m1 Z/ C0 J: ~
return value;
6 y5 R; I6 m; e. P, J }$ ^2 ~$ C; h# U9 D+ z
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|