|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。6 I8 Y& v$ R) Q/ @' g+ N/ x r3 P9 I. n
private boolean findPotentialPartner(){
3 t' I6 \9 K& C' R' x( t1 F boolean value = false;
! Z6 v5 a: w* S- |% E- h! q ' N( ]1 A! x+ H+ g/ ^5 s/ d
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
( C. O/ p1 m4 x! e& J$ B Iterator iterator = grid.getIteratorAt(x, y);
' ?9 Y9 y9 v5 K" w9 f SexAgent ag1 = null;
; d+ ?- Z; X- j: V% C! z8 ]( n SexAgent [] potenAgent = new SexAgent[20];: [6 M+ S+ f- o- Y" w( O1 {
int goodNumber = 0;
* z1 @0 z3 m, h5 I% X- d while(iterator.hasNext()){
; S1 ?, `% \6 g+ S' U7 {) m System.out.println("XXXXXXXXXXXXXXXXXXXXX");
7 o! Q' X. @8 w# \5 H5 `* l ag1 = (SexAgent)iterator.next();" O! r- H1 P. B! m' r6 {
if((ag1.sex == FEMALE) * H5 ]2 r, R! f5 [" _9 {; o
&&(!ag1.isCoupled())){
& q+ c9 L8 S3 [5 h4 h: x" O0 r3 E System.out.println("YYYYYYYYYYYYYYYYYYYY");6 Y7 Y) e' _. m- ]4 c
potenAgent[goodNumber] = ag1;8 @( W& Y, ~2 g t. a7 C
goodNumber ++;' D: B ^% k) d; k- @
}# T* E. N/ H1 j* d3 _) I
}
* @. e" N' a! Y; z 0 G0 O4 Q( g1 ]9 M. t5 L. w
if(goodNumber >0){
/ a8 |) i# G a4 z System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); & o4 M, E! K$ \% N
Random rd1 = new Random();
8 Y$ E' U9 ^ F0 p6 i int select = rd1.nextInt(goodNumber);
, L0 v9 ~$ G/ Z' u+ [ potentialParterner = potenAgent[select];8 s' o" U" m. u9 G: K8 n4 x
value = true;6 ]' E* |; v6 j
}
7 q. C8 Q2 ~$ h" ~5 T return value;
8 i" U- q: i3 \6 l% ] }! I I0 p2 s# {4 a0 E
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|