|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
- M$ U6 U1 T/ k private boolean findPotentialPartner(){
1 ~- `$ M/ U/ r: V" J1 H; N8 i boolean value = false;( N& M- Q) V7 F1 z4 c
. \3 O3 V$ i7 M5 f, B( |: i* w- R
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
D' h& c; I" G; J$ r Iterator iterator = grid.getIteratorAt(x, y);
6 i$ ~4 |' f, p1 |3 }" H& [( ?2 }7 m! u SexAgent ag1 = null;
# U8 S' w( Z1 E' m3 x6 O' P) F% P9 y SexAgent [] potenAgent = new SexAgent[20];
$ [1 ?0 a( W: M" W, D- ?2 E) d int goodNumber = 0;6 N, [) h# g( L' t4 L) _
while(iterator.hasNext()){% s: h6 \+ F% V/ |( \
System.out.println("XXXXXXXXXXXXXXXXXXXXX");- T- C: p! z$ {6 V; w
ag1 = (SexAgent)iterator.next();9 n& `. J6 K3 s. V
if((ag1.sex == FEMALE)
! @7 r& E. x" p' j &&(!ag1.isCoupled())){/ M' n6 R: e4 W* G: K" Z! j
System.out.println("YYYYYYYYYYYYYYYYYYYY");* B9 v( {5 c& x u% R
potenAgent[goodNumber] = ag1;; `# a5 X( B! M& M6 `/ L
goodNumber ++;
" W2 f! U8 ]; U0 `8 C z }
* Z& J$ C3 d) } }5 ?7 {: P4 ]+ _) w' W0 R
' b! l! {0 _+ r4 h* [7 V
if(goodNumber >0){
# h6 `) E4 ~+ t( P) ` System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
3 n$ i2 B6 t% h; h' T. H, Y- ?' Z Random rd1 = new Random();1 t' X& F+ e0 s" z3 X% W
int select = rd1.nextInt(goodNumber);
% h1 m) T" y U potentialParterner = potenAgent[select];
) y' s# K( G$ H6 I value = true;, z r+ N' U- q" Q" H. Q1 Z9 |
}9 H% |$ g, ` P- @: s+ p* e
return value;
9 t5 ?- Y# l1 f/ ^; M }
' r) m$ o, S5 L& ?+ d始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|