最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。/ I& u0 h) t" }$ t
private boolean findPotentialPartner(){9 G. i5 m% X! l; h
boolean value = false;# a# z. U" p* {" o- O: g
1 U' i: ?5 A3 |# M OrderedMulti2DGrid grid = space.getCurrentAgentSpace();. u' c% {# E5 B9 d, _" Y: c) G
Iterator iterator = grid.getIteratorAt(x, y);+ ]' I$ N$ N+ T7 A- g: }+ T% N1 _
SexAgent ag1 = null; / ]5 p) D; f7 K( H SexAgent [] potenAgent = new SexAgent[20];/ k4 K. k4 e9 X+ `
int goodNumber = 0;: o6 d5 s0 X$ ~, g
while(iterator.hasNext()){ 5 n4 V/ L9 m- D+ P3 x% R/ W; k System.out.println("XXXXXXXXXXXXXXXXXXXXX"); H7 p4 K/ y! `, _1 o7 m! F ag1 = (SexAgent)iterator.next(); 2 t9 \# x/ r5 S: Z7 n if((ag1.sex == FEMALE) $ }& H' }* Z; c/ @4 t* w
&&(!ag1.isCoupled())){ 5 q9 c7 B' l# B, A4 X* y System.out.println("YYYYYYYYYYYYYYYYYYYY"); 0 \' H7 t3 `7 q' K2 i potenAgent[goodNumber] = ag1; . J" E: z. Q* b! d goodNumber ++; ! `3 [6 H0 m/ w; j } % Z# _, {- {5 L& s( c/ S4 { } & Q2 o: u+ C8 V' p' I & I4 y. w* [* t. l! r if(goodNumber >0){/ |% V, h' Y. u! Q. ]2 T
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 8 u7 G, x: \+ B$ O1 t Random rd1 = new Random(); 7 y0 F8 _+ [/ |( {3 W int select = rd1.nextInt(goodNumber); 4 V4 k3 \0 p+ w# c- Q; |/ j' d, _% O potentialParterner = potenAgent[select]; 7 [5 B- s: z, l, ]* M, G/ g value = true;7 [$ C8 U9 g* L- H& {$ D
} 9 ]8 K" P+ X1 k9 T n. ~7 C2 R return value;1 U/ C) l; P" T' V2 N& b" t* ?
}4 C+ E3 L/ h7 T8 d5 O# }6 E6 ]; I
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。