|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
. s2 g* n4 |9 K @2 x& i. j/ P6 o private boolean findPotentialPartner(){
, M% i1 M. u8 X6 z boolean value = false;
( O8 D& l9 L+ F% L 0 Z+ Z* w1 z* P7 R9 W3 g1 b$ V
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();9 K V3 @) Z; a8 |
Iterator iterator = grid.getIteratorAt(x, y);# B% A/ g' [& ~% k# w, G+ q; O' V
SexAgent ag1 = null;
2 C( I, m: B3 v/ p3 F6 ^ SexAgent [] potenAgent = new SexAgent[20];
! e5 Z4 r; P% l! S4 J int goodNumber = 0;
]0 ?# q, }4 b( b+ W while(iterator.hasNext()){, W: q d$ S5 x2 m8 J1 h i! {& i
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
0 J) E, C$ b: b$ J ag1 = (SexAgent)iterator.next();. e- r. V1 u' U1 }
if((ag1.sex == FEMALE) 6 }/ j; V7 y* d+ {. h9 k5 D
&&(!ag1.isCoupled())){. g k3 y$ R* ]* r
System.out.println("YYYYYYYYYYYYYYYYYYYY");
1 s. {8 k) o7 O potenAgent[goodNumber] = ag1;4 B. P3 @7 v7 G4 h: T; p% u
goodNumber ++;; A& H8 _, d3 `3 L- E( V- s3 a, G/ s
}( I# l t/ S- T1 X" _
}( x1 F6 a. X; K7 O- ?7 q/ u
0 }' i1 |0 g! I X! p2 j if(goodNumber >0){' J4 m/ A5 [7 v/ V0 K
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ) _ O& n8 R5 N1 \5 ^4 p D2 d- j
Random rd1 = new Random();
, Y; Q2 t4 B" ~& ~/ `' v) u int select = rd1.nextInt(goodNumber);
; a. v+ @/ o( \/ ] potentialParterner = potenAgent[select];; Z& b+ |" |+ D' D7 }9 d/ D
value = true;
/ G* [ y8 l H3 v* Z }) l" j4 `! Z# h, h+ }1 `
return value;$ s. i& j5 z! r* _( P- k" j1 l# c2 L
}8 }- d6 e! d9 `: v4 V q
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|