|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
" }, P! T' ?- x private boolean findPotentialPartner(){
+ U6 k. l% \4 y4 a, [4 i( f boolean value = false;
' n: E7 e5 b. W9 ~( I! W' K, l + @" P* R7 Y5 |# M r
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();. l0 u: w6 e3 d# ^& ~! W) M. M
Iterator iterator = grid.getIteratorAt(x, y);
7 k4 q! ^# ~( d SexAgent ag1 = null;
7 ^) e2 S/ {% J SexAgent [] potenAgent = new SexAgent[20];) o' b3 T) {. ^6 x8 ^
int goodNumber = 0;7 g4 M [6 Y1 C8 C' |- V
while(iterator.hasNext()){
# u A$ R& x, v System.out.println("XXXXXXXXXXXXXXXXXXXXX");6 e4 P1 q# ? Q- t0 @8 b
ag1 = (SexAgent)iterator.next();
+ h/ Z$ p' T8 c( A+ K: |. r! k if((ag1.sex == FEMALE)
) C2 \% ^/ @- a &&(!ag1.isCoupled())){7 b3 ^+ P* \7 Y7 z) v, O5 I
System.out.println("YYYYYYYYYYYYYYYYYYYY");, ?0 J8 x/ Z. Y# M3 O1 _) _: ]
potenAgent[goodNumber] = ag1;6 ^/ \! }( J' {7 m
goodNumber ++;! z/ i" f. ]- H% ~# y$ h
}; q, H; M7 |8 ^* m. A/ b! B4 l
}
0 `& v) v& C( G1 E `/ p s3 S9 B, L+ E
if(goodNumber >0){
' k, {7 m$ n- M+ q! r) E/ l/ J System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
* E5 R$ s2 o" e: |, ^1 ] Random rd1 = new Random();6 X* u# K$ [" r0 K5 Y, c8 C6 U
int select = rd1.nextInt(goodNumber);1 [/ k6 q" r' b5 N$ P
potentialParterner = potenAgent[select];
$ d& W, u7 B' z% m( p/ _4 T value = true;0 C; H: j5 b0 F6 I# T. Y, |4 q
}
, _: j1 p9 n, B6 R0 } return value;
& S9 W, \/ v2 x$ q6 {" S; [& X+ P }5 B& [' S2 e/ x. T- K7 Z# C9 M5 O
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|