|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
0 p L/ h; J9 j private boolean findPotentialPartner(){
: c0 n1 r+ r/ l( Z" u7 R$ @+ @ boolean value = false;' c# B ?( r6 Y. e% u
3 ~+ |; } Q9 ^4 O% l: ` OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
# D/ w3 P& _4 a6 T7 D Iterator iterator = grid.getIteratorAt(x, y);
6 y7 g* W) Z& p SexAgent ag1 = null;
0 ^: q/ v5 p% H" G3 F SexAgent [] potenAgent = new SexAgent[20];" S" f# E8 W% q
int goodNumber = 0;+ z. S& s8 z; g! R
while(iterator.hasNext()){
+ N, Z3 H9 N) G) K System.out.println("XXXXXXXXXXXXXXXXXXXXX");* Y! s! q1 _. A5 J: E
ag1 = (SexAgent)iterator.next();
7 `) Y1 W$ o9 K/ C- c8 J" ?& ? if((ag1.sex == FEMALE) 0 z( L+ x) I5 Q) l6 d% k+ m" d2 W
&&(!ag1.isCoupled())){3 `% O/ a J& Q$ i$ }! z
System.out.println("YYYYYYYYYYYYYYYYYYYY");- S2 {% ]. `( n6 m) K# t
potenAgent[goodNumber] = ag1;% o" u6 p& \! V- E
goodNumber ++;8 Z4 q3 F3 C: m, E1 G( Q
}' R9 z" N e- f
}
# Q. J% d0 O; s" B& o& b
6 l; P, m5 ?, K3 Z. P7 G if(goodNumber >0){2 X3 ^( N" `. g7 Z. p
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
5 K; L+ _2 J& O8 N" C Random rd1 = new Random();
( @. D4 d4 D( @% A6 ` int select = rd1.nextInt(goodNumber);
! [; A% B v! H' M1 [$ d6 s potentialParterner = potenAgent[select];
, Q- e) z! E9 M value = true;
* A! n2 p, T! o0 I }
( l8 V$ f1 k# I" g return value;
! M' m* p5 C- X. Q/ M4 ]% x. ^( } }
/ J% [+ ` }% V9 v8 M始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|