|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
7 P" y9 ]" E' i; e4 e private boolean findPotentialPartner(){* F$ _: j' q' o' e( S% l; b
boolean value = false;
6 x4 E, D' } E. I3 T8 v 9 s/ b' H ]. v4 ~# d
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();3 H* c- u! a0 n0 R
Iterator iterator = grid.getIteratorAt(x, y);) b# X/ ?+ ~. E1 }
SexAgent ag1 = null;
: R5 C$ n$ q/ n' v1 M, A SexAgent [] potenAgent = new SexAgent[20];
0 m& W% q$ `- i+ e: |% I4 l int goodNumber = 0;0 L6 \. r& V6 N
while(iterator.hasNext()){
" z, N6 m2 V1 |9 B3 j( l System.out.println("XXXXXXXXXXXXXXXXXXXXX");
4 B3 C6 [0 Q3 [2 K; e/ h- Z ag1 = (SexAgent)iterator.next();; Y- Q% ?$ I' d- W
if((ag1.sex == FEMALE) $ i& A8 [/ O, u" h7 f
&&(!ag1.isCoupled())){5 `( F9 M2 u# n" \5 j- B
System.out.println("YYYYYYYYYYYYYYYYYYYY");
" _) w% w% r' J s potenAgent[goodNumber] = ag1;' s% B* ~- s) h' `+ _
goodNumber ++;
+ _& C( s. r: t9 Z( \% T$ n3 Y5 g }1 ^. O; c' g+ N% \7 R8 J3 ]0 @! e
}- ?/ l' r# a: z! ]4 K4 z: f' Z
! c7 D! R. h4 N# ] if(goodNumber >0){
6 i3 R' O, v' ]+ L System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
! b3 H X" |0 f2 Z Random rd1 = new Random();
# m, d7 k* V) Y& d; l; p int select = rd1.nextInt(goodNumber);2 y2 \! @1 m7 z, S
potentialParterner = potenAgent[select];* A% d* R' x0 n( N O9 [) h
value = true;: r5 ?7 Z2 ^, v& K/ U: h
}
9 b6 t8 D3 ~4 m" s return value;0 ^. F& y7 K' A9 ?
}" Z2 X, \" O3 F
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|