|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。3 k6 L/ K3 p ~$ ]2 V: i$ a
private boolean findPotentialPartner(){: \9 V- z( d _6 p, t* n
boolean value = false;2 `+ R) I" v b# P% [2 z/ l# c
( |3 T+ W1 G! o, H OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
, ~/ z; ~7 Q. _9 o Iterator iterator = grid.getIteratorAt(x, y);! c' f9 D7 x0 u$ i% M' |( G7 H* y4 o
SexAgent ag1 = null; % h. o1 @1 Z+ O; w% t; ?6 K! a0 @8 }
SexAgent [] potenAgent = new SexAgent[20];
: f: Q" A; T; I9 B( ^ int goodNumber = 0;( p: ?/ x( l0 e
while(iterator.hasNext()){
I: m8 m9 s9 y& Y5 f System.out.println("XXXXXXXXXXXXXXXXXXXXX");
7 F1 ]. ^) n: U7 N! ]7 l, K ag1 = (SexAgent)iterator.next();
* H. i2 p1 c3 u5 b( O% ?6 Q if((ag1.sex == FEMALE)
, G* |! H1 q- C% y# Y &&(!ag1.isCoupled())){
& v+ D7 K$ \# e1 V System.out.println("YYYYYYYYYYYYYYYYYYYY");9 C ]) f: q5 _ K3 k+ d1 x
potenAgent[goodNumber] = ag1;% e/ l/ P( R9 f4 P# \: U
goodNumber ++;: P. k3 L$ [+ A4 }8 W8 ~, I
}% _: L. V$ y- v
}; u4 H- s5 F, U9 v! m5 [% [+ B; Z: p
2 S" H- ^' N7 U/ ]6 _ if(goodNumber >0){
3 B6 K1 ^2 H$ f* ~" l1 _4 i8 w System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
6 \+ w& G7 E0 j. B& K Random rd1 = new Random();2 X: H' N5 T% k' R! d
int select = rd1.nextInt(goodNumber);
( r! M( N, }( m$ G o potentialParterner = potenAgent[select];( l' a' x0 Q$ L$ W' ^+ w) N* c; L; A
value = true;
; h( s8 B* ?7 e( F* s }4 b4 ~5 ?5 G9 d1 z/ [/ O5 k' b
return value;. X, j& Y+ N+ ?! D! N/ W
}
# T( c7 I- @& @) z- D始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|