|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。1 Y/ t! W- X; r6 b$ r
private boolean findPotentialPartner(){8 I; o' S/ b0 G8 M$ T3 @
boolean value = false;8 ?$ L/ q1 N8 O# ^0 p* ~
P* Q, {: l( Z5 A
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();9 V8 j- d. K$ L W. o
Iterator iterator = grid.getIteratorAt(x, y);
% z `" ?+ `6 r6 @ `+ O: M SexAgent ag1 = null;
( h! t S6 K; C SexAgent [] potenAgent = new SexAgent[20];! I9 F2 Y" e. ^, ]# o
int goodNumber = 0;" ?9 w4 B: w5 |9 u% [7 n2 g, b) P
while(iterator.hasNext()){8 [6 ?! j& N3 i6 W3 e4 r* j" m D
System.out.println("XXXXXXXXXXXXXXXXXXXXX");4 t8 e. L6 U( s. s
ag1 = (SexAgent)iterator.next();
7 W5 V+ ~' N# |/ c if((ag1.sex == FEMALE) 5 h# F7 ]* S( W" z
&&(!ag1.isCoupled())){
- p3 g: s' V, }5 W/ k3 b& O System.out.println("YYYYYYYYYYYYYYYYYYYY");+ j4 t2 Y7 ]4 _7 B8 [, ]
potenAgent[goodNumber] = ag1;
6 U0 Q' Q1 |# y4 [2 O9 H goodNumber ++;0 c. E. h$ n( h+ g+ q |" |# P4 K
}
: X' ]' S- g7 z8 I- M }3 F* [" C& l' n0 Z+ Y& v3 [" x6 R1 F8 d
" D: @+ m" d* b7 s2 D0 n# S
if(goodNumber >0){3 n9 j* p: d% q: x1 f/ d
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ( g2 i/ o" h2 M: N" N: E( j- U. m/ I
Random rd1 = new Random();0 W/ c( K/ ]1 e. y
int select = rd1.nextInt(goodNumber);
# c% f2 z! U5 ?2 b; o( F& \ potentialParterner = potenAgent[select];
" F3 l5 @4 u7 l5 _/ m4 w3 R N( C value = true;* q- ], Q) X2 Y- z; c4 f1 s
}# J7 O0 ]* V' s6 {* ]
return value;
( v% @1 x: ~+ B9 t/ c: p }
* v ~0 A" |) j- g' T7 v+ G始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|