|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
) f% P6 i' N6 y( D- t e private boolean findPotentialPartner(){
/ |" H, k4 d7 [6 n boolean value = false;3 x" F$ B# M. J* l
; V6 D7 l- _7 V' b OrderedMulti2DGrid grid = space.getCurrentAgentSpace();* W& b2 C. Y" D
Iterator iterator = grid.getIteratorAt(x, y);# H# x" Y7 ]* f7 W1 I% A
SexAgent ag1 = null; * u+ z4 |9 L; R9 {( L
SexAgent [] potenAgent = new SexAgent[20];
; G5 g. I( U: w$ H int goodNumber = 0;, v6 w3 ^" u4 W6 U( b M+ ]! q& ~+ g
while(iterator.hasNext()){
5 K, F- j4 H, M y/ y' r$ Q9 t5 k/ o System.out.println("XXXXXXXXXXXXXXXXXXXXX");
) E" U' o! C5 ?+ w# e0 Q% S* G ag1 = (SexAgent)iterator.next();
V3 A N6 l! y$ c if((ag1.sex == FEMALE) 3 T' L l# h1 I( F/ p* Y! S3 s
&&(!ag1.isCoupled())){
( a) B& L1 U$ t% H( e0 l8 n System.out.println("YYYYYYYYYYYYYYYYYYYY");
# w, M& @/ ? R potenAgent[goodNumber] = ag1;
5 P# L1 A/ Y( n* W" J goodNumber ++;: |6 q! Z# j1 v/ T% R, t. F4 d
}
e* X$ |7 Y9 ^! W: @6 D }7 F! @! o6 F3 \: q3 L: I/ C
. u8 t% Y+ B8 v; z9 j+ f8 U ` b+ \ if(goodNumber >0){
( u: ]2 W7 k9 y System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ' Q0 \/ }) `% x) X0 K
Random rd1 = new Random();7 n7 c: \3 b6 c2 z
int select = rd1.nextInt(goodNumber);
1 K) O8 _2 B+ @7 Q- v) l potentialParterner = potenAgent[select];/ {, E: Z& u1 L2 \$ A
value = true;
* B* J, b7 D/ z$ z" j9 H) f }
0 k1 V# _% M% S- V o: ` return value;) r( h* y e! w: w7 g+ [2 |" [
}
3 u- Q, p' b) A- Y$ |始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|