|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
% u7 U+ q" v( C6 Q! C( ? private boolean findPotentialPartner(){
8 C' f1 i$ ^7 f3 C boolean value = false;. m. W# K/ H: I
1 E; y! c, y, t; b OrderedMulti2DGrid grid = space.getCurrentAgentSpace();8 t& x# `/ m/ w. R+ D, j K
Iterator iterator = grid.getIteratorAt(x, y);
$ N: l7 m2 N a SexAgent ag1 = null;
9 T9 x0 T% b4 z, q9 P/ D+ \ SexAgent [] potenAgent = new SexAgent[20];
. Z: |1 G, }" \5 m. Z7 q; ] int goodNumber = 0;
9 n1 g/ J% K& g! B7 c% d( K) C, h while(iterator.hasNext()){
b9 w$ H% Y R& Y' F System.out.println("XXXXXXXXXXXXXXXXXXXXX");
8 T6 g0 L6 D# o ag1 = (SexAgent)iterator.next();
- a$ _( `! d- l* T" d if((ag1.sex == FEMALE)
% T) {- Z! A# O0 ]( m/ y &&(!ag1.isCoupled())){
* \. G" Q0 Z" {0 p+ L System.out.println("YYYYYYYYYYYYYYYYYYYY");8 V- k' ~0 A1 [! l: x; \3 ?
potenAgent[goodNumber] = ag1;
2 W8 _) A3 @ f1 o9 M9 s% o goodNumber ++;
7 ^; k2 Q4 }+ ?' X& Z; I }
6 a" T/ }# g0 O l# M% n: q: \ }0 g6 ^4 ^' u- E2 T5 C5 ]
! k& P8 E/ Q! }( h if(goodNumber >0){. I* J+ q( A/ q/ \/ q: j- y& Y# \
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
N; S1 R' z; R. [4 M7 d6 t- ^ Random rd1 = new Random();
_) ?: [2 d! y" b6 |: A int select = rd1.nextInt(goodNumber);
9 O7 ]- ]. c: q- z* ? potentialParterner = potenAgent[select];/ s% ^" c1 X0 ^' w% C9 N* `) a1 [
value = true;+ W. q/ b6 B/ O$ C
}
/ I: ~* P) d! ~5 h return value;" u8 Z. ]# e9 A6 @
}4 S8 z5 h$ S' x! P8 ? l5 R0 y
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|