|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
! u( h9 J% I) L2 V, ^: Z* e private boolean findPotentialPartner(){; O7 _2 V8 _ T, `# B
boolean value = false;
" M+ J* S% h% p4 P# A/ E o ' }3 B4 N/ r3 M
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();% v) t1 i1 y( m% T
Iterator iterator = grid.getIteratorAt(x, y);
. Q3 } c# b7 F2 g SexAgent ag1 = null; 2 K$ X9 G8 ?% P& r- O- @
SexAgent [] potenAgent = new SexAgent[20];
+ d% c W. w. l: x) v& G int goodNumber = 0;
8 a# m" C" s. _7 ` while(iterator.hasNext()){
l! E. [& n7 a7 ~- }" G3 [( A System.out.println("XXXXXXXXXXXXXXXXXXXXX");
8 L. m) P% u" M ag1 = (SexAgent)iterator.next();1 p+ g2 e4 S) v/ c0 _7 @
if((ag1.sex == FEMALE)
, z' h4 T6 {) L2 t( r &&(!ag1.isCoupled())){7 a4 R! K/ C7 N6 g: m6 d# o# y
System.out.println("YYYYYYYYYYYYYYYYYYYY");+ G6 p8 E1 \6 a8 @; d- I7 ^
potenAgent[goodNumber] = ag1;
4 k/ y/ M& g) U3 s- e goodNumber ++;
7 U& O: Z% Y$ O( Z, B: Q- m% i2 u }
4 i! E$ H; U8 o. Z# p }: h! [+ l/ ~2 ] o3 n6 r
' s( I; x: q/ {; D) r( s3 \
if(goodNumber >0){
0 R3 F8 i- B' m+ o6 T6 L System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
s8 g6 b* q e Random rd1 = new Random();
0 ~9 N& E$ y$ I4 p9 h3 s int select = rd1.nextInt(goodNumber);* {/ s2 V8 K1 j0 U' V
potentialParterner = potenAgent[select];
0 n5 u+ s! K) m: @! J7 x value = true;2 S/ X, ~; ~# A$ f" K4 s
}6 V3 N7 r6 b( w+ K. v! z7 S6 \1 U
return value;3 L7 |5 N" ^1 U1 D, ?0 j! ]. z
}) p r+ j# X# c: T+ o
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|