|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。( Z5 i: O7 {1 A7 r& l' j3 l
private boolean findPotentialPartner(){
: D; O( \( P" A) n7 P boolean value = false;
) V( ?4 \& a; j" i; l7 T' N) S
, {0 u; X# `; J( |; f6 P+ c1 b OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
4 I. W& M# n8 |1 [% @ Iterator iterator = grid.getIteratorAt(x, y);
. Y, A$ Y1 S0 L# J SexAgent ag1 = null; 9 O& ]6 n+ y* R) u
SexAgent [] potenAgent = new SexAgent[20];
2 ~: X: B" N% k& _ int goodNumber = 0;+ Z8 m; |# o/ }% V+ Z# X
while(iterator.hasNext()){) \) L* t0 T" d' x2 ] D H
System.out.println("XXXXXXXXXXXXXXXXXXXXX");! q: o) C5 M0 d6 W
ag1 = (SexAgent)iterator.next();
% P ]1 O9 g0 T' k& S$ H8 i/ j, l( Z if((ag1.sex == FEMALE)
7 ~2 k' B% d9 e1 ~6 R& W2 U# J &&(!ag1.isCoupled())){% a6 X0 @; A- m* ^8 Y3 {
System.out.println("YYYYYYYYYYYYYYYYYYYY");
& z! Z3 q. y4 k* B9 y& J potenAgent[goodNumber] = ag1;9 n. n( I* g# \3 ^- k. y- i* H
goodNumber ++;1 u" {# C! U: @# C' L
}- r8 ^, u" s5 {2 S+ x) C& l
}4 U- Z9 w8 v' E. J0 A0 W; E, ~7 y
1 j1 r5 p5 H3 e if(goodNumber >0){8 \, S3 u- {; A- E3 p. K
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); # f" o1 b' a2 ^: b, }0 I
Random rd1 = new Random();( S0 Q, {5 |+ M+ z' o; l8 l
int select = rd1.nextInt(goodNumber);" e n# P1 j% I& w0 p9 ]! l
potentialParterner = potenAgent[select];" ]/ o1 n+ S( i2 o" P2 q
value = true;
, y( C9 v8 D# w# f6 F }9 W1 a" S; y+ B' S
return value;
# p8 M' |) F) h+ @7 a }
7 p! Q# |' @+ O始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|