|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
; b7 i Y% f; k0 T6 h private boolean findPotentialPartner(){
: e- h. M& p1 q7 F) O* q; F: M* {# r boolean value = false;
9 T' \0 @) H) h : d4 h4 W0 u, C' C0 {; g. |
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
, {. n- K: L6 q% W Iterator iterator = grid.getIteratorAt(x, y);) T5 X4 d7 |8 N3 R( [
SexAgent ag1 = null; . Q# w2 {0 d+ M' c2 k4 f5 C% u
SexAgent [] potenAgent = new SexAgent[20];
% B) p" [! A4 r( J: H! h9 u int goodNumber = 0;
$ s+ W9 I8 T8 U/ h* P while(iterator.hasNext()){+ {- d U& K# O5 N7 {9 M
System.out.println("XXXXXXXXXXXXXXXXXXXXX");" k, n+ Q' r0 x3 B a+ {
ag1 = (SexAgent)iterator.next();
Y7 b; w! F' T1 J# e if((ag1.sex == FEMALE) . a4 k+ D: d3 R
&&(!ag1.isCoupled())){
9 G+ Y- c; I4 o; S& l9 @0 C System.out.println("YYYYYYYYYYYYYYYYYYYY");6 V7 |8 F: l$ K4 \ k, _
potenAgent[goodNumber] = ag1;) f4 _ u4 R6 q& `. K( Y) y- H) [
goodNumber ++;
& x' E5 r$ ]% s2 d! U: H4 a }
1 p1 K3 B% c5 `6 H% `" i }
, }" A, r/ T; }& K, e- ]# `
2 Y5 K5 g+ F$ i if(goodNumber >0){- }' x. C9 {2 f; _0 c
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 3 Q: {; t" B6 t3 d/ m
Random rd1 = new Random();$ g5 t# J. |% {7 h/ s
int select = rd1.nextInt(goodNumber);
0 Y" B( y2 G7 U" n potentialParterner = potenAgent[select];0 O( k7 ]. L# o1 r3 G* r
value = true;7 p% n6 r4 o- z, o. a
}5 _6 }" ~$ `3 u
return value;
1 u, s& s/ ~. r7 n }
2 e8 D+ }4 H' W; o1 E) \; V3 Y始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|