|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。' n+ q- y* }4 F' e0 p) O& p
private boolean findPotentialPartner(){9 T6 t% u& h$ O$ J
boolean value = false;6 \" y; Q& F/ O7 ~# p5 S
2 X2 i3 [/ R+ P; Q; J8 e6 q
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();) O# [+ {: t- h
Iterator iterator = grid.getIteratorAt(x, y);8 B' S7 I% G9 A' ]5 ]% W# ]' [
SexAgent ag1 = null; 8 G& g5 b) t2 ^& b( V) x
SexAgent [] potenAgent = new SexAgent[20];! @4 k; o: ~" s e2 n3 i u
int goodNumber = 0;
( \ l s) x, w0 z% V6 ?1 } while(iterator.hasNext()){
3 `( t( V: r8 C% k: L0 \* f6 Y System.out.println("XXXXXXXXXXXXXXXXXXXXX");) ]' m% ?: v) T4 ~. O6 c
ag1 = (SexAgent)iterator.next();
1 \* D, M' F( w. Q. m8 b& d! U if((ag1.sex == FEMALE) ! B' W2 Q+ ?! o6 C! x" Q/ y! U9 h! W
&&(!ag1.isCoupled())){3 R8 Y# v( k4 ?5 D
System.out.println("YYYYYYYYYYYYYYYYYYYY");2 q' s. e7 N* A' h
potenAgent[goodNumber] = ag1;
6 Q5 k+ d. H' Y. }" P& Z, Q9 [ goodNumber ++;+ T* O/ t! v; D+ g
}' M& X& z' o# e5 [" }5 A$ W) t/ q
}
6 D! t. M- ~# P' K; g6 ]
2 r0 A5 l1 l1 P# ?1 P+ T% o if(goodNumber >0){
4 h+ K0 T2 m4 i! L% X3 _1 K System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); & _" l) Y1 b$ I
Random rd1 = new Random();; G1 S n% K4 T1 V N
int select = rd1.nextInt(goodNumber);
p( F: Y) x! | potentialParterner = potenAgent[select];* L& S7 T! z, b: j- D
value = true;, D. L0 F4 [3 G7 Y$ T( v& \
}! V: Q/ v, s7 v }
return value;! K: I' J* k7 {' M' x$ I- O
}% F1 {0 c# K5 s( `, b, [
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|