|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。' U o$ m1 N. T
private boolean findPotentialPartner(){. r) E6 P6 K: c7 d
boolean value = false;
$ ?4 N* c9 _& ?- y
% V) Y/ B2 j4 z& r+ P1 @9 K: V% [ OrderedMulti2DGrid grid = space.getCurrentAgentSpace();' [8 g. e' H( l2 }8 x6 [, _& O6 K0 E
Iterator iterator = grid.getIteratorAt(x, y);
1 Z' U. k' x! F6 M- e$ H SexAgent ag1 = null; % n9 ]: i J! r
SexAgent [] potenAgent = new SexAgent[20];4 q: j( I0 P* W- b% v4 ]
int goodNumber = 0;' m9 J7 ^) Z9 |. v, s, y
while(iterator.hasNext()){
8 v" |- D% \) b$ v. j8 O& v System.out.println("XXXXXXXXXXXXXXXXXXXXX");. B3 X- \- }" v- K' H8 v( o
ag1 = (SexAgent)iterator.next();
2 f6 A; F; R; D# P6 l if((ag1.sex == FEMALE) 3 k- P. {; T6 J4 r* n: X
&&(!ag1.isCoupled())){: A# X5 e' i1 X& a& ?" ~2 s' Y
System.out.println("YYYYYYYYYYYYYYYYYYYY");
7 \" o# K5 E5 O potenAgent[goodNumber] = ag1;
: e% w D0 t9 |! b4 }( G, p) ^! @8 G goodNumber ++;2 g( u' [# z. Y* f) _. e
}
$ I3 H `- `9 j1 b) Z: {' L }
) O7 V% |# Q6 `' s6 h( o * [0 M& ~+ d, w4 A. w
if(goodNumber >0){
, ]% [+ V* n! I, Y: J H System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 4 ~! G7 D3 S9 M2 }
Random rd1 = new Random();
" |$ u1 z& G: Y8 g/ E int select = rd1.nextInt(goodNumber);
! s- R! u. d" h1 `& }* t* Q potentialParterner = potenAgent[select];
. b# s# c: L3 S2 f/ B2 _# J value = true;
# r# k* s) R4 M' S }
8 h4 \+ \: i' l6 F; q% O return value;
8 N6 k! \# f1 X$ y a. O }) I" n# k. O% {- U; K) S* s; C4 h
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|