|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
. m: T4 r. C1 U) H0 x private boolean findPotentialPartner(){
" n: F- E8 j! K8 M* {( _ boolean value = false;
. D# H9 H' t/ i9 q! J ! @, L1 Q- X, }1 T1 c7 ]
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
0 B0 P$ |8 f# M3 M6 z" | Iterator iterator = grid.getIteratorAt(x, y);- F. Q; a! L6 R# k9 z5 |
SexAgent ag1 = null;
& A! y( S3 o% g8 T3 D SexAgent [] potenAgent = new SexAgent[20];' T( c$ c" F, y( M
int goodNumber = 0;& d3 x/ Y2 v `4 W0 B/ Q
while(iterator.hasNext()){
8 o/ J# n7 @2 Q. @9 v System.out.println("XXXXXXXXXXXXXXXXXXXXX");( o1 D7 {4 F5 l3 ]6 m' [ n$ b
ag1 = (SexAgent)iterator.next();3 P0 N Y( d& I* q* i
if((ag1.sex == FEMALE) ; G9 y3 X( M2 |0 l1 y, w
&&(!ag1.isCoupled())){4 v. _9 i0 D# ~- @7 f" E
System.out.println("YYYYYYYYYYYYYYYYYYYY");
9 K( {! r; s% k" q9 m9 t! d potenAgent[goodNumber] = ag1;
( x P9 B) E4 s, p( R9 w0 s goodNumber ++;
" z/ T' N: t. U. h6 M }% Q& i, j9 B c
}
1 Z) a% a w8 {( e3 R I 4 }+ q( o: D' N, \6 T7 O
if(goodNumber >0){
0 G5 a4 {1 C+ ^! j; Y3 Z, V System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
. n% W3 y3 W3 x Random rd1 = new Random();
! v* p3 P8 q0 ^ J2 ?) R' S4 v- \ int select = rd1.nextInt(goodNumber);
0 V1 K4 F* M( }1 v potentialParterner = potenAgent[select];4 O0 w3 l! [3 Y& R& j$ o/ x5 e
value = true;1 B" o+ j% c1 t: o! c
}' f- ?1 u C7 c" l0 G0 [, c7 z. q. g; \
return value;9 ?4 @( Q' h, {- V
}) [7 j( n! h3 P- o) d
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|