|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。$ Q" D) o$ Z) B) ~
private boolean findPotentialPartner(){' o, ^- Z$ w/ }6 G3 L
boolean value = false;
2 ~* t" o& x# M! _ H; `- l: I 7 M, y$ q- e7 \$ I. H0 H0 M
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
. B7 ~+ k7 z/ i! D' L" P Iterator iterator = grid.getIteratorAt(x, y);; \, n9 l# I. @, P, H) _
SexAgent ag1 = null;
. q$ V8 s% }: Y2 n SexAgent [] potenAgent = new SexAgent[20];. Z( R! ^9 K' C: z3 D
int goodNumber = 0;
' D$ r! m& U* q; W; x while(iterator.hasNext()){
4 Z x: p& J Z& t7 _7 \ System.out.println("XXXXXXXXXXXXXXXXXXXXX");
: r( ?& ]7 x/ i- f6 y ag1 = (SexAgent)iterator.next();4 Z& t9 x$ P6 A" U: \) O5 A! P6 g) O- C
if((ag1.sex == FEMALE)
' R/ G* y; W$ x& e& x- M &&(!ag1.isCoupled())){
; g/ i$ N" x1 m$ K0 k* f) t# p System.out.println("YYYYYYYYYYYYYYYYYYYY");# G8 T8 _9 r2 c& o$ O' W
potenAgent[goodNumber] = ag1;
4 Q' L4 j" `& ^ goodNumber ++;
# j# y* e6 c# p }5 B5 ^7 c2 @; ^8 |/ n0 N
}
- _9 G, q. j$ _0 L& e4 h# @$ w7 r 4 y9 {" O1 F( c& F
if(goodNumber >0){9 |8 [2 c L, v" Z5 K
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); # b5 _ w1 m: j0 v9 x+ U# b
Random rd1 = new Random();1 U( N3 g" D+ n+ h6 C# O7 l
int select = rd1.nextInt(goodNumber);4 w6 e' x X. y& ~, l( R" j% ?/ [
potentialParterner = potenAgent[select];
+ i7 j6 U R4 i6 j# a) A# x value = true;3 `' M) t6 `; Y* s6 {% A( |- W0 ]
}7 q* Q/ \3 b( }: Z
return value;
w, {: ^4 M3 @8 i" S+ { }7 D4 o" ~( D2 ~- o$ {8 r! [
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|