|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
8 J" B, V! U$ D" _1 M7 X5 ~ private boolean findPotentialPartner(){5 C) D0 T- D' R" }: `' ~7 y
boolean value = false;
, ?4 D9 {% Q! L! p8 T/ x( o
' O# y: l" Q. _. l OrderedMulti2DGrid grid = space.getCurrentAgentSpace();. _$ ^$ X P9 G0 B- e; r2 `
Iterator iterator = grid.getIteratorAt(x, y);$ P4 Z" G% _( }5 ?
SexAgent ag1 = null;
! _% ]. t6 u. P SexAgent [] potenAgent = new SexAgent[20];
# I4 l# f E; `" z( t int goodNumber = 0;& l$ Z7 _5 |' N7 h$ u. ]" F
while(iterator.hasNext()){$ z& P" c, P- Z0 s. s& \
System.out.println("XXXXXXXXXXXXXXXXXXXXX");) }7 k8 M/ [+ |* j v0 M( q k
ag1 = (SexAgent)iterator.next();) a* f* z9 o. x; V3 C
if((ag1.sex == FEMALE) ) R. _ N6 d3 N# U8 |; o) M0 D
&&(!ag1.isCoupled())){% f' c% e$ d% n3 H' Z9 q
System.out.println("YYYYYYYYYYYYYYYYYYYY");% y \, ~$ Y' y5 F5 T$ \/ B
potenAgent[goodNumber] = ag1;
- G7 U% O+ b6 k9 A goodNumber ++;
: q; a% {) U& A9 S }
" ], b3 S1 ]. \/ k }4 k/ _: V- h7 A2 H: N
1 c1 `# e/ ~% G' B4 ~' Z
if(goodNumber >0){
/ T9 G6 p' [' G2 A System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 9 @ U( ~8 O2 T
Random rd1 = new Random();
; q7 \0 {* n, S- \7 ]6 \ int select = rd1.nextInt(goodNumber);+ f: d0 C- ^ i
potentialParterner = potenAgent[select];
9 \. X( a$ _" f1 L" R: ^ value = true;
6 e. m$ |: H7 | }
" S; m/ J1 [& z8 ?6 V4 ]7 o return value;
" X* S7 U& d' L7 v7 D0 x }
5 r4 q3 }6 R. J- q始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|