|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
* \& n. N3 V: H \% D( |/ V8 E/ P private boolean findPotentialPartner(){1 ~$ H8 k. D& R* ]0 {
boolean value = false;
7 Z3 D: Z) F0 ^: E. P2 ]2 B & T9 r! B- r% l$ O, Q% w5 s
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();8 k6 b d2 O2 s9 c, j8 k% [
Iterator iterator = grid.getIteratorAt(x, y);) s' C( O) H1 {: m$ s
SexAgent ag1 = null; 8 h" u$ S6 U9 F: v' ~0 N' r
SexAgent [] potenAgent = new SexAgent[20];2 J* q# c6 a1 U" o
int goodNumber = 0;
. j2 q! _& ]- k+ C0 |' H4 j5 ? while(iterator.hasNext()){+ z3 M" x# K2 q5 ^- m- U$ r% k
System.out.println("XXXXXXXXXXXXXXXXXXXXX");3 {6 W& m- ` @8 \$ u
ag1 = (SexAgent)iterator.next();- M1 ~# {2 _/ _: L$ B
if((ag1.sex == FEMALE)
4 p O/ ~ I& H+ ~: J7 C &&(!ag1.isCoupled())){
0 M1 Q! O2 ^) ^, ^ P' d System.out.println("YYYYYYYYYYYYYYYYYYYY");; R M; {5 ]9 N9 L
potenAgent[goodNumber] = ag1;
5 H: ]! x! q7 K5 \6 P0 U: | goodNumber ++;. L" F6 @( P2 M
}
; U6 j- w; W6 x& z/ a7 \& |8 q }
: z" u: t- J* c3 A
. K% N2 O' q1 A3 ^! ^5 { if(goodNumber >0){
! h" I/ ?( P; g. r System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); $ a: i6 o: K+ W
Random rd1 = new Random();
9 ]. c# \" K1 e/ ^% o+ |: m int select = rd1.nextInt(goodNumber);% ~! |8 v7 g4 M R1 G7 {
potentialParterner = potenAgent[select];
5 G2 f: }+ i) F8 P8 r: g% q7 z value = true;3 \* q: x. [- n$ ~ U
}
, l7 |- C! j; {, W8 R& n! ~ return value;+ S2 Z/ J0 E0 o3 ]6 q5 H7 U! k
}3 O: W; Q- y; f: }# w( x1 e0 D
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|