|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
n. n9 M* K1 U% U8 r; a- e private boolean findPotentialPartner(){
4 [: j% [$ S( }- O. K) z boolean value = false;
: x: z( v7 w( {% {% @ 6 H( [, t. |- o( }
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();0 U! R( m- _: a
Iterator iterator = grid.getIteratorAt(x, y);
9 k, i! c% L- K2 d, Z/ Z- \$ D SexAgent ag1 = null;
9 l0 S8 Z6 t& a, b+ B1 B$ A SexAgent [] potenAgent = new SexAgent[20];: J/ x6 g+ j% t
int goodNumber = 0;) T& A3 r- r7 Q' |" D2 B
while(iterator.hasNext()){' ]0 |% P R5 m# l$ }, p
System.out.println("XXXXXXXXXXXXXXXXXXXXX");9 D1 P/ F& Y- H9 [# K3 `+ w
ag1 = (SexAgent)iterator.next();. ^( ~* v" u) I" d0 g
if((ag1.sex == FEMALE)
. \, ~. D* P P; D [ B &&(!ag1.isCoupled())){
# L; y% j3 p; l. I. X( y( W- F! l3 i System.out.println("YYYYYYYYYYYYYYYYYYYY"); B, L# s A) @7 O" b/ R2 b
potenAgent[goodNumber] = ag1;8 I! q$ Y6 V) {* g
goodNumber ++;
1 F2 ]; q7 d+ F }
8 f3 R. v7 Y `% T8 O, d2 z }
- P, Q/ [- L, Z7 w
& U% j" E7 p1 u0 T @1 j; r if(goodNumber >0){
u4 X$ x/ z5 w! {" s7 s) w) @ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); + a: U# V/ S! a D) S
Random rd1 = new Random();) U, i3 H$ _( r! v4 ^1 W. y+ \' q
int select = rd1.nextInt(goodNumber);
( _3 N9 D3 g: r$ H0 ^ potentialParterner = potenAgent[select];
. C1 a! o; {! T0 p. f, P0 q! z value = true;; Y' p0 @6 T! ^) b3 m0 ?
}' { O( p$ w1 N, l3 {
return value;
! T' M0 i3 X( T6 L L! w }
4 Q0 [# o( s' F1 I2 x始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|