|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。7 S% ~% i0 h* z4 t
private boolean findPotentialPartner(){
9 ?7 C4 Y0 K1 R; T, {3 a boolean value = false;
. C3 y4 k, B4 A/ I5 u5 s& m 1 u0 O( v* H2 x( ~, v9 \, k# v
OrderedMulti2DGrid grid = space.getCurrentAgentSpace(); l: y9 U* P9 y4 I! ~
Iterator iterator = grid.getIteratorAt(x, y);
. l/ \, i! D" B; ?9 J" ^6 Q0 U; R5 V- v SexAgent ag1 = null;
4 l. I6 R3 ^; b9 Y4 G, \ SexAgent [] potenAgent = new SexAgent[20];
: U. h4 o z( D g6 F/ r5 O) n int goodNumber = 0;
: y% C8 Q: Y% ] e4 u/ U while(iterator.hasNext()){
" i. i) x; @- }/ G+ I2 W! n System.out.println("XXXXXXXXXXXXXXXXXXXXX");
$ O- J, f* p9 D4 f; E ag1 = (SexAgent)iterator.next();
/ J, p1 X$ _# I. a7 P l9 S2 s if((ag1.sex == FEMALE)
) T6 i% C( i, _: y8 \1 j9 Y &&(!ag1.isCoupled())){
+ O% O# {2 M" {7 h& d7 n1 g" B System.out.println("YYYYYYYYYYYYYYYYYYYY");# \$ }. b) ?) ^+ p
potenAgent[goodNumber] = ag1;
6 g8 j$ K: p7 w. A: L: i7 F9 t goodNumber ++;- _* X+ s" }; b: P
}4 b0 S$ X" d6 \; ~
}
6 H2 R6 Q& W+ `) d. {$ J! R; v
# e- e5 I% b, M$ D3 M0 o7 m0 M) Z5 R4 F* ? if(goodNumber >0){* i3 q, _, `% r9 @
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 1 Q* [# `: A; K/ D' E# G
Random rd1 = new Random();
8 L: a$ _8 ^0 z9 g int select = rd1.nextInt(goodNumber); J( v$ T: Z' ~3 W# X; c
potentialParterner = potenAgent[select];0 p% W, A, z( ^5 y) Z
value = true;3 T& ]# d" F. g+ B
}/ ~! `6 ?9 ]4 M% x8 v
return value;2 O! U; f u+ S e$ Z7 M6 g
}3 s1 t2 V0 C, \/ @# ~& a
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|