|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
: s$ e0 N8 @' X1 K4 | private boolean findPotentialPartner(){5 o0 G5 \# j0 s. r
boolean value = false;
$ T! v2 `3 [7 u0 V# L0 Y & X4 F" B/ @3 v4 K3 j7 N |
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
3 u) z( `. l6 T: u2 k Iterator iterator = grid.getIteratorAt(x, y);
# T. ~) \) N, _' u+ @" c SexAgent ag1 = null;
& y9 b& M4 O, T! d+ j& G( \( u SexAgent [] potenAgent = new SexAgent[20];
% X2 `; Q) S$ R( { int goodNumber = 0;
/ y T% h. G! w, ^1 p while(iterator.hasNext()){
3 g# y8 P" A O1 c1 Z System.out.println("XXXXXXXXXXXXXXXXXXXXX");" _, h- `) s7 r J! z* V; ^
ag1 = (SexAgent)iterator.next();9 p+ f; I" j) o* n: y: ?
if((ag1.sex == FEMALE)
: ]* H& g; y; a &&(!ag1.isCoupled())){
/ [) d4 V0 r: R( y System.out.println("YYYYYYYYYYYYYYYYYYYY");; u7 u" |8 Q* n7 X5 h! R9 i& F
potenAgent[goodNumber] = ag1;9 Y1 @9 c9 p+ c1 G$ S4 B2 M+ m
goodNumber ++;' D: F5 X/ X8 l: |8 ~
}/ m4 n: m: g7 T& ^) |3 B
}
2 U2 Y3 W m* W: H+ N. f8 |
1 t( k; r) f# }3 b. x if(goodNumber >0){0 o) Q& [; f0 e( R
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 9 E% T$ P4 Y" x7 j; I {6 M
Random rd1 = new Random();. k: O2 _8 ]- \7 p3 ?& h2 H# e3 D
int select = rd1.nextInt(goodNumber);
% c% a! d, f( S) D" I: E. v potentialParterner = potenAgent[select];
( A* B* C; V4 r4 }) n. C6 l value = true;% b- H% W- A% R/ y
}$ q& o) X$ l8 w+ r
return value; f+ n& m+ q! m( |
}
7 r5 Q' ` Y' Q始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|