|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。5 P( }" ^, E# z2 r
private boolean findPotentialPartner(){, S2 E$ {3 Y( w# i" q( @
boolean value = false;
! `* F- k# B+ [' p b+ T . j$ A5 W. N" ]9 B! ]* A
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();1 U- _2 m, o1 x* K
Iterator iterator = grid.getIteratorAt(x, y);
+ p9 G: Y* T3 _5 F4 f SexAgent ag1 = null;
* m# ?5 Z( o+ D. r. ]+ x SexAgent [] potenAgent = new SexAgent[20];6 p8 y! w# a6 p" ?7 t0 z
int goodNumber = 0;
" \/ e. N, \) m$ l9 v while(iterator.hasNext()){
9 D% I! v% |( ?0 E5 W( ~ System.out.println("XXXXXXXXXXXXXXXXXXXXX");' f$ w8 L; D* R( W$ t
ag1 = (SexAgent)iterator.next();
# D, x& [6 z: }7 O' F if((ag1.sex == FEMALE) : C+ l+ A1 u. G( C
&&(!ag1.isCoupled())){+ o9 {( Z! y* A* p
System.out.println("YYYYYYYYYYYYYYYYYYYY");6 K4 s3 R3 E% K6 x4 U
potenAgent[goodNumber] = ag1;' T+ i3 f& ]8 J+ Z* ^
goodNumber ++;
5 Y0 `0 o& L. ^$ } }
% u9 m' ?; Y, ?+ _( ^& z/ N& L$ L; X }
0 G3 k. @' W" }2 Q Y# R0 |( b6 C" x# r x9 H" D4 ?; Q$ ?8 F
if(goodNumber >0){
8 T5 Z/ ?# q7 ^( Z$ I, w System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
$ H' B: A- K6 P* L Random rd1 = new Random();9 F" c! ]" z6 Q: g/ k3 x( K5 J
int select = rd1.nextInt(goodNumber);
7 a t( ?( ~9 [& c- j potentialParterner = potenAgent[select];
2 e p% B% T0 ^' A* F9 c$ Q value = true;3 C3 Q6 P) {; E2 O, i
}
# K: E8 G9 H. z7 X# t$ a return value;
' z3 B& m9 Y2 u; _( c8 C$ v9 Y9 ] }* G1 b j9 X5 z2 m2 E
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|