|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。" ^4 l+ f& @' G/ v% z& Z# ]
private boolean findPotentialPartner(){
, Z" e( V9 J5 Q- }! T/ ~- Y boolean value = false;
8 H9 c0 v, q% ?7 t5 ?" `) k0 t' `3 n- a 0 _8 @0 U5 T5 \0 K8 P) N
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
+ o9 M+ V k1 p0 f3 n7 D. [( Y v7 M+ y Iterator iterator = grid.getIteratorAt(x, y);
) `- B5 o4 z5 f1 B9 [9 b B SexAgent ag1 = null;
3 ~9 O2 ` A, G5 Y7 L' q# N SexAgent [] potenAgent = new SexAgent[20];
F2 ^7 h7 I2 b9 b8 d int goodNumber = 0;) D6 j( u+ \- b$ {; Q+ x
while(iterator.hasNext()){
5 i. q( {+ |4 W m8 W System.out.println("XXXXXXXXXXXXXXXXXXXXX");
, U- n: d6 J+ d& E# K" k5 r ag1 = (SexAgent)iterator.next();# Q% _; {5 k+ N
if((ag1.sex == FEMALE)
8 @% A0 B, Q- g4 x: i+ i9 d" g1 s! F &&(!ag1.isCoupled())){! ]1 w6 U' H" _7 r" A0 d6 z$ E: _: W/ M
System.out.println("YYYYYYYYYYYYYYYYYYYY");
" A9 W! |- r5 g5 c* f! Y- V; I potenAgent[goodNumber] = ag1;
% N: {) t+ ]- U goodNumber ++;8 N* d" a2 y$ f, I# B6 d) B: M
}
, J+ v; C* i' U9 }& D }$ I1 t' v4 c; x/ a8 {
9 q* \" ]7 a& F2 _# f. q if(goodNumber >0){
8 E7 A5 j! j* B0 q* _( | System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ) S7 D6 q" H1 {5 B& R5 q5 l
Random rd1 = new Random();
5 P* c+ C6 D0 k1 a int select = rd1.nextInt(goodNumber);+ N0 a7 O" q6 A3 Z" |& j
potentialParterner = potenAgent[select];
g' E! z0 p- A( ]" d: m0 T! Z% C value = true; O0 ^& I5 x: F% X" O
}
& ]0 a2 y. Q0 ? return value;
' [: J- j* w+ P( m- ^0 O' t }
' v- e6 ]' K/ W: X, B始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|