|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
, G) `" y- `# L5 {6 u private boolean findPotentialPartner(){
! x9 ~" i6 z( V% Y7 Q# b% L+ a boolean value = false;
# ?+ E1 s$ N. K M0 ?6 u # s0 f. k, s( V) s
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
- H, x' r4 k2 o) i& D Iterator iterator = grid.getIteratorAt(x, y);* U# x B. }# D6 t/ T5 \
SexAgent ag1 = null;
( R, p+ m8 _, W1 b* J SexAgent [] potenAgent = new SexAgent[20];
R5 f. @6 `7 o @ int goodNumber = 0;
/ ?& D5 t6 U. ` while(iterator.hasNext()){) ~# E4 d! L. W# _* f. C0 z
System.out.println("XXXXXXXXXXXXXXXXXXXXX");! P# L+ L/ i; ^9 H5 C
ag1 = (SexAgent)iterator.next();: C8 V6 f$ b* `/ Q9 {
if((ag1.sex == FEMALE) 8 w' D. n2 |, t( P* [- x! C
&&(!ag1.isCoupled())){
. F& R7 K7 z0 t% L. ?: G% \ System.out.println("YYYYYYYYYYYYYYYYYYYY");( ~ H+ T' w0 S1 R
potenAgent[goodNumber] = ag1;
0 p8 ~0 T( _& p7 r; f goodNumber ++;$ _8 J( K* V5 v% F" |7 w
}5 [+ a; O l" ^' I* o4 d8 S' V
}
6 a1 k/ ^& h4 {: V! B* S
& g- Q0 y H& G) v8 Z6 C if(goodNumber >0){
" j5 K5 y" U1 M4 V. d1 a1 S/ M System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
1 m5 r9 u! P9 h3 f Random rd1 = new Random();
4 u9 T: B7 R0 \/ Z5 W4 M int select = rd1.nextInt(goodNumber);
3 k ~: u! F# H2 w6 v- X potentialParterner = potenAgent[select];* r( e* m& Q# k
value = true;
* K! p2 n% [! ~ }. q( P9 i6 y% E& w2 v
return value;
( v+ B7 p! z+ I' m# W }' n0 B. A! j; G7 i! T* D& u
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|