|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。8 v8 [- l( E* R0 S( m5 Z
private boolean findPotentialPartner(){
4 Y' k$ N6 E1 k8 } boolean value = false;6 {5 v, L$ O7 C1 z/ G
& o+ d! V% t0 ?3 K$ K5 m
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
0 _% I9 u4 |7 o0 |% x" D/ i, G Iterator iterator = grid.getIteratorAt(x, y);4 t6 U9 Q3 u9 p* U' O; `! g8 _$ v
SexAgent ag1 = null; 1 n- j8 U( K( L; H
SexAgent [] potenAgent = new SexAgent[20];
. B( Y9 g4 h2 G- S) M& y- `3 z int goodNumber = 0;
# u" r4 b- e0 H. ?+ d while(iterator.hasNext()){
! [' Y" b4 V L System.out.println("XXXXXXXXXXXXXXXXXXXXX");
0 {+ Q' Q4 f6 r" h ag1 = (SexAgent)iterator.next();
+ C$ G' `3 O+ w8 M: b z; G if((ag1.sex == FEMALE) * i$ U* D( d8 T6 z6 G
&&(!ag1.isCoupled())){% y. H5 K, d; y0 w/ A
System.out.println("YYYYYYYYYYYYYYYYYYYY");+ M, ?' Q9 Y$ q8 R0 b% b! x. K
potenAgent[goodNumber] = ag1;
/ K7 _. X7 G9 |0 b+ f1 v2 e+ | goodNumber ++;
' |) A8 n% J) X0 S }# W2 u J/ ]" [6 } j* b/ N; i
}" W3 E( ]" z1 z5 R& H6 \
4 j- q, _+ t0 N: Z: J/ x* G3 Q/ Y if(goodNumber >0){
- E: @, y4 `6 U! k/ \ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
; I8 I0 v& ~. l9 A$ j Random rd1 = new Random();
+ Q7 D8 F- s H0 g! z) ?3 F int select = rd1.nextInt(goodNumber);; f4 U$ Y7 z- e# U6 X! g
potentialParterner = potenAgent[select];" C. I) Z9 M7 l
value = true;
& P- A" o# [/ ?4 b+ |( s2 O: y+ h! V" m }
9 T. K" O* ~1 z7 H ^ return value;. I. k( e: Q6 I6 c) g+ S1 A( B X2 u
}
6 D1 M* D5 f* Z$ {, I2 E. r始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|