|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
: e# }) X6 y3 M, b private boolean findPotentialPartner(){
8 B& A- b2 F- c; u+ k6 K$ W boolean value = false;
& H9 H3 p$ z% Z# E : F; `7 @6 q, N. Y2 U q
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
8 f& x+ A; S |1 c Iterator iterator = grid.getIteratorAt(x, y);1 x1 n/ }" t8 [7 T, I& j
SexAgent ag1 = null; . A0 K8 K) j; H: S# ~/ F9 k
SexAgent [] potenAgent = new SexAgent[20];$ {4 G' G6 |- D* i3 Y: w# H' @
int goodNumber = 0;
$ F9 H; H4 d9 W) o( P0 h while(iterator.hasNext()){) T5 D) g2 F+ K6 N
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
$ j0 I: Z9 u% E' E8 X ag1 = (SexAgent)iterator.next();
; ?0 u0 v0 y, R: {0 O0 h- ^% R if((ag1.sex == FEMALE)
/ {% H) v* K; f5 D5 W. n! b5 O &&(!ag1.isCoupled())){
+ Y' q2 d3 m5 T% U' W, ] System.out.println("YYYYYYYYYYYYYYYYYYYY");& e! W9 m3 d" b7 u
potenAgent[goodNumber] = ag1;
2 `5 @" K7 Y |% O goodNumber ++;) B5 `$ h& S' m
} q ?: ~6 c8 P* ?/ P9 d* Q
}& B# I4 x5 v- S2 H. O- ~) D) ^( p
; y+ C$ b6 h2 f$ t) J4 I2 r; G/ @% x5 i if(goodNumber >0){
6 b8 K4 r0 |& w g* }! n) T' k System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
/ K4 ^& f0 _. n1 \% i! q Random rd1 = new Random();
( _, @5 |* H4 b8 H& f int select = rd1.nextInt(goodNumber);
) t8 D% F2 m# G potentialParterner = potenAgent[select];
1 M- u/ C( q7 }. `4 U1 ? value = true;6 O& O. X! |6 }# v9 h
}
3 a# {# x) O2 v3 q return value;" }. [8 u! s1 o. V; c9 k4 Z/ `
}* j# K5 f/ ?8 v/ [ [, _* r
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|