|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。1 r+ I: G+ j$ n
private boolean findPotentialPartner(){) r' X! G/ J! W% V
boolean value = false;) f _# _3 b$ P+ G3 o- T, J4 P
8 f1 v. `. @3 Q- [1 F
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
2 u! w9 o% H' F" A6 Z5 _ Iterator iterator = grid.getIteratorAt(x, y);
0 z @ K* {- W. Z& r SexAgent ag1 = null;
; N+ n' N- ` R1 l4 A SexAgent [] potenAgent = new SexAgent[20]; a* k1 `- X" e+ d8 ?& ^8 X
int goodNumber = 0;
. _. x$ v: Q) ]2 H8 ?6 _ while(iterator.hasNext()){
5 U7 P* y. |* L' P3 ~ B System.out.println("XXXXXXXXXXXXXXXXXXXXX");8 ~ I( s7 M1 S/ M# B
ag1 = (SexAgent)iterator.next();
; A( A1 U: p3 z8 k6 S" Y if((ag1.sex == FEMALE) : u9 E$ a5 h! s. y. o6 z
&&(!ag1.isCoupled())){* G; {% Q- F! L2 i3 z0 t2 A7 h
System.out.println("YYYYYYYYYYYYYYYYYYYY");
' x; [1 `! e' Z% y potenAgent[goodNumber] = ag1;
D+ ^2 O' f6 k; M goodNumber ++;
% ^; \6 q, n0 v4 \( f( B }
7 T. F& P5 U1 {8 ~2 N/ E; Q }
+ [# y0 _* s0 A' R 5 {0 e# B% X b8 n$ N: x
if(goodNumber >0){
, G2 d1 Z0 g: h System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
9 X! H# a, S) v( }0 o Random rd1 = new Random();* x( n) F% Y4 ~- o: [
int select = rd1.nextInt(goodNumber);
% [% u4 j. a! ?( T potentialParterner = potenAgent[select];3 F; h+ r' p, B/ |( o0 P8 S
value = true;' q% N. v6 p: N
}
0 ]4 U9 G5 G( G) N" b7 s# X return value;
8 ~2 ?$ z' k* j4 p }
8 i" u8 T" q; O+ F6 U+ ~; G始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|