|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。+ v9 w3 D2 D& |' @7 r% B) y* [$ _
private boolean findPotentialPartner(){
+ e; T6 }0 @4 L3 ]( W( c boolean value = false;
" I4 V1 W. g9 F, T' N& `' P0 u
, E9 W% m" a% J( c6 D' E OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
% _4 j' B: R9 }, |/ Z* o8 W2 W0 C! v" L Iterator iterator = grid.getIteratorAt(x, y);( N5 l1 s) l- v9 ]& k! ^# V
SexAgent ag1 = null;
6 M0 d$ @ _0 Z& O9 s! Y SexAgent [] potenAgent = new SexAgent[20];: p0 ^) N! _" ^& h9 ?9 L
int goodNumber = 0;
# f7 K: I+ O- Q: c( G while(iterator.hasNext()){/ j5 s- h: {. E
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
) u( p( n7 C/ }* s' v/ Q9 y; S ag1 = (SexAgent)iterator.next();
: \3 `. h- X; i c3 P7 h if((ag1.sex == FEMALE) ' s7 M' j, \/ Y) ]6 H
&&(!ag1.isCoupled())){( ~& @* P% Q5 m
System.out.println("YYYYYYYYYYYYYYYYYYYY");! M4 G9 W5 ~( r% V3 P, B' L- s
potenAgent[goodNumber] = ag1; V* S7 A) \4 M4 X
goodNumber ++;6 c! L- o2 g" P6 g
}
5 I3 x- i4 ^# C }
: j8 Z- D5 k ~) c4 b; I ) s; b, m% [. z) K
if(goodNumber >0){
6 c0 l; `4 f0 ?3 O% Q System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
0 v0 X, N! O n" \4 S' y8 g& I) t Random rd1 = new Random();9 Z0 E7 f9 _- l0 d
int select = rd1.nextInt(goodNumber);$ r2 F# d5 r' V. u
potentialParterner = potenAgent[select];
+ }8 q: p$ |. k4 n5 t value = true;4 u+ Y" t# B4 B, V8 J& _
}
# ~" v& Y/ s2 \. H. U return value;
: V1 I+ e4 N9 e. ?& o }
. M9 @' j6 o: e) l2 n7 N" ~始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|