|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
* f5 J3 [* A7 s. h5 j) H2 @1 s! a: | private boolean findPotentialPartner(){. X2 ^3 v+ w! }
boolean value = false; s# `5 Q0 \9 O* ~' q$ g
+ l% |6 I8 }- Z, j0 M8 S4 V4 _
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();3 i/ o' X, F" ]) w* Z+ P1 m0 d3 d
Iterator iterator = grid.getIteratorAt(x, y);
5 D+ g" V) F1 W) }% S! g SexAgent ag1 = null;
0 c' e8 g8 m$ W: M9 p7 l* ] SexAgent [] potenAgent = new SexAgent[20];
2 h: X. Y( `- q5 c6 E int goodNumber = 0;9 b5 ~/ }9 G) a! q5 y" C: s
while(iterator.hasNext()){5 V* b7 N* G0 x
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
' k$ B F% g- ]( ^" D ag1 = (SexAgent)iterator.next();
2 B+ H! A# p& M if((ag1.sex == FEMALE) : H4 C) c5 l4 o5 h: Q& T
&&(!ag1.isCoupled())){* ]; W# t6 S q5 n3 v6 O, o
System.out.println("YYYYYYYYYYYYYYYYYYYY");- y- Q+ b5 s/ l! C
potenAgent[goodNumber] = ag1;( K' x& t# [7 `0 R. }
goodNumber ++;
" x7 p0 u: W, C. V; P }- D6 P3 e H# S) d7 _; j- c; h
}/ C3 q5 \0 z1 ]- n9 W" _
- o0 b6 ]- g1 U if(goodNumber >0){) m' @$ \6 f. X+ z+ R( @6 B; s/ O
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); - r$ E( e# y, n/ i: K
Random rd1 = new Random();
& @+ \* p" ^+ M4 n8 [0 a int select = rd1.nextInt(goodNumber);
B5 R# z% L; C! Z potentialParterner = potenAgent[select]; n4 O: ?. ^# n' H
value = true;3 {8 K+ q9 H% }
}
! C$ R! s7 o6 r% D# s% | return value;
- r! i1 U, h: I! |7 E3 L0 l& M9 M8 D }6 _' O8 x$ `, i
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|