|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
' P2 {; H7 E) l4 \2 W private boolean findPotentialPartner(){9 p9 S$ Z7 w g$ J+ e) K/ K
boolean value = false;: l8 {0 Q) l: L* c% O+ D
* d) g$ K5 I3 c& J; E8 @, Z) `( G OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
8 h# p, d5 x. p' K4 h1 E, o Iterator iterator = grid.getIteratorAt(x, y);
7 j. l* Y$ }5 Q4 `# Z7 o" f SexAgent ag1 = null;
$ `4 u h% l( y+ f3 m3 ~ SexAgent [] potenAgent = new SexAgent[20];
% J& J/ `9 \- \ int goodNumber = 0;. b: v' n+ m) L2 I
while(iterator.hasNext()){
- i4 X+ c2 M% c7 _4 v1 e System.out.println("XXXXXXXXXXXXXXXXXXXXX");
1 ?; B- b, W1 w! J8 g ag1 = (SexAgent)iterator.next();; ~5 _* g+ N, N7 w' T5 @9 ^) z
if((ag1.sex == FEMALE) 6 \0 `) }2 [6 E& ~8 n4 M
&&(!ag1.isCoupled())){0 m2 M% c! U, B% L! m8 I: E
System.out.println("YYYYYYYYYYYYYYYYYYYY");
! d/ \2 a! M- k0 T4 Z3 G potenAgent[goodNumber] = ag1;( H1 ~; W. f. M: Q( W
goodNumber ++;+ E2 f% ?4 ^3 z$ f& s; n" b7 R* Q8 B" ?5 Y
}
, a% s3 R9 ?, A7 w( H, _ }- Z& I7 U( x: g* d+ M3 X8 c
9 w* W7 Z6 V* ] if(goodNumber >0){1 t1 b m1 M- m: q- h$ O/ Q
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); - f( I& i3 ]" b
Random rd1 = new Random();
& R3 U& y& e* ~* s6 n. ^ int select = rd1.nextInt(goodNumber);7 _4 @! |% b$ J6 X1 c. N
potentialParterner = potenAgent[select];
1 x1 t- J2 n5 Y2 |2 _ value = true;
7 E1 V" e" E6 ~ }5 i$ E0 g. O# I- o' ?. {9 ]" N
return value;: ?# c, p4 n7 ~8 |4 Q
}
5 R# ] ~9 }2 `/ Y5 y' y始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|