|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。5 D7 b" B6 h! ?/ ?7 t @
private boolean findPotentialPartner(){
- d {% s" t: [5 \6 T5 @0 f" } boolean value = false;3 e, K9 S, r6 s
% K3 j& C4 }; S; Q2 j) G OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
7 _+ ?. X. ?8 o. _& N- b Iterator iterator = grid.getIteratorAt(x, y);
7 G* q* |8 w5 { d& v6 M SexAgent ag1 = null;
1 z" A$ ^6 S8 p" l7 {: Y5 C/ E& D SexAgent [] potenAgent = new SexAgent[20];
{# A; \" O0 a6 v int goodNumber = 0;5 K3 x- o8 Z! M7 s# d9 X6 P* o+ m
while(iterator.hasNext()){
/ D. `9 \5 u; n6 s System.out.println("XXXXXXXXXXXXXXXXXXXXX");- J$ ]; E! y- l2 \5 w
ag1 = (SexAgent)iterator.next();7 e2 h' e3 z3 a% `, H2 H
if((ag1.sex == FEMALE) 6 ^7 L% Q% o8 U
&&(!ag1.isCoupled())){
: Y5 c: d ], i/ E System.out.println("YYYYYYYYYYYYYYYYYYYY");
; `) t! P& ]% J; i U potenAgent[goodNumber] = ag1;
2 r6 O) q5 d) ?# }9 F goodNumber ++;
. k5 w* z$ E& c# h1 n% {9 c }
, T1 T1 e/ z( h) X }
! C4 K& q8 ?8 L5 Y% k1 L' A1 w
+ z0 ~$ S9 @# v6 T6 [5 R8 D if(goodNumber >0){
7 y b% m l! H& ?* U System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 8 v3 \$ K8 G0 e
Random rd1 = new Random();
+ M# ^! t1 V7 F4 L( \ e int select = rd1.nextInt(goodNumber);
# b, Z% u1 h3 t9 Y: \) { potentialParterner = potenAgent[select];
8 _! B. S3 [+ ]0 m* u value = true;. Z. `6 \! w7 w2 \% {. m6 p
}
$ H1 @( |+ ?# ]4 \+ e return value;
! [9 N0 n+ A7 v' ]9 G$ l7 | }
; \7 Y) Q" P& K1 j* j6 P8 I始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|