|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。8 C! z! K# R0 t5 h$ e$ H I0 g3 }) E
private boolean findPotentialPartner(){
+ q7 K: q x* n; X3 d boolean value = false;# Z' ]/ ^. c% H# N0 O
5 i& p* R& X5 W' H. K' Q, J" Q OrderedMulti2DGrid grid = space.getCurrentAgentSpace();" r, }) U% | N$ d" x
Iterator iterator = grid.getIteratorAt(x, y);- r" l: i" w# d0 ?/ w* {
SexAgent ag1 = null; 0 B/ M0 T9 _8 |) @4 N
SexAgent [] potenAgent = new SexAgent[20];
# ?# o& Y m6 h" q' n$ ~ int goodNumber = 0;/ P( j- U* C1 X2 n
while(iterator.hasNext()){
5 a2 N, x$ j3 @. @ System.out.println("XXXXXXXXXXXXXXXXXXXXX");, v5 @* Y) A) b9 r4 b3 Q' [/ j- [9 I
ag1 = (SexAgent)iterator.next();- Y& x$ I. v: _* I( }- W
if((ag1.sex == FEMALE) 5 ]' @' Z1 O/ W4 |" x
&&(!ag1.isCoupled())){. r3 u: }( n( a0 `
System.out.println("YYYYYYYYYYYYYYYYYYYY");0 X0 Y$ ^" {% b3 i
potenAgent[goodNumber] = ag1;
) Z* J) M- v/ N" z% e goodNumber ++;$ Q' |1 _+ e; d
}
! T9 y) u. B5 J' s. m- o }- w3 r+ r# \$ P3 E& D/ a
$ x: Y8 d O9 ?& u+ a k if(goodNumber >0){
* G9 L3 I. m. | System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
( }# `4 t( Y. y, F- G8 C5 r Random rd1 = new Random();( G' v# U8 _" G& |- o5 i/ n
int select = rd1.nextInt(goodNumber);9 a& r% M0 p4 V$ _
potentialParterner = potenAgent[select];( i8 G$ j- J( ^
value = true;5 q% a8 J7 G4 i' U0 R: o( T, R9 O% |
}* r. }0 m) R! q. g( m( f$ {9 V
return value;
7 @2 Q7 j3 E8 } }! l! {( d# P% M
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|