|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
3 z' u/ U: d- j" B9 N$ N/ f0 S private boolean findPotentialPartner(){. F- E0 Z3 o' K( c( L; G2 ?' Q
boolean value = false;7 x/ V8 i5 _, h+ s( I, C
0 b2 `7 L7 }. u$ m& J+ J OrderedMulti2DGrid grid = space.getCurrentAgentSpace();' H; ~/ B' s6 w% O8 |( e
Iterator iterator = grid.getIteratorAt(x, y);& M# I0 R+ c: q h7 b6 {9 M$ [
SexAgent ag1 = null; " J V' d, i7 P4 s
SexAgent [] potenAgent = new SexAgent[20];8 K4 l8 ~ J# E$ i+ Z5 b
int goodNumber = 0;; s5 q) I D) F" r& r, p/ C
while(iterator.hasNext()){$ z' d1 }9 B. a% F' d3 z
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
' A! v5 [9 M2 s ag1 = (SexAgent)iterator.next();
- I- `" l4 w0 S& f2 L" ?" T% \ if((ag1.sex == FEMALE) ' O! w3 l8 y6 I- r' ]
&&(!ag1.isCoupled())){3 o2 f" o7 {- g6 L$ f: ~
System.out.println("YYYYYYYYYYYYYYYYYYYY");* O: A( e. }+ ]2 j# F0 f
potenAgent[goodNumber] = ag1;
8 ]8 Q! ~- m8 i# x* Z- Q; o) w) _: @$ g goodNumber ++;
Q# a* n5 V# _: Q }0 I3 l0 V+ v4 d0 @
}
# C8 ~: V' p3 b! h3 c
r) N2 p' s6 v0 `0 V- K if(goodNumber >0){( j/ G" }- o$ U! \( U3 p
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
+ e, T, |+ O M) ~2 y8 X1 ]/ @7 | Random rd1 = new Random();
! t: c: K j# w- I+ y$ ?, ` int select = rd1.nextInt(goodNumber);
: Y: Y2 Q. P1 X- O* A* E9 C9 i- G potentialParterner = potenAgent[select];3 W* b$ ?1 V, H! Q8 l9 Q: X
value = true;: c3 @( m: z& l3 u
}
8 G. j- k1 B I- T return value;2 b0 V6 x! M# s2 l3 s1 K) t
}. v8 [3 D l; Z# H
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|