|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
1 T) |: T) O h' ]. K9 p$ B private boolean findPotentialPartner(){
/ C; a; w0 @ t' o/ O boolean value = false;3 D Q* X5 a: y* i; Q
( {; R- M. d3 {3 r/ _ OrderedMulti2DGrid grid = space.getCurrentAgentSpace();6 S3 ~% M' |5 R" i
Iterator iterator = grid.getIteratorAt(x, y);
- p6 O% P! s) U% U1 i SexAgent ag1 = null;
: [0 K; u% |& e( e& ?7 l SexAgent [] potenAgent = new SexAgent[20];
$ S* R# X- @! V: u+ G; V int goodNumber = 0;9 ]5 r- f- r! P3 d/ k4 X
while(iterator.hasNext()){
) l& s$ \+ F/ ?9 x% o4 { System.out.println("XXXXXXXXXXXXXXXXXXXXX");
$ v7 N- K. Z6 n+ P, D+ g* n ag1 = (SexAgent)iterator.next();
- R. U2 j) Z7 S& d if((ag1.sex == FEMALE) , D9 V" F& _1 ?- D; Y! k" R( p
&&(!ag1.isCoupled())){9 t( Y9 M$ {( x# S1 Q
System.out.println("YYYYYYYYYYYYYYYYYYYY");. s6 C) }0 x# C$ L
potenAgent[goodNumber] = ag1;
6 Q* v* Q8 l! g7 F5 C goodNumber ++;
+ H t3 v2 [! p6 g. Z }
# S/ [9 X/ X7 T$ A: P }( T" x1 x& {# m/ ~
4 H) `. H9 s' L# `7 ?
if(goodNumber >0){6 m/ M) \2 a0 H( ~1 ]* P; q
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
2 `# [- f6 H9 N Random rd1 = new Random();
. \6 n$ a4 X) c4 L3 D int select = rd1.nextInt(goodNumber);0 M0 g# b3 h6 m
potentialParterner = potenAgent[select];
) U1 {& Y2 p3 N7 C+ } value = true;- G$ {5 J: E) \8 u
}
7 z. G( {# c% W0 @1 e+ C" v: T return value;
% P q( z+ A6 |0 r& c }
4 X6 T/ p# t) |+ D- _7 @始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|