|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
4 A) H5 Q! \4 O( o( ?9 h private boolean findPotentialPartner(){" ?3 v+ N; Z- K2 ?/ |
boolean value = false;
1 W% \( J- u n, m2 Q S7 }
( t: ~% u% C8 w OrderedMulti2DGrid grid = space.getCurrentAgentSpace();! Q/ B2 A1 f" c& R9 x
Iterator iterator = grid.getIteratorAt(x, y);
I; {0 x5 _/ x SexAgent ag1 = null; 9 n5 x& U6 G: \& C+ T" k
SexAgent [] potenAgent = new SexAgent[20];+ K) n" a7 \/ o; X+ d
int goodNumber = 0;% }8 g( n+ R: _+ U9 N9 l
while(iterator.hasNext()){
9 Y0 |$ B7 ~% J* U5 e5 w% w7 P- p System.out.println("XXXXXXXXXXXXXXXXXXXXX");* e4 K9 Y s. g
ag1 = (SexAgent)iterator.next();- I" m4 _' |+ |, Q/ G
if((ag1.sex == FEMALE)
6 f }, w! {% t; R; B &&(!ag1.isCoupled())){
. D( m& ^9 H7 u% ~# M% u System.out.println("YYYYYYYYYYYYYYYYYYYY");+ R( y. u5 L$ J. O/ X5 x
potenAgent[goodNumber] = ag1;
4 O: l+ S- J0 h1 C- a4 g9 { goodNumber ++;# N" v: }% a' p! z4 K D
}# X) A3 @1 {0 N7 X6 G: q$ ~
}3 e% S2 c5 S$ t) A% r8 q' b
# j/ u+ W: ]) n: w( K* e
if(goodNumber >0){
: C3 A8 w5 Z/ X9 k( F$ Q System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
4 ~% @# \+ w( | w7 E: s/ q Random rd1 = new Random();% l) I. f) ?! e: B) F6 T2 _' F
int select = rd1.nextInt(goodNumber);4 O( a$ q8 t5 g! ~9 s1 }# h( v
potentialParterner = potenAgent[select];
# G! h8 W9 I6 t) R' d; P value = true;: b& E6 ~- J' Y/ S) a, K! U+ o# e
}0 j' i. P1 R: t: V1 G3 d
return value;
& ^7 P3 D4 B' k9 Q3 Z7 ?" C: X. H1 q }
- r9 N; z3 m; B( j9 F# i始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|