|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
* j( u' Y# T( B; z private boolean findPotentialPartner(){4 n4 R) x* l0 J( m" l5 V
boolean value = false;2 b0 B1 W3 R0 B$ {
+ {! m1 l! A1 y( l, u j; q
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
' |2 P- \& _* g e Iterator iterator = grid.getIteratorAt(x, y);( H' o7 F# d W
SexAgent ag1 = null;
. h& x q( Q: _ SexAgent [] potenAgent = new SexAgent[20];5 v4 P' F9 x8 L9 `, x; A
int goodNumber = 0;
1 ?! P8 a' r; y' \ while(iterator.hasNext()){
) z* F. N: D4 i1 N5 L! ` P System.out.println("XXXXXXXXXXXXXXXXXXXXX");
( I7 [) Y9 ]+ t8 E' w- e/ F ag1 = (SexAgent)iterator.next();! w7 R, [; R1 Z
if((ag1.sex == FEMALE) Z" j T, h3 P4 V3 F8 `
&&(!ag1.isCoupled())){/ X- ?$ L; e* h% B
System.out.println("YYYYYYYYYYYYYYYYYYYY");
5 F s' F' m! [1 Q" R potenAgent[goodNumber] = ag1;
/ a5 g- ^" t8 p U, R goodNumber ++;* J& ?* {1 l C' ?
}
) _9 z+ d `* k ^3 M }
% \/ g: _0 }3 D. A/ j- x
! E& v+ v& M4 P# _0 { if(goodNumber >0){! ~5 R& [1 K" n+ n9 D
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
* F2 x0 x' Q. k( ~- @ Random rd1 = new Random();
K4 F& J# b* K. _. D int select = rd1.nextInt(goodNumber);
3 B# }- \2 ~* S7 { potentialParterner = potenAgent[select];
; W1 Y8 e6 M5 @6 X. h value = true;: e6 J- l D7 @; r6 C
}; }: v7 F3 o1 r$ t
return value;
( j# e' K/ A" u( D( U }
* O1 L: d: z5 U! t$ r1 V% M始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|