|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。5 Z [1 }. r! W3 V4 h
private boolean findPotentialPartner(){
- D) \+ I% h% D! M% P5 x, p boolean value = false;0 e! S& U+ _, i" @1 T1 v5 z7 e8 d
) z* j, n' o& s9 H" v6 S OrderedMulti2DGrid grid = space.getCurrentAgentSpace();; V& A O+ Q0 B, Y+ q
Iterator iterator = grid.getIteratorAt(x, y);! i" |# y6 Z2 W/ {5 |. i
SexAgent ag1 = null; 4 M, M1 T2 M ]4 R/ b4 w5 m0 w/ f
SexAgent [] potenAgent = new SexAgent[20];
D( C9 D: T$ f6 n7 `2 u int goodNumber = 0;
) |: v: X+ V" P while(iterator.hasNext()){$ X. O8 ~/ P I1 B
System.out.println("XXXXXXXXXXXXXXXXXXXXX");7 e( g2 K$ U, e) f5 A n% c
ag1 = (SexAgent)iterator.next();. `7 y" G0 M6 O, y7 O
if((ag1.sex == FEMALE)
0 H) f: f' D, [8 P- m- e; e &&(!ag1.isCoupled())){+ ^: E; q N7 O4 F
System.out.println("YYYYYYYYYYYYYYYYYYYY");
, F* H+ R7 i# V! i8 L potenAgent[goodNumber] = ag1;5 {6 N( [$ W3 D
goodNumber ++;
, c+ V' G: l7 Z9 a }
, b) g# D& F3 ~! o _( A% y9 Q2 [' f }
8 r4 K, O. u0 d f. C
. R+ ^2 H Z$ m1 }, D6 A if(goodNumber >0){
# F( A' Q4 L0 Y1 Q* m, B; b: x System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
9 _- ]! S0 r6 O& _7 D/ M+ _ Random rd1 = new Random();1 {, l9 X8 t7 N E8 l0 y* L
int select = rd1.nextInt(goodNumber);
; Y; P/ C" y% T- f! e potentialParterner = potenAgent[select];; E/ Z" b! e3 Y' _% A/ N. G& W
value = true;
) i6 B9 S- Q" }, `* [ }
7 U, y( {7 d, A0 g, t v! A return value;" z! c4 d7 M* N9 A* s0 R
}
# E' z# |: M# h* f+ r0 q# Y Y& i% Y始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|