|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
# } \4 H) T3 _ private boolean findPotentialPartner(){2 j: |* I1 |; l1 u
boolean value = false;. R0 B9 V7 }' f4 |
5 V! ^% n! G) B0 ` OrderedMulti2DGrid grid = space.getCurrentAgentSpace();; Q+ i# }, T$ `( X" E
Iterator iterator = grid.getIteratorAt(x, y);; R; T1 u: Z0 M6 r$ {$ o9 I! t
SexAgent ag1 = null; 8 X" |. Z7 s9 E6 T* J
SexAgent [] potenAgent = new SexAgent[20]; M- @8 a4 N5 r6 C' N& s e$ l8 p! R
int goodNumber = 0;4 ?9 [+ L$ T, r6 w; e
while(iterator.hasNext()){9 P3 Q2 d# W! X8 b$ P7 _
System.out.println("XXXXXXXXXXXXXXXXXXXXX");4 N2 }0 W4 A Z ~8 h
ag1 = (SexAgent)iterator.next();
) J) r; i/ C4 D: ] if((ag1.sex == FEMALE) ' i, h% B3 i4 H- j
&&(!ag1.isCoupled())){% y' u5 W9 M3 d, g1 {$ Q* a; y! Q
System.out.println("YYYYYYYYYYYYYYYYYYYY");
7 B, |7 h, A% Z. D- j# b potenAgent[goodNumber] = ag1; {( D1 \) e5 E b8 A: D4 `
goodNumber ++;
/ N3 X4 R: B" A% d2 z+ ^: z" W }* W5 G& N- ]4 u3 W. Q3 j4 }6 V6 M) q0 M
}1 l; O, F. C1 R" V
1 v! y) v& N# \$ {% ^
if(goodNumber >0){
/ e% q% {5 l n System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); % u9 l5 z( j) ~: I2 I# {/ h* L! }2 \
Random rd1 = new Random();. P. f0 @4 v# F
int select = rd1.nextInt(goodNumber);
) m/ n6 X9 L2 y5 g, Q& M% C2 A potentialParterner = potenAgent[select];
, S% d7 A- _, I0 Q value = true;: m9 G) F7 E) b: w/ l) e& b8 I
}
, @1 Y8 {& W: L. k return value;0 Y) L$ r& C8 x$ V
}+ w3 Q' {2 [* Y+ I# i9 u' _4 h
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|