|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。/ E; x @" C( a6 X0 H2 }. X0 z
private boolean findPotentialPartner(){
. q$ q$ w) T: x5 T4 _ boolean value = false;) @2 Z( T5 `+ ]7 {2 {9 F" o4 S, Y
" F* F$ ~" D5 o m: \. h OrderedMulti2DGrid grid = space.getCurrentAgentSpace();5 e! M' l; d$ h3 v
Iterator iterator = grid.getIteratorAt(x, y);
- h) c' j9 h- D: \: W3 z. X SexAgent ag1 = null;
, v4 B8 Y4 c4 W" d2 Q9 Q SexAgent [] potenAgent = new SexAgent[20];
! ~ H v2 o) F" e0 V ] int goodNumber = 0;8 A/ a. I0 z+ W9 `# u
while(iterator.hasNext()){* T5 Y0 G% H/ z' `, d
System.out.println("XXXXXXXXXXXXXXXXXXXXX");) a! n( {! G5 I: V: j; z) u; j+ j
ag1 = (SexAgent)iterator.next();
/ L( f t% j. I" j2 f; y0 N9 U if((ag1.sex == FEMALE)
% @4 Z7 a& r) x. U! ` &&(!ag1.isCoupled())){
9 M3 J) t1 }; o8 N g( y+ a System.out.println("YYYYYYYYYYYYYYYYYYYY");
- P. p0 d( c b b potenAgent[goodNumber] = ag1;
# S4 P2 k* W% n0 o5 l. Q3 M6 u goodNumber ++;0 g& a4 B3 f: I. D* R& Y' g
}
! [% \' N% Z* R7 q7 A1 Q }
; E% Z; f/ d* L) J ?' L
) d* y8 ^8 F8 B( F$ [1 ~ if(goodNumber >0){
, ^( L A1 j) G5 y System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); Z* V% `0 ?3 T* S3 x7 l/ d. c
Random rd1 = new Random();
( H) ?9 g! e( h/ U0 }) E int select = rd1.nextInt(goodNumber);
# m! W+ O6 E& Y' {) p6 O potentialParterner = potenAgent[select];
* z3 x$ ?: M# \3 S5 c" g5 b' e7 {2 i value = true;
8 [6 A$ t) v- c2 Y8 Y+ a4 { }* K; I" }$ O9 N- O, G
return value;: z" R' e. L$ _8 Z4 v
}: t. J, b' ^; O' y5 X) I
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|