|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。9 p- m# U1 S/ L E2 c2 x5 V! u% b
private boolean findPotentialPartner(){
0 {) j- w/ O, k/ r8 W boolean value = false;
_3 v& G2 q7 E v9 W + ~1 B% D$ i1 [- Z7 `) d
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
q6 z u) Y9 ~ Iterator iterator = grid.getIteratorAt(x, y);% k+ x# G/ W" @. w7 z: _8 k
SexAgent ag1 = null; 7 y4 v6 _* I0 g1 V: M, f/ d
SexAgent [] potenAgent = new SexAgent[20];3 S3 W* P/ D4 Y
int goodNumber = 0;
! z! I" g5 L5 p( N5 ~ while(iterator.hasNext()){
* [: Y( Y+ m% Q- i System.out.println("XXXXXXXXXXXXXXXXXXXXX");- x8 V/ R7 b1 j; k3 q
ag1 = (SexAgent)iterator.next();
8 N* t! B4 K) q2 K if((ag1.sex == FEMALE)
+ N* t" A) _. F &&(!ag1.isCoupled())){
' j. W4 R/ e( e% ] System.out.println("YYYYYYYYYYYYYYYYYYYY");
, h2 v( w6 a2 U( @ potenAgent[goodNumber] = ag1;
& Z0 i9 r( {4 t% n' s( A goodNumber ++;/ r4 s/ d9 e9 D# S+ ^( Y3 o" m a
}8 J+ d7 D ? k2 f2 k3 d4 k
}7 c0 H& z# a# I/ O, I+ M
$ M. Y6 e. G8 F+ H/ o3 p
if(goodNumber >0){6 T+ v4 |' H) V( ~. L" a
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); & ~6 m3 v# S w/ J
Random rd1 = new Random();
: I# X, O5 X; H- u" g0 f; U int select = rd1.nextInt(goodNumber);
! K6 |4 C) D- \) H" @ potentialParterner = potenAgent[select];% w; s5 d" t; V2 N" |
value = true;
9 N6 B; _& `9 T. _1 V$ l+ V }, V5 c- M! a+ y! w' p
return value;
) Z" X& Y$ m* u/ C, Z }
1 B, J9 m4 Z3 e$ q始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|