|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
; a& t. i' m+ @ S" M2 d6 t6 Z* L private boolean findPotentialPartner(){
* l5 ~, _2 Z. Z boolean value = false;5 s* J4 I5 |4 |( [* ]
4 k* {2 y! [# i" W0 [2 } OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
) p# r" w% L$ z2 A* _- E Iterator iterator = grid.getIteratorAt(x, y);
! _5 u3 S1 [0 O; D* c SexAgent ag1 = null;
8 k" Q5 Y4 Y, e" O SexAgent [] potenAgent = new SexAgent[20];( k" V0 @: i. i3 Y
int goodNumber = 0;
$ o& T6 J& e W6 {8 c9 ?/ L while(iterator.hasNext()){9 d7 Z7 I* l4 ]6 H$ {# ?' J5 O
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
) n! s0 l" v3 c) W3 \6 m ag1 = (SexAgent)iterator.next();, h# s. x, {7 l* t; B5 h
if((ag1.sex == FEMALE) 8 o4 N; b0 d# B' p
&&(!ag1.isCoupled())){6 \7 P& f/ u% ?' N
System.out.println("YYYYYYYYYYYYYYYYYYYY");
' N3 @% m& B7 e( K$ B7 a7 m potenAgent[goodNumber] = ag1;& B! Q5 ], H1 B) ]1 |2 Z
goodNumber ++;9 c$ v1 f' [5 \+ k
}* \0 M) p, R# F% O6 U( T: I3 I
}
7 C2 h% J" [* \4 @, G* I [/ k 7 ?3 ~/ p) f3 W. k
if(goodNumber >0){
$ P0 u" t e9 J1 n System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
/ w1 |9 q4 s8 d/ s% l Random rd1 = new Random();
" B; |% g- B% C7 E; f8 D t; y int select = rd1.nextInt(goodNumber);7 X# x. A0 M7 `- k4 x8 y) k# j
potentialParterner = potenAgent[select];
, O% h# h2 f; Y& O/ a value = true;
2 |: j" Y% f0 D/ e }
0 p- z5 j3 M( T, p return value;/ _2 N' T5 A* K G
}/ C! \/ y& L+ T. U/ v
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|