|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
' l! Z! W% h6 G( L! d private boolean findPotentialPartner(){
/ @, a8 j6 L) _ boolean value = false;8 o# w% c6 G/ a
/ j/ ^% w4 p ^) w
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();5 F" G5 Q# `/ ]0 _1 o6 M
Iterator iterator = grid.getIteratorAt(x, y);
9 A8 Z& T+ R$ a: j9 X: _ SexAgent ag1 = null; : i$ R; c9 R8 z- s. `. H9 h6 O1 T
SexAgent [] potenAgent = new SexAgent[20];
/ ^+ y. K& Y- M7 x2 s int goodNumber = 0;0 p+ W$ ]3 @7 [, A o- v
while(iterator.hasNext()){
" K& F" C' k; a. ]9 e5 p5 M System.out.println("XXXXXXXXXXXXXXXXXXXXX");
" O* i% z6 l/ K# L4 q ag1 = (SexAgent)iterator.next();
/ |. {2 Y7 |3 n1 Q! [( p, f if((ag1.sex == FEMALE)
; _7 {/ K( `1 {' Z+ B& G( T &&(!ag1.isCoupled())){
/ S5 O) o5 l2 p8 F4 k- c System.out.println("YYYYYYYYYYYYYYYYYYYY");
+ R- D& }( S9 l, d3 j% [ potenAgent[goodNumber] = ag1;, _ `- e& `2 D" v8 G9 n! N
goodNumber ++;3 X" _2 W" U* J( p ^! N
}
+ q4 u6 P& O0 X: i$ P8 w }2 P+ Y6 w, }# h9 S: C* ^5 H2 ?
/ }7 g }+ P/ c+ p if(goodNumber >0){
; |) L4 c6 ^2 l" D% x( N System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); " h! p. J* B1 O( O& _1 S
Random rd1 = new Random();7 l4 `. w" t7 S1 ?
int select = rd1.nextInt(goodNumber);
) Q: Y9 i) H2 {# R# ` b potentialParterner = potenAgent[select];$ U, O/ z7 u+ {* Z8 b2 @1 _! H% I; H
value = true;
$ k# Z) T7 Q! \/ I; J" D6 s! [ }( I0 A2 I& o2 g6 |$ o" D
return value;
- f7 z# r! p W' ^) z5 [ } W( J/ a: \8 V
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|