|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
- r% ^. f; i4 C5 r private boolean findPotentialPartner(){
3 O7 o% w2 O- W, K& P. U boolean value = false;7 i, o2 A# J" l6 ^/ D1 D
! r! j) Y2 N8 [: P
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();4 o7 L) y& @+ e' r" }6 W
Iterator iterator = grid.getIteratorAt(x, y);& l# i$ x' I# U. n1 \6 z; F3 G- J8 Z v
SexAgent ag1 = null; . F$ S; m$ I1 {) M# W, m# g
SexAgent [] potenAgent = new SexAgent[20];
- H( i" t; w. y6 J Z# u$ N% g) j int goodNumber = 0;
7 E, e2 M7 \8 s$ e- p, a while(iterator.hasNext()){
2 c3 l) {6 ]7 L% w/ \ System.out.println("XXXXXXXXXXXXXXXXXXXXX");
/ Q2 Q6 W. \/ l! T$ y* W/ m ag1 = (SexAgent)iterator.next();1 _% G$ o/ D/ q9 k) F
if((ag1.sex == FEMALE) 6 x5 G: \ B. R. R3 b
&&(!ag1.isCoupled())){3 e8 r2 r5 T+ D0 {- A2 p& d
System.out.println("YYYYYYYYYYYYYYYYYYYY");
1 z R# h; _0 Q potenAgent[goodNumber] = ag1;
: b9 I d @4 W% E goodNumber ++;
' V8 g3 a1 j# R) a }
. V* G! I* i. ]/ @" n3 I! l# _ }
7 q/ h0 t3 _; ?' y2 Q) f% u4 J
$ E4 ~5 ]! D' w if(goodNumber >0){
$ W& c1 Q, q( X% d5 \6 T: J System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
1 x6 }; v4 Y6 f# F4 ?! ] Random rd1 = new Random();
' Z$ |/ c$ _8 z int select = rd1.nextInt(goodNumber);" F$ F& V) u: E" Q+ u
potentialParterner = potenAgent[select];
% D! q. @3 ]1 H5 U1 u4 K) ^ value = true;; m2 Q- Z: e0 z- D% A' B+ y7 J. J3 {
}& [5 \" A) e* l, S/ @+ w& g
return value;0 ?3 ? j6 K! L+ ^: K
}; C$ x: Y. ]7 \/ N
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|