|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
" S2 m6 V$ O, j6 m$ P8 a private boolean findPotentialPartner(){
3 ^8 t& M, [. I* j8 U boolean value = false;+ ~# U3 A- U0 ]" P- u: U' s% W
, W& b* q6 o- S M1 t: ~* ?
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();6 k6 |( F( G/ g( F
Iterator iterator = grid.getIteratorAt(x, y);
- q$ B( d' r1 D) C, C SexAgent ag1 = null; ; L Y$ l/ Z3 G( n6 Z' _
SexAgent [] potenAgent = new SexAgent[20];
+ w% ^8 z0 q, r+ x' a, p+ p int goodNumber = 0;5 V! }9 U: z$ \9 o- W3 T/ h
while(iterator.hasNext()){
/ W; \( X+ A' @# o1 N6 Z System.out.println("XXXXXXXXXXXXXXXXXXXXX");
$ G( ]+ a5 {+ |2 S- \ ag1 = (SexAgent)iterator.next();
+ T* i: U( n+ q" b, s$ E% { if((ag1.sex == FEMALE)
: S: ]; D; L" q" [0 y &&(!ag1.isCoupled())){
' H( A+ Y( c9 \ X4 \5 R$ v- b+ x+ U6 q System.out.println("YYYYYYYYYYYYYYYYYYYY");3 N, H* L: j9 n) u- D
potenAgent[goodNumber] = ag1;! V0 ^' u" A4 O1 c. t8 N5 Z
goodNumber ++;
1 G( S! _, o, z# z8 E5 J$ c } d% n$ M2 x9 B' r- _$ F/ p
}
! Y& I5 z# {( t0 ]. |; N8 I # x$ N3 p2 {4 p6 W! h3 U+ x& r8 M
if(goodNumber >0){! r& x7 u8 W S+ I; i* l5 E/ Z8 w
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
4 U* r, O$ X' r; {, P" F; I Random rd1 = new Random();
3 \6 C8 r7 c `) N8 ]+ h int select = rd1.nextInt(goodNumber);8 y& k; k( ~- Q
potentialParterner = potenAgent[select];
' I, X4 G" x& \. W7 a value = true;
9 o: [2 ?; `5 t0 H }4 x+ P& J; w1 u, G5 _5 `
return value;. I9 m/ e1 y$ h: c+ s4 m0 E- d/ f
}8 V$ L. W! F( {- |$ i8 P
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|