|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 U5 I4 J) _' C. T- M! ?
private boolean findPotentialPartner(){
/ I) F1 `% {* C( Z: S, V boolean value = false;3 V$ u7 O; y2 w
+ R" | S6 T& W7 J5 S
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
# O/ \0 G. v4 w& z% L9 B Iterator iterator = grid.getIteratorAt(x, y);; F. Q) Y2 e, W/ W
SexAgent ag1 = null; * \; C" H, ^% e" |
SexAgent [] potenAgent = new SexAgent[20];
6 Q- R2 R6 }8 A int goodNumber = 0;
: S9 {0 s* i, c8 F9 ?6 E while(iterator.hasNext()){
, [- {( [% Y' u5 v+ i2 v8 ^ System.out.println("XXXXXXXXXXXXXXXXXXXXX");' G( W1 }$ W8 ~4 |
ag1 = (SexAgent)iterator.next();
- l" I2 m2 I: X( } if((ag1.sex == FEMALE) 0 A( ]* H5 a! M
&&(!ag1.isCoupled())){( ]* j8 j& e# R
System.out.println("YYYYYYYYYYYYYYYYYYYY");
6 W& l3 {+ M( c2 v# Q potenAgent[goodNumber] = ag1;
& [, E! k( ?! m goodNumber ++;" l [2 |( X- V& v6 q# n: L
}2 {* f# P! N( R/ m3 \; Y1 n
}
/ `7 c3 S% n5 f* B( s0 v' w8 j% d
7 m: v- o: @/ ~2 Z( R8 M( P if(goodNumber >0){' t. h1 y! Y# V4 j, _( E+ k2 A
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); * n6 }& J; _' F5 p
Random rd1 = new Random();
2 S/ O& c% X: g- }# ] int select = rd1.nextInt(goodNumber);4 V ^- \5 k) t0 h; i6 X6 q4 l
potentialParterner = potenAgent[select];! q4 H [6 s1 d' R4 `' c
value = true;2 w7 |% ^3 i/ Y6 t. k& O$ W3 Z
}$ h, v* T# ?# q8 W5 M
return value;7 A5 \# e: Y' Y- I( f; L
}# k0 a6 Q( G, f6 g. f/ t
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|