|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
: p) v9 R/ O' \2 f) g4 n2 E private boolean findPotentialPartner(){
& P8 E3 y/ S" }+ W% p6 g boolean value = false;3 k, }. i( W# [" ]
6 X! H0 Z) c- {7 s9 E OrderedMulti2DGrid grid = space.getCurrentAgentSpace(); q& Z) `8 ?. O
Iterator iterator = grid.getIteratorAt(x, y);
' d N3 [( h8 [' S q) Z" C SexAgent ag1 = null; & x1 [3 N* H8 p5 w% ~& g. U# O
SexAgent [] potenAgent = new SexAgent[20];
" B3 W* k9 E& Z0 k# X int goodNumber = 0;
5 s' C7 {) R; ?( F) P2 m while(iterator.hasNext()){6 e6 S5 H$ y6 U( s# h" F# s
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
4 m0 m0 r$ Q8 T. u1 W ag1 = (SexAgent)iterator.next();
z; m+ s3 [: K E3 v, b, @ if((ag1.sex == FEMALE) 8 P: a/ A: C) [% a2 ^ q8 M
&&(!ag1.isCoupled())){6 ]- `) B9 Q2 P' |# |# k9 t, ]$ I
System.out.println("YYYYYYYYYYYYYYYYYYYY");- _3 @$ |# @5 y) V. @" j# W$ @4 K
potenAgent[goodNumber] = ag1;
" V, m* R- C | goodNumber ++;
! L9 d, r+ B$ ~# \3 z# }1 ] }' A. e6 V: Y8 L1 F
}
% T$ t: ?. V% H9 _$ R! _ 1 [( @( ^6 ]) U6 r, @$ P3 P7 l
if(goodNumber >0){7 `* A: r8 G; V; r
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); % }3 Q7 G( W2 l$ M2 S- G/ Y
Random rd1 = new Random();
0 j% y4 z# A" O0 |+ G int select = rd1.nextInt(goodNumber);
3 v0 h$ L# ?1 r N* F potentialParterner = potenAgent[select];
1 B# [5 }% w9 V) n8 x( y value = true;$ a J7 o2 w8 m. ]
}% Z; U9 k) M5 I' M- c, w
return value;6 f& Z6 m4 D* J
}3 t. L0 c' b$ c7 i% Z4 p
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|