|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。+ @& H- B* E3 T% V l7 a
private boolean findPotentialPartner(){. J/ m& O+ }: f6 }; Z
boolean value = false;
; J, M3 O+ c, r0 q2 r& k9 \ ( Z) D& N0 N- I, R3 n# T
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
" Z/ U+ H5 w; W& H: }- j, }2 k* L Iterator iterator = grid.getIteratorAt(x, y);
# K7 p4 i8 A6 L( Q: d% [ SexAgent ag1 = null; & {. h2 D8 H' [: T% p
SexAgent [] potenAgent = new SexAgent[20];
: r0 [/ o/ n( R W( w int goodNumber = 0;
7 o) w6 s3 q' q* |4 P while(iterator.hasNext()){
* W% K# C: x) Q$ c6 P1 \ System.out.println("XXXXXXXXXXXXXXXXXXXXX");* z: M3 G; Y5 n% o
ag1 = (SexAgent)iterator.next();
O& S! W. M# ^' } if((ag1.sex == FEMALE)
6 V8 w3 G. y7 w h; ^ &&(!ag1.isCoupled())){
8 X1 A3 T& k: c9 a System.out.println("YYYYYYYYYYYYYYYYYYYY");6 F H! z( L% g* K7 F4 Q
potenAgent[goodNumber] = ag1;
, _# w% J ~; v/ D goodNumber ++;: G$ c2 U; V+ z& f, x+ ^
}% g4 A) K) K( `9 h- J4 c5 Z
}
% P: c4 u& M( k% q H4 O ! V4 A4 z( P' v; Y. q6 x0 O
if(goodNumber >0){
3 g: a6 H$ U# M6 w) R System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); : _: e% G; m( m. d- |
Random rd1 = new Random();
# h! s* Z9 ]7 t3 g$ }; T' S: _ int select = rd1.nextInt(goodNumber);
9 B0 H4 G4 y% l( o potentialParterner = potenAgent[select];
; |1 B* g1 T; M value = true;
4 U$ M d" Z9 [3 s7 m; w+ E, U }
7 H# I" D5 z. c return value;) `4 s9 {) F" S
}: D0 Q1 n! w3 Y3 ]
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|