|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。1 u1 A. m) n1 p1 I. v
private boolean findPotentialPartner(){) e/ h8 [# O- e# D T( ~: k
boolean value = false;, F: x7 w$ H o+ j" Q8 V
6 y5 h& s6 b8 ^7 {% g& s3 J
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
- g# q3 q3 `3 k$ d, K( v Iterator iterator = grid.getIteratorAt(x, y);' F! l1 G1 a( t) {
SexAgent ag1 = null;
3 z6 y5 Z$ P0 D$ |& q( _" m9 P- C SexAgent [] potenAgent = new SexAgent[20];
$ z8 H9 v9 T* }8 r. k0 [: t6 n int goodNumber = 0;6 A K. X8 R6 H+ k# B) {
while(iterator.hasNext()){8 K0 e" B& M% k7 n+ [3 q& n) c! |9 P
System.out.println("XXXXXXXXXXXXXXXXXXXXX");" E* w$ T6 @$ R; h
ag1 = (SexAgent)iterator.next();
6 _5 g0 P" D6 R% t' ?% S/ m if((ag1.sex == FEMALE) 6 D. k$ _4 Z* ]8 c1 n* J# u. c
&&(!ag1.isCoupled())){
4 f' ^9 I$ c( O. l. A System.out.println("YYYYYYYYYYYYYYYYYYYY");$ @2 ?- u( i+ I% F7 U, n
potenAgent[goodNumber] = ag1;
5 k: V0 ]: Q5 @& o; S0 I( ^- y goodNumber ++;
( C" R: E c' ?9 X* C5 _ }& M# a# ^* V$ J. ~' S
}
% M( t9 g, h( j0 H: O/ O . k) I b$ L y- E# D4 w5 A9 W
if(goodNumber >0){
$ ]4 R2 l! {7 o! F% S# C0 p# L System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
6 p" v0 e3 y, T' u- a5 b Random rd1 = new Random();" w. S' A' a: d
int select = rd1.nextInt(goodNumber);
% c3 `- f: _6 K1 K# s potentialParterner = potenAgent[select];
% F$ Q% s9 ~( L- Y; L" q* x; | value = true;
2 r! J' \) x& q" {, n }, e" p/ `- b. i8 o( f
return value;( p" t1 W6 {' D! g; X7 p
}, f; x. X: c" f' ], k
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|