|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。( ~4 H9 O6 Z+ n" M8 y: R* q
private boolean findPotentialPartner(){
' L" H5 r9 g$ ]0 [ boolean value = false;
4 a. N8 }- L, i" W4 D' j % P# P' f; i7 l+ i
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();- o" U7 {4 Y( q) r# W
Iterator iterator = grid.getIteratorAt(x, y);' I6 s5 }( Q* e! V* I: _" H
SexAgent ag1 = null;
. X% u- y$ _/ h SexAgent [] potenAgent = new SexAgent[20];/ A, p' d+ H+ y0 b) n
int goodNumber = 0;2 y& R% U' V$ B2 j' l" S1 b
while(iterator.hasNext()){- s7 G8 j3 r" r8 ?% H
System.out.println("XXXXXXXXXXXXXXXXXXXXX");, D! Z H4 a* I8 G& E; j. }$ S- l. F
ag1 = (SexAgent)iterator.next();
' R! C4 P6 e- q6 C if((ag1.sex == FEMALE)
* m( F3 E7 D/ {+ T; e &&(!ag1.isCoupled())){
! Z u9 ]$ ]+ ~* q System.out.println("YYYYYYYYYYYYYYYYYYYY");# I' t3 e! U; z* }. g4 |% |+ \
potenAgent[goodNumber] = ag1;
+ `- Y4 l7 Q( i! G3 f goodNumber ++;- J$ w8 n5 S/ p2 T! ?
}
: P$ q! @7 y- v: Y' Q r }
! p) B; x# B# ~% }: x# [- `/ u
+ Z- w! a+ d( f5 d% p if(goodNumber >0){" v* g$ l) G- _
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
3 G$ Z/ i3 h& F$ @4 k- X6 j Random rd1 = new Random();
$ ^( M8 H' s" Q1 E, y" @ int select = rd1.nextInt(goodNumber);
- i8 |+ k# X7 k4 G U U0 y, m$ A potentialParterner = potenAgent[select];
( l _0 T- @, t: ?, [. J* a7 X0 ^ value = true;
& ~8 R; r* h) t% y5 ^! _6 N' n( ] }
' N9 M- ^& @2 [ ~. H1 V& S& u return value;! @3 o& N7 ]. }$ E
}+ @* W7 D4 r! e r x7 q# L
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|