|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
0 U: e- k, ^2 N4 p) \ private boolean findPotentialPartner(){2 z( y( V& k6 G
boolean value = false;; i8 \# S! q+ y* T0 ]6 @' h
+ V, Q) ]! D( ?8 |3 w OrderedMulti2DGrid grid = space.getCurrentAgentSpace();) y, u" A) u! p8 V
Iterator iterator = grid.getIteratorAt(x, y);7 L/ O0 }6 @& {6 J( k
SexAgent ag1 = null; ' p0 a- Z, ^5 k/ X% t
SexAgent [] potenAgent = new SexAgent[20];
" a2 n0 |9 e5 U- j+ k int goodNumber = 0;; G$ S. A0 \# u9 M
while(iterator.hasNext()){+ B& J. z* Z( Q1 {9 |3 @0 H
System.out.println("XXXXXXXXXXXXXXXXXXXXX");0 ~) Y8 z; Q! o+ r' P
ag1 = (SexAgent)iterator.next();$ V& b4 d+ h/ B! b7 E0 ?
if((ag1.sex == FEMALE)
; Q4 J7 T/ P. B0 G6 h4 b9 A &&(!ag1.isCoupled())){
2 ^+ q9 Z2 f0 v+ b* G% `: f System.out.println("YYYYYYYYYYYYYYYYYYYY");1 B; y: A- [; i0 n. f% P. ~0 |! r+ M
potenAgent[goodNumber] = ag1;
( K c) d1 q) _/ h X$ ~6 [" G7 Y! x! D goodNumber ++;! Z6 v9 w E- w# D1 w" j
}
, f5 D6 H! V' c+ Y }
/ z4 h3 N0 }8 h0 {
2 c `" [ y$ n8 [0 M% { if(goodNumber >0){4 J" }+ m8 I5 u! F2 G: \
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
$ j; M# q; T$ b7 ]) z6 ^ Random rd1 = new Random();1 z& p0 n' a4 H" e! v( B2 R
int select = rd1.nextInt(goodNumber);
# b2 c1 K2 h! i. C potentialParterner = potenAgent[select];- E3 l# w- \* g' [/ q: G& u
value = true;2 H* n% C( G; Y9 u
}
/ N1 U ]7 V. l0 h0 S7 J return value;
. u0 k- U6 }. ~# r }4 [% k8 c) z5 X0 O1 K5 h
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|