|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
2 B5 {" l/ U X& u: w" P" l private boolean findPotentialPartner(){: a$ `3 C, c- ]4 y# k
boolean value = false;5 S1 E; B" y% n9 H' a- A" t" R6 H* a4 @
7 l' v6 a+ p) U, p/ | OrderedMulti2DGrid grid = space.getCurrentAgentSpace();( V& r" y [/ j. ]( `% F
Iterator iterator = grid.getIteratorAt(x, y);) q* i' G3 j* n; j$ w" W
SexAgent ag1 = null;
6 ^( v! y3 J+ I* ?; R SexAgent [] potenAgent = new SexAgent[20];1 a5 C' b5 \+ z- E6 T
int goodNumber = 0;1 ~8 l$ K+ P7 D9 g, D
while(iterator.hasNext()){0 r+ l. t4 R! P0 G
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
( B- v+ I' ~2 ~2 x, q/ r* k ag1 = (SexAgent)iterator.next();; X7 g f# T+ ~0 w- n
if((ag1.sex == FEMALE) $ H, C! S. c- x0 o
&&(!ag1.isCoupled())){' p: g5 I4 I: F0 F/ Z
System.out.println("YYYYYYYYYYYYYYYYYYYY");
) ?% U: ~8 J, M% l) w' L K; Q potenAgent[goodNumber] = ag1;
+ N$ b3 P! ^2 r goodNumber ++;- [6 \% `4 |. c+ U2 Z* |# K! u7 ]
}
! Y1 [/ H1 {. _2 c- x }: J( r' T' ~, \5 |$ C
# v# t( y' d4 ]4 o4 ~ if(goodNumber >0){6 e9 |/ @% N+ l8 E$ `
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 9 R& Y% S- d" @/ b; ]8 M- K; P' ]( K
Random rd1 = new Random();
/ X) N% W ~+ q9 t* [5 @ o) u int select = rd1.nextInt(goodNumber);% k, o8 Y, `% O m. U7 o
potentialParterner = potenAgent[select];; d. R0 v( ?( t0 w& K3 z
value = true;
) R4 S* ^6 R4 s+ \ }$ M/ B( N# a* a0 O) w( `( _+ u1 L
return value;
( X; |4 Q& O) u5 |4 k5 n }
; J g$ V. H6 j* x始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|