|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。2 a8 f0 B# g7 _
private boolean findPotentialPartner(){% v0 _8 V# F7 ], ^( u) N! z
boolean value = false;* G+ i8 Y3 U/ _2 n) i% Q, p+ Z
- o8 X% u9 R! h4 w& Q. y! h1 T, A OrderedMulti2DGrid grid = space.getCurrentAgentSpace();2 Q* i4 i$ M2 @6 G t
Iterator iterator = grid.getIteratorAt(x, y);
/ G. z3 v2 l5 [9 z5 ]0 C R SexAgent ag1 = null; . s* D$ k& _/ |- `. A4 v
SexAgent [] potenAgent = new SexAgent[20];
' S( N/ K7 k, C! q! M' N: v! D int goodNumber = 0;" x C9 Y9 W- e" H5 U
while(iterator.hasNext()){! n6 B1 s8 P ~& P) o) a; k/ p# R5 m" s
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
7 p6 f7 c+ ?3 u( p( g ag1 = (SexAgent)iterator.next();
$ n/ R4 O* V! O. m; n* n. C if((ag1.sex == FEMALE)
. v5 ? d/ |+ g0 j: V5 t# M7 J3 t &&(!ag1.isCoupled())){4 G' R# H4 K# N6 \/ n n
System.out.println("YYYYYYYYYYYYYYYYYYYY");& [6 o, t! @" y- }5 N, r5 o
potenAgent[goodNumber] = ag1;! h1 t+ X% e. o8 T: z8 Y5 }% ^
goodNumber ++;
! a" ]$ r' q* F/ y" d2 K! }3 G }' b# w4 b6 e( r( U* N1 `* V
}
9 f: P/ W) S$ A" m7 d3 N* x
: Q4 @9 [/ ` |4 Y3 n if(goodNumber >0){) |& H3 Q5 e6 J. f0 R
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); * m3 O: ?) n d8 T
Random rd1 = new Random();7 D0 N8 L+ P: P5 K7 o' S
int select = rd1.nextInt(goodNumber);
9 y+ a4 {: ^$ h& ?' U potentialParterner = potenAgent[select];4 u9 C" m9 t% r' ]' b$ |
value = true;+ t9 P3 h# A, y
}/ u6 |, S2 p$ {# N; [6 y* F
return value;/ q& H" X" |( a% m0 @
}- e, A& b) A! b, L# o2 S
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|