|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。* _" i4 p- `' G
private boolean findPotentialPartner(){
. {2 O8 m2 `% q9 Y0 I boolean value = false;4 ]* R& }: @ l9 Y1 J
& e& a8 }1 P/ T1 @! { OrderedMulti2DGrid grid = space.getCurrentAgentSpace();9 {, B F0 G: U0 t3 E6 f
Iterator iterator = grid.getIteratorAt(x, y);
* W8 w$ |1 p* D- f SexAgent ag1 = null; : Y) o: S v. a" v
SexAgent [] potenAgent = new SexAgent[20];
) a" G: y- G( ? int goodNumber = 0;3 V( f& x, x5 W9 ?2 F: Z+ r
while(iterator.hasNext()){
$ [' i5 U( ]6 o H8 I5 f& n, q System.out.println("XXXXXXXXXXXXXXXXXXXXX");
$ N9 u$ d; z7 p X6 } ag1 = (SexAgent)iterator.next();
. R2 d, G1 L$ r if((ag1.sex == FEMALE)
0 x+ {& U H" t' F0 O &&(!ag1.isCoupled())){
9 q9 d, `- B- n: l System.out.println("YYYYYYYYYYYYYYYYYYYY");
# k1 G/ H1 Z. \ potenAgent[goodNumber] = ag1;
* n) y/ @! |5 ?9 \" x goodNumber ++;
! h: c! ~" c/ _" |7 x* D1 Z/ L4 d }0 n9 Q( \8 O; I3 m' n' r/ p- Z
}
+ H) R9 @, R! v3 c9 [' @
9 J' k* O* L( x4 g7 m( \* d if(goodNumber >0){- p& \ y- i1 ^6 H2 c
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
. C+ o! Y% a) ^' l Random rd1 = new Random();5 {; w y7 r8 U. Y6 w" l; z
int select = rd1.nextInt(goodNumber);
% t' F- o5 e' M) d potentialParterner = potenAgent[select];
0 \$ m7 g% ]6 M value = true;+ O/ Z! P- Y3 p1 i. H
}
0 j/ S7 G. I! \ j* I return value;' r' H0 b, W4 r) H: L/ _( |0 H
}
_- N7 G/ g( i( s5 Y# u' L始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|