|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。4 z A: J% [5 b
private boolean findPotentialPartner(){2 u2 L! v. t1 R
boolean value = false;
3 V- E, |7 m" d1 N @$ `$ K # m: @4 q: `, |* s, _! a3 V
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
. \7 r. S4 {' m3 m4 P' s6 B( L Iterator iterator = grid.getIteratorAt(x, y);; u+ R; |. P. z4 ]2 k6 @
SexAgent ag1 = null;
. r; {& J2 T |6 y SexAgent [] potenAgent = new SexAgent[20];
" E8 x2 r! U X int goodNumber = 0;9 H8 u! q, i/ |
while(iterator.hasNext()){1 [2 G3 C1 W' E1 G. H
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
5 ?3 O( H# T: v( p; h% e$ W8 _( f ag1 = (SexAgent)iterator.next();' i( Q/ O; y- {9 u" Z5 `% l
if((ag1.sex == FEMALE)
1 C2 o4 X3 T7 @1 C: S &&(!ag1.isCoupled())){
, ~( Z2 q E1 b3 ~ System.out.println("YYYYYYYYYYYYYYYYYYYY");" M" u( x' y" ?. s( s
potenAgent[goodNumber] = ag1;
4 Q8 A" X: o2 R% M8 Y, I4 I3 b7 Y goodNumber ++;
& C/ R" O: n8 t; u8 ~; X6 X }
* J7 @( C. Z, _ o' N& @ e }
; N8 e; E( h% Z; @# V8 s4 c2 k ) T1 T1 X! P( A" b+ H
if(goodNumber >0){4 j C' y6 s" T: f7 U D+ v
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
2 ]" o4 K- p7 a+ y3 ~' l$ j Random rd1 = new Random();0 S- X5 l3 A2 z' q$ I _ L
int select = rd1.nextInt(goodNumber);( s7 ?: E0 z7 {8 e1 r+ k
potentialParterner = potenAgent[select];9 Y7 M+ o# k; G3 @7 H7 E
value = true;
5 E4 N8 i! f! |8 W9 M2 O, l }
3 j: ~7 I3 P$ E0 Y return value;
, I+ P7 V+ d, L; A5 c) x }
6 b3 e3 L7 b2 `; _始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|