|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
8 ~* z, [# m( m4 ?9 [0 r9 q* N private boolean findPotentialPartner(){
8 L8 b+ a4 W- X# H$ ^0 i$ V5 B boolean value = false;/ d( }' K3 j+ @0 n% E0 ?
; Z- c' m* w& M
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
: e# e2 E( B5 t1 \2 n6 D Iterator iterator = grid.getIteratorAt(x, y);$ F' a$ D& r1 M8 e$ l! d8 x) t$ ~
SexAgent ag1 = null;
5 p" B, `7 b2 c1 a$ n W/ ~; }0 q SexAgent [] potenAgent = new SexAgent[20];
2 |8 q6 n7 }) Y int goodNumber = 0;" G* U: w l" {
while(iterator.hasNext()){4 b& S8 l3 b. k; F
System.out.println("XXXXXXXXXXXXXXXXXXXXX");. Y! P- t1 j5 R( n
ag1 = (SexAgent)iterator.next();% s, q- r' x6 s
if((ag1.sex == FEMALE) " b# O2 K% r, z: y
&&(!ag1.isCoupled())){
2 C x8 T) J3 h( O( S+ k5 } System.out.println("YYYYYYYYYYYYYYYYYYYY");
# `! E, ~: B9 U potenAgent[goodNumber] = ag1;
& U( x$ h" i$ v- M goodNumber ++;
5 c: V, M1 h! r. E1 _ }
: C' h& ~1 I* h( a* k5 u1 r }6 q0 @+ u6 t6 g( V& D( j
+ p1 K+ C. N* u8 a3 D8 d# ~6 y if(goodNumber >0){" M! V/ y2 i* v% j& E. W+ j
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 5 X+ }! w6 r+ D0 s5 b( o$ R1 t5 `
Random rd1 = new Random();
! _6 L* p+ p( n, | int select = rd1.nextInt(goodNumber);; _# C1 e. H8 I
potentialParterner = potenAgent[select];" y$ Y" n- }6 ?
value = true;
+ t% `$ ^: G2 M1 A$ i, ~( C8 t7 W } @7 U9 ?3 i9 U+ n. e3 e) Z! o
return value;5 |2 U) k) s! E
}
/ ~- p" @* a6 e0 k ~ z始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|