|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
7 P5 U- [2 J- x) J private boolean findPotentialPartner(){
: x7 @% u" i4 \ boolean value = false;8 \8 Y) t& k; c
3 U; ]8 A5 e1 D* P4 U d- V OrderedMulti2DGrid grid = space.getCurrentAgentSpace();: C. m2 Z4 j8 m" v$ U3 ]# ?
Iterator iterator = grid.getIteratorAt(x, y);1 Z: }# B: Z; n6 S* k9 U; y& P
SexAgent ag1 = null;
- g* A( h: I9 x6 h( @! e3 O/ X9 P SexAgent [] potenAgent = new SexAgent[20];$ i5 Q4 f5 b* J4 l; G B6 S( C
int goodNumber = 0;5 R2 p$ y# b' j$ K$ u0 N
while(iterator.hasNext()){
C. E8 s, `% Q2 N* O System.out.println("XXXXXXXXXXXXXXXXXXXXX");2 S( e; N' @1 Z9 b% @# f
ag1 = (SexAgent)iterator.next();( p2 ~7 f1 Z& {8 B
if((ag1.sex == FEMALE)
* _8 w$ B% A( c' z* r, Z' E0 H: F &&(!ag1.isCoupled())){
5 g4 r* S* c$ x- t3 j System.out.println("YYYYYYYYYYYYYYYYYYYY");
7 V; f" ^& ?) G, g9 Y3 s! ^ potenAgent[goodNumber] = ag1;
2 e2 J8 `3 ^& e) f: Q goodNumber ++;6 Q& j1 U; a5 j( {4 i# x/ d
}' E5 L1 U. W7 |, @( a* [' X" o
}- B" y. o) h& O4 J4 x: {
4 @, H4 ]7 G8 _) N3 ^/ G" ~
if(goodNumber >0){
% \3 G; q6 c, j% W( g% t System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 4 M; v, M5 _" d) w; t3 S1 s
Random rd1 = new Random();
, L5 K8 x! u# B( {% ]4 Y% f int select = rd1.nextInt(goodNumber);" m+ l, S& y3 L9 |9 z
potentialParterner = potenAgent[select];
" I5 s& H) O' i value = true;! l8 d6 G5 g& R! }4 X
}
& H/ i6 F, O6 I1 B( b g$ A1 K return value;# C' y4 z7 E+ ]9 E
}
/ N+ Y3 m, ~/ ^: O0 V始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|