|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
' g% i$ h) B; e' h private boolean findPotentialPartner(){% A4 Q3 R2 ]- Z0 Z% j6 r' ?$ N& C
boolean value = false;- k; N; J" D4 a/ n
! {- S0 c/ u0 U. x OrderedMulti2DGrid grid = space.getCurrentAgentSpace();& q% g. d, ?1 q
Iterator iterator = grid.getIteratorAt(x, y);
+ X7 g- e' l' x5 |: R SexAgent ag1 = null; 3 ?% R# T" q- f6 i0 ?5 E
SexAgent [] potenAgent = new SexAgent[20];% E% K' ~( O4 i( G: w) Z
int goodNumber = 0;2 v% _5 {% h$ O6 N
while(iterator.hasNext()){
0 g; l0 m; O1 p" E( s System.out.println("XXXXXXXXXXXXXXXXXXXXX");+ ^7 \0 n, Y" A h# y0 Z
ag1 = (SexAgent)iterator.next();
- O) S0 S# c J, l! E# b if((ag1.sex == FEMALE) # N( b! g j4 l
&&(!ag1.isCoupled())){7 F' a7 t% s( f7 T- w3 ^$ B( e
System.out.println("YYYYYYYYYYYYYYYYYYYY");
: `( ^0 Y; U* X/ @; i potenAgent[goodNumber] = ag1;
8 G0 G) G2 ?) N" F' j$ j+ `/ H goodNumber ++;
. x' E: \' z' o; i }
+ R7 z- L; J1 I" F3 u$ o e }
9 _% E4 L/ c* Y; N: D. \
% I" U9 Q) |, l6 j9 Z' P: l if(goodNumber >0){' b) E& R+ w; I9 W4 F+ A; t
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); , [# u4 C! Y5 t. U) ^5 N$ I
Random rd1 = new Random();
+ `+ T2 S: y9 Y- Z' ^0 ~0 \2 C int select = rd1.nextInt(goodNumber);& r4 i) U9 Z/ V
potentialParterner = potenAgent[select];+ L- ?# s7 F# G2 X* z. r% n% k
value = true;6 F; U% ]" G4 J$ M
}
8 H% ^# W" B' y# f: _ return value;6 @; y3 i; `% q& F6 b% E B9 N6 A
}" p" D( X/ ]! _% u
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|