|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
8 R7 w- P& R1 n& ^+ g private boolean findPotentialPartner(){7 ^) w! m* _( Y9 o o
boolean value = false;0 E- Y+ B: X0 V6 W# ?1 h
9 Q: j Q% L! F OrderedMulti2DGrid grid = space.getCurrentAgentSpace();5 k$ n+ O, h2 y% B- G: L8 `! s
Iterator iterator = grid.getIteratorAt(x, y);
+ Y* X5 c8 R$ E0 A5 D( ~3 ?6 e, }; B SexAgent ag1 = null; 9 P9 V9 m! b3 `) R% b0 p; G
SexAgent [] potenAgent = new SexAgent[20];
9 P Q/ j2 Y6 D5 q int goodNumber = 0;/ T* N& _, q+ a+ L) e5 N* l8 |, n d
while(iterator.hasNext()){
% m$ s# J# m( _2 | System.out.println("XXXXXXXXXXXXXXXXXXXXX");. K5 n3 H5 B! N( ]# j
ag1 = (SexAgent)iterator.next();
" m2 L: v; k8 i* m! s if((ag1.sex == FEMALE)
, A$ s' f4 Y6 D% \ &&(!ag1.isCoupled())){
: B1 e5 ~0 l! x! G% u System.out.println("YYYYYYYYYYYYYYYYYYYY");
3 j0 F+ W) V, q, u6 H; i* h& \ ] potenAgent[goodNumber] = ag1;) d( O" a' v) s7 j$ c
goodNumber ++;
7 |: \) q ]$ j }
+ Q/ ]) |, e* V |, U }
0 q, t8 g/ x/ Y$ D0 l* l 0 m6 u1 t4 \4 d4 O0 Q
if(goodNumber >0){2 P) L' W! a/ ~1 p: r5 n
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
! d- k3 t; _: R4 A1 n Random rd1 = new Random();8 e! x3 D" ~& r$ O
int select = rd1.nextInt(goodNumber);# P; A, U- y2 c* f- j# t" p
potentialParterner = potenAgent[select];
+ h+ O* T7 u T% y5 x& y value = true;
# ]5 ~' j& x% R: Y7 q }" a6 }2 @$ p0 c% F/ c5 _
return value;
' u6 M2 E ~. [0 H8 R* x! i }
' K, r3 ?1 m, J0 G6 B/ X7 O( a始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|