|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
# _4 u- I8 t$ R c9 N private boolean findPotentialPartner(){
+ T. A) R7 t5 o boolean value = false;. ]; Z& O5 O8 ?+ o( g
' V' ]$ W# s4 I7 u* O2 M
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
5 m0 @' M3 n! u3 |6 ~6 @* z1 O0 Z Iterator iterator = grid.getIteratorAt(x, y);
' s- H6 ^: S: Y" J, Q SexAgent ag1 = null; ! L9 T( E( t6 t/ I0 c% n' ?) Q! A
SexAgent [] potenAgent = new SexAgent[20];( D7 W) q* z& f6 A' d' X
int goodNumber = 0;5 n, j: J) S# ]+ ?( N2 C, ~9 K( O
while(iterator.hasNext()){, I2 @( K; g2 Z4 B$ A# g5 ` V
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
+ M1 s+ L$ [, i8 v1 }* P ag1 = (SexAgent)iterator.next();
1 G) ]# ?! q k3 ], ] if((ag1.sex == FEMALE)
' B! Y' \; Y3 D( m5 C &&(!ag1.isCoupled())){/ s8 [/ j. _9 K1 l# ? C2 k
System.out.println("YYYYYYYYYYYYYYYYYYYY");% c7 v+ P7 S& T1 ^* J7 C
potenAgent[goodNumber] = ag1;
* ]9 v. x' o* a7 ]7 s1 O$ T4 I goodNumber ++;
( T# I8 J& C( ^ }7 e- W |8 E3 T. l
}
" E- b" u+ ~* F5 e2 l b4 G9 Y $ }5 Q- |# n- ` f
if(goodNumber >0){
8 T4 f8 ]. d. X8 U4 S System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
: i h" w+ W; n" m2 |9 R" a6 W8 B3 A Random rd1 = new Random();
6 D N% K# K( M$ R$ O int select = rd1.nextInt(goodNumber);
% s. i' Q, `, z' n$ U+ q' D; t potentialParterner = potenAgent[select];
7 y: i8 U3 d: ~* d5 }: z8 p0 g value = true;! k& G \0 E6 ~) K
}% o7 L4 m0 s' Q0 \$ {
return value;
4 e( H$ W+ c0 n% z0 o t }
# B! m2 |# t4 d' d" x始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|