|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
1 `& u+ h5 s r& P4 _ private boolean findPotentialPartner(){# A4 K3 t! P! d& Q
boolean value = false;* d8 D8 X* g9 ~; w5 j
6 v8 h3 J, b; Y4 z5 E2 v1 C+ i, q5 Z
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();+ a. d. G" T' Y
Iterator iterator = grid.getIteratorAt(x, y);
2 H6 L, y9 V: H! P" K( | SexAgent ag1 = null;
) }( J+ |; C! q3 f7 \ SexAgent [] potenAgent = new SexAgent[20];
( g; M0 J6 ]7 E" d" z int goodNumber = 0;
; C, B: z4 O- d7 w9 s ^2 e while(iterator.hasNext()){
: I6 m7 g) x, A; ^; ~ System.out.println("XXXXXXXXXXXXXXXXXXXXX");
% D1 ?/ b3 x- W) X) { ag1 = (SexAgent)iterator.next();
6 ~. I' V0 x. S/ E9 x, R if((ag1.sex == FEMALE) k9 a8 u! Z7 j# A1 `3 g( W
&&(!ag1.isCoupled())){
' s% y% \9 c! u. C; b% X System.out.println("YYYYYYYYYYYYYYYYYYYY");
$ Y5 \# ~% J3 P$ F( x potenAgent[goodNumber] = ag1;
: w4 q' @3 t* H goodNumber ++;
! y4 U# ~7 A- W* w% I7 ? }
4 T) `% U' U; j7 ]# T) t/ F }5 a9 k8 c% J9 {9 ?
; l, I# U) p' a8 G1 x
if(goodNumber >0){
) E2 m& l; |; z- G System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
) @8 Y; {5 q* v/ P2 D Random rd1 = new Random();
% v1 S7 A Z9 S. F' S4 @ int select = rd1.nextInt(goodNumber);; F I$ Z! P5 z
potentialParterner = potenAgent[select];
# l/ l3 E E8 O( t, _) B) S* M value = true;# {, a" {% ?! C- y5 k* ^
}: r) g* V% E" U# @% b8 D
return value;/ R& c' L2 \2 W- z: S5 Y
}
6 j, X7 J" @' a2 H* D始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|