|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。1 `+ I" K A" C
private boolean findPotentialPartner(){* N7 m9 @0 g5 {
boolean value = false;
+ h9 c/ K8 \- ` }. d+ |0 {2 y a- q& [
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
; J0 u+ `2 ]% p m' o% e Iterator iterator = grid.getIteratorAt(x, y);9 \1 A8 m# g% x. `+ M
SexAgent ag1 = null;
7 N4 @5 g* A: U+ N) }* _ SexAgent [] potenAgent = new SexAgent[20];$ ^) E: U3 k9 K8 K( Y: S# ?6 d
int goodNumber = 0;; A! B& `- |3 s1 n) C8 ~. S9 K
while(iterator.hasNext()){; V0 u& z5 \7 R6 ?! c" n
System.out.println("XXXXXXXXXXXXXXXXXXXXX");7 c6 Q4 T& _* S
ag1 = (SexAgent)iterator.next();5 ?- p# n; B7 r
if((ag1.sex == FEMALE) l( ]$ U4 k& ~! ]( F
&&(!ag1.isCoupled())){
/ e. [% w+ P m0 D/ G1 e System.out.println("YYYYYYYYYYYYYYYYYYYY");
; C! t$ R3 B, m& ^) I# a potenAgent[goodNumber] = ag1;
# C+ U( m$ r( G1 l! i goodNumber ++;
2 W' q; a7 z+ p* U# | }
L, n6 [! O, k# C8 b# } }
: E# J w5 _& I* u5 K8 f6 l 9 K/ B2 g7 Z) K7 e6 d
if(goodNumber >0){
% I3 |$ r' {" g! ?1 L System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); - Q' l/ w# _ g* R) z
Random rd1 = new Random();+ I1 \; d1 k: U" v
int select = rd1.nextInt(goodNumber);
5 m# `% q4 q. E1 s$ t6 s potentialParterner = potenAgent[select];
8 x, s' d4 O& U ]- J$ [ value = true;
" P7 p9 l" s0 p }# w9 W1 |- p2 O! P+ `' o
return value;
c1 Z$ L: m' S! V9 g+ u- K }5 D6 l5 V; @* t( X& q% M
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|