|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。9 i- |1 s" F+ C7 w* {
private boolean findPotentialPartner(){
4 F5 r3 @5 U2 r+ W* B2 N( _ boolean value = false;
! P; d7 s3 P0 g: O- @
) W% _7 C3 E# L2 W OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
( T% T% ~5 c5 O5 z9 ] Iterator iterator = grid.getIteratorAt(x, y);( F% B1 p2 r9 g
SexAgent ag1 = null;
, k3 f) Q e: m' K0 | SexAgent [] potenAgent = new SexAgent[20];" \5 L6 j7 k- `1 f; N+ T: w# M7 L1 ~, X
int goodNumber = 0;9 x0 c9 `2 |; \* V, A" i
while(iterator.hasNext()){
. j" F }" ?8 Z( d" s System.out.println("XXXXXXXXXXXXXXXXXXXXX");
. {* c9 l; a5 Q+ t$ a! o) v) k. } ag1 = (SexAgent)iterator.next();
! N& v3 S9 j2 Z' N; ~/ P if((ag1.sex == FEMALE)
1 @& |: p" u- q &&(!ag1.isCoupled())){# L P" c9 }" S3 D" B# O' ^! }
System.out.println("YYYYYYYYYYYYYYYYYYYY");) Z1 Q! t' Z g9 B$ a/ J
potenAgent[goodNumber] = ag1;" j6 z$ r. |2 r4 Y: u: u2 Y
goodNumber ++;* x- X4 g' ^6 \8 W
}7 q7 o$ q9 X. y
}
. l$ d8 _( W0 G 9 Q4 l( @5 n/ G# Q! e$ x, ?: R; c
if(goodNumber >0){
% D* j! n- G8 _+ i* ? System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 4 y- {3 d9 q, h$ l! Q7 H
Random rd1 = new Random();
7 v, I1 f1 |0 g) F- x int select = rd1.nextInt(goodNumber);& j+ L. Y i) A) I: y9 e/ e
potentialParterner = potenAgent[select];; `/ C# ]( W& X/ N0 B1 K S
value = true;
2 [0 o% R8 V3 j9 t( o9 T }
& |0 [# d- w" c$ c% X9 `: {( w& ~ return value;
( ~& o& _7 G& ? }
" R+ L4 T5 x) g. V% q0 |- U" j始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|