|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。- h+ a" D# x8 p% f( k
private boolean findPotentialPartner(){' U/ r$ _, s5 b O0 I, H7 D6 d
boolean value = false;2 X9 l f" @5 T$ {* m
9 A& l: t( \: M- W; Z( E, Z: _
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
n7 S; X' } b' \! ~ Iterator iterator = grid.getIteratorAt(x, y);2 p( w+ n! y$ a& j
SexAgent ag1 = null;
( r7 E/ U! @! Q/ k SexAgent [] potenAgent = new SexAgent[20];
0 u3 q3 v% |7 O8 x& X; M int goodNumber = 0;
% }! z: z& m2 D; r* X7 a: b while(iterator.hasNext()){
8 Z4 D+ M7 ^' D/ L1 q System.out.println("XXXXXXXXXXXXXXXXXXXXX");" ?6 a& E( s- g2 W
ag1 = (SexAgent)iterator.next();9 N* e% [+ ?1 T6 f/ ?9 q
if((ag1.sex == FEMALE)
# u9 S, c7 j* @' y* ^3 | &&(!ag1.isCoupled())){
) d( [4 A7 [) H4 N5 x/ J System.out.println("YYYYYYYYYYYYYYYYYYYY");
7 Y; Y4 U* L7 m4 ] potenAgent[goodNumber] = ag1;
: y& ^5 T; P* B3 R% T goodNumber ++;" U( o) S# ?/ N s# e5 d J
}) U# |! D6 r) X- M3 x! M
}
- V3 @ I" e: e- P) i5 p. D) J5 Y & m3 Y8 R+ c+ v4 D1 N
if(goodNumber >0){
" v1 d7 v/ N2 c8 d System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
! M; r" N d4 L r' ~. Z$ m! _ Random rd1 = new Random();
# _3 Q9 D' x( H$ X5 r int select = rd1.nextInt(goodNumber);
! {1 c& D& i' R4 q potentialParterner = potenAgent[select];5 C: o1 [4 Q3 w& u. L' f
value = true;
! C' _; m: a* H1 I* k }
" H W& w5 U' M return value;; m: z( g" i. v8 \9 B
}. y8 f1 ^1 p- u
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|