|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。( B/ {- [6 g2 @0 x2 H4 t
private boolean findPotentialPartner(){% }1 d7 _7 u! N
boolean value = false;4 n- D7 x% E2 u* D* [% W6 Z: c
+ t& M0 f* K4 ~4 p9 L1 C5 D4 m N OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
! k8 v* O* @- [# Q Iterator iterator = grid.getIteratorAt(x, y);+ |: z6 j) t- _, S+ O1 v
SexAgent ag1 = null; + W5 G0 J# B2 ?8 y+ Q
SexAgent [] potenAgent = new SexAgent[20];; Y' N- p! z& U# h
int goodNumber = 0;1 o2 T% N3 F8 [2 a7 }3 t$ C8 {
while(iterator.hasNext()){
" J: G, R+ r6 h: d4 K: }' M% g0 b System.out.println("XXXXXXXXXXXXXXXXXXXXX");( x7 `# T) V& j4 E4 _1 S: ?9 u
ag1 = (SexAgent)iterator.next();! z, l8 @3 M5 ^
if((ag1.sex == FEMALE)
% p$ {* ?4 F+ w7 E: n, e &&(!ag1.isCoupled())){0 X1 H, }0 m( `: s' i
System.out.println("YYYYYYYYYYYYYYYYYYYY");, J9 i: g0 t( K* p- ]" ]
potenAgent[goodNumber] = ag1;6 u5 a1 c8 J# H7 ]- N
goodNumber ++;
" P; b9 U% J; H& q; q }
, {9 W3 D- T& K2 ?4 R }
) ~- H, O( T- Z; ^1 o/ G 6 |( Y; m9 a4 p& o( p
if(goodNumber >0){
& U, X. l# i" S. u3 Y3 `( e System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
4 r% F& j7 _' `6 {4 G Random rd1 = new Random();: N9 w) k# f$ E. e
int select = rd1.nextInt(goodNumber);: S7 `+ V1 f5 J" L
potentialParterner = potenAgent[select];
" N# e( I9 j: }# |0 j/ m value = true;: M/ V" r# r6 w3 c- r- @5 z
}. T* c# Q% H7 z
return value;
: F( X4 e* E! z4 r' Y" U% f }
6 k2 u1 M/ G: I5 b" x$ h+ H0 A始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|