|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。2 y) V" T. L6 `3 S6 a4 {0 B( ]
private boolean findPotentialPartner(){. C, F# ~' }: g) A
boolean value = false;7 L; \! H, t, G$ @
) e8 x8 _$ _' y7 j/ N/ |2 d
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
# T4 s2 y# y/ Z$ }. p' o, X Iterator iterator = grid.getIteratorAt(x, y);4 I! Z1 k! r; p
SexAgent ag1 = null;
8 J4 i1 W5 v1 R# i5 t) T5 r) w' C5 P SexAgent [] potenAgent = new SexAgent[20];1 p8 z7 c6 ]7 b! l
int goodNumber = 0;$ Y' w `; S3 D3 k* f. C9 J# P
while(iterator.hasNext()){) D, [$ G" \, Z; o
System.out.println("XXXXXXXXXXXXXXXXXXXXX");/ \. s1 U1 R. Z; U- q1 p
ag1 = (SexAgent)iterator.next();
+ R1 M9 {- e1 @" H if((ag1.sex == FEMALE)
; {3 ~' h* D2 f! Y &&(!ag1.isCoupled())){
' ]: k- `. O8 W" U System.out.println("YYYYYYYYYYYYYYYYYYYY");
. i. B, @. @2 n+ a: G, M% q( s potenAgent[goodNumber] = ag1;
% X% d) O* F ?6 n! Y goodNumber ++;2 n. F( o8 W$ N2 N
}& O3 A# e2 D2 {
}
7 D+ D/ t9 f1 P2 B2 @9 Q
+ ]1 O* D5 T7 T5 f& |% f2 _+ m n if(goodNumber >0){* B6 `: V% b- r: C" A* c' P
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
3 n& f! K3 T3 n! F" r9 j! c Random rd1 = new Random();
2 N5 x) A$ U- O5 F+ _5 p int select = rd1.nextInt(goodNumber);
/ A$ a7 g) @+ ^+ [. U% D* | potentialParterner = potenAgent[select];/ v7 r' R7 A4 \! q) ?8 i
value = true;
$ P2 J& E2 j, ^' Q8 o2 Y" f. } }3 z& z7 K( }& K; u- G
return value;
3 O* {) m6 f, D6 Z }5 s0 W. `. Y( A5 O' \, N, H
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|