|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
* \. ]/ F7 p0 V; F' d) f" O# I2 k# w! p private boolean findPotentialPartner(){
+ Q. x- M- z! ? boolean value = false;
* O! B) @# \. A/ |8 Y ~
& M9 g [4 S3 q: y+ ^ OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
6 s& p" A1 d' E. C; n Iterator iterator = grid.getIteratorAt(x, y);
' l. ?+ I5 R' K+ V1 U: i) J SexAgent ag1 = null; $ M( J3 V' Z) u9 }, |9 g/ A: ~
SexAgent [] potenAgent = new SexAgent[20];4 I* y$ R! I% H: n! S! p; [1 r, }' S
int goodNumber = 0;
( s9 E3 z; }; {+ R while(iterator.hasNext()){
; @. T g6 m: `% [9 @) X0 A- X System.out.println("XXXXXXXXXXXXXXXXXXXXX");
8 N% ~- w4 {4 y ag1 = (SexAgent)iterator.next();/ l1 i5 A& U! y( b
if((ag1.sex == FEMALE)
( o% [& O4 ?! T; o3 j. [ &&(!ag1.isCoupled())){
' \) n7 a) R8 m System.out.println("YYYYYYYYYYYYYYYYYYYY");
& A: n; u5 V0 I) m: A) Q% f potenAgent[goodNumber] = ag1;) a3 s- h2 h2 b! u2 u# x
goodNumber ++;
# U7 D& ~5 T$ _! ~ }" |0 u: B" N6 c2 E
}
3 I5 R6 A+ R# {6 p8 F5 e
3 d# b: T1 O0 Y- k2 X# ^* M" h if(goodNumber >0){6 R* k; g. E, R7 y6 P
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
U* _1 z: |2 y Random rd1 = new Random();
0 \$ }9 s* l, @ int select = rd1.nextInt(goodNumber);, S* w- y& a7 Y
potentialParterner = potenAgent[select];! h+ G. V$ \& t) `8 L( K
value = true;+ V. J. Y [3 x a3 {2 {/ w
}
$ M7 f: Z. C1 ]# K6 E) W0 {3 U return value;3 J& ~7 a: ~3 z4 X* }- ]; N9 z
}- l2 @* L3 P1 u5 H7 G5 b
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|