|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。: Z6 u% ? b0 @' G6 i- ~
private boolean findPotentialPartner(){8 ^& w; u4 _ c
boolean value = false;1 T) ^5 {: z5 x' B+ R5 A6 i3 D5 d
& p; \; j9 K6 B! x) u g
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
) u+ r8 X7 n7 X3 y1 g- X Iterator iterator = grid.getIteratorAt(x, y);
$ S& m' u6 z1 q* A+ i) s2 f, C SexAgent ag1 = null; . C0 v4 O1 N0 k& a
SexAgent [] potenAgent = new SexAgent[20];
' M( [ \( x3 j) k& b/ r! @ int goodNumber = 0;. I6 G) w8 C( f. t% K9 ?& x! ?1 m
while(iterator.hasNext()){
! c# @+ b7 P3 w9 h4 l, o$ ^ System.out.println("XXXXXXXXXXXXXXXXXXXXX");
) a$ q* f. _5 t4 P. A+ t9 p0 ^ ag1 = (SexAgent)iterator.next();
, U7 D8 U! J8 g* l, m4 B if((ag1.sex == FEMALE) ) Z k1 u& b$ \" ]
&&(!ag1.isCoupled())){ Q! q1 e% I j' ^ y: Y# I
System.out.println("YYYYYYYYYYYYYYYYYYYY");' u1 ~) }. C8 S$ J
potenAgent[goodNumber] = ag1; s0 y1 E2 ~1 N3 P/ N" q
goodNumber ++;9 H% y: m5 m# j, B7 I& e
}
. r5 _* m) z0 p7 _ }
/ c v9 V! `# }6 ^, ~ $ D" ], c @8 O2 [
if(goodNumber >0){
9 F i8 p6 S6 H1 X. V* F System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
' ?( ]% d' n, u2 n Random rd1 = new Random();1 [' B" R K4 B6 s: K
int select = rd1.nextInt(goodNumber);
) N0 x6 N3 `3 T2 D potentialParterner = potenAgent[select];
9 S* s9 j8 \7 w6 b. \8 [ value = true;! U6 b" g. {; f1 b
}
L5 _4 W& ^. c$ K; u return value;2 B# R0 F/ E- F* \) a
}, ^! X! o. z' I C* ]3 q
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|