|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。2 v: P) t2 O2 R
private boolean findPotentialPartner(){ M1 ~ K/ ]7 ~: A; ~
boolean value = false;
5 d+ N3 C( F; V) P) p ^2 L/ a
+ O6 g& _2 ]6 D. r5 A( S OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
( d& _4 [5 u& s* g, o Iterator iterator = grid.getIteratorAt(x, y);( h8 y+ g/ k' [* s
SexAgent ag1 = null; ( B1 m* K+ i0 W5 B
SexAgent [] potenAgent = new SexAgent[20];
0 z0 N) v5 w7 q& _9 V* y1 Z int goodNumber = 0;
- c2 p* ?6 M% ?) S3 H) a while(iterator.hasNext()){5 m% j: V: q* u( C; ^) f
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
0 S4 o& n3 ?9 f, p0 X ag1 = (SexAgent)iterator.next();# h2 T2 s) c. m6 T
if((ag1.sex == FEMALE)
3 B4 C# G9 }5 k3 o) A &&(!ag1.isCoupled())){
5 y" B! k! m3 O7 a0 V System.out.println("YYYYYYYYYYYYYYYYYYYY");( n* }3 l! f2 w0 u& d* w6 X( V+ o
potenAgent[goodNumber] = ag1;, H$ G4 B+ p% \2 k6 w! I# i
goodNumber ++;' z: b3 ?3 K/ V0 w& [$ k4 b5 S" y
}% K( |# s1 W& v4 _. A, N
}: V( ]1 e3 x% d8 R
, I+ t, p( |* B6 X if(goodNumber >0){
/ {. q$ ~4 g" @* v7 c% x System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); k$ H3 f7 P+ N$ h6 J" R. L( n
Random rd1 = new Random();6 E7 c9 k8 F( Q2 {% D1 a9 r
int select = rd1.nextInt(goodNumber);
* n1 T! l) B9 _ potentialParterner = potenAgent[select];
6 a: j- x1 _0 |9 h5 Z* o+ { value = true;
% K: z' @6 R2 e$ ] }
5 ?2 }: _4 k! G; m8 z6 I/ l( g9 b( \ return value;
& A$ @# U& w& k* ^6 Y7 T/ m n. M' j }
- _7 B+ q4 a0 d2 h1 V9 h) U始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|