|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
( P L) h0 s! E n) B8 o1 P private boolean findPotentialPartner(){/ J f) e4 @% X, Z- y
boolean value = false;
0 X+ l' I6 q8 W. M: t. z
# n. H' s: A' T, w$ F1 V OrderedMulti2DGrid grid = space.getCurrentAgentSpace();. d- a" j$ X, e- Z
Iterator iterator = grid.getIteratorAt(x, y);8 f, O' P) M8 ?& x
SexAgent ag1 = null;
& h' y; f8 Y: s: J+ m/ [& J h( Z SexAgent [] potenAgent = new SexAgent[20];
9 ?2 e. u- N# ]) [7 r3 A int goodNumber = 0;
7 C Y$ t8 o8 M while(iterator.hasNext()){
+ F3 ~7 S& T& a s System.out.println("XXXXXXXXXXXXXXXXXXXXX");+ j7 O& C3 E; {
ag1 = (SexAgent)iterator.next();
' j: K8 k/ f0 c/ k/ z) t* ~3 q if((ag1.sex == FEMALE)
" M9 |- W: m1 P% r% Q6 P$ D5 c &&(!ag1.isCoupled())){
. p9 |) Z. L! j5 i# Z% w System.out.println("YYYYYYYYYYYYYYYYYYYY");1 V x3 H! \; d7 |1 B' \* [
potenAgent[goodNumber] = ag1;5 Q5 u5 i, J2 H- R! `9 }1 a
goodNumber ++;# x( ^7 r# ~$ |% S6 w8 @) O
}
! D1 S( E# K( j% O- c }0 \; J/ a" ?; ~
2 L( B, X( N% y; n: ~
if(goodNumber >0){
/ W! V" i, J9 a. M* Z: i System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 3 a: `# w$ A4 K2 X! ^
Random rd1 = new Random();1 M; B+ }- r. W; X F1 w0 |
int select = rd1.nextInt(goodNumber);7 \; D9 ]! j2 o2 _- F& K
potentialParterner = potenAgent[select];
3 s* p9 L3 a( s# e& O3 ~$ [ value = true;5 U# D$ U8 g8 R4 k, {: L% R# M
}' L2 T7 ?% s6 }( O" G% K0 p
return value;* k+ l) Z( v) X: a
}' ~* d0 a: w$ _) e0 G6 F; x) W7 s% L
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|