|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
G; s) j* c$ v6 ^+ Q private boolean findPotentialPartner(){
' a6 |9 k5 M7 ~: V boolean value = false;
: S2 D4 m4 V$ `4 [" C
# D/ n g4 G C. R7 p, u OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
! S( K2 H1 M" s0 _ Iterator iterator = grid.getIteratorAt(x, y);& i8 [% g- e2 i5 _3 {
SexAgent ag1 = null; % B6 u& A3 {! B- @: @. I
SexAgent [] potenAgent = new SexAgent[20];
& T$ ^. ?; c! r int goodNumber = 0;
! q) c8 L# [; y7 e9 L X. H while(iterator.hasNext()){
3 h5 s/ c3 Q' ?' h& w8 A. } System.out.println("XXXXXXXXXXXXXXXXXXXXX");
7 Z. p, p! o3 w ag1 = (SexAgent)iterator.next();% {& _; C6 V+ I+ \
if((ag1.sex == FEMALE) ' [4 R6 M# e( G* z- B
&&(!ag1.isCoupled())){
" q) } O: {( @; {, [6 K System.out.println("YYYYYYYYYYYYYYYYYYYY");6 o. |! u& X# v0 q$ }, S6 |& |
potenAgent[goodNumber] = ag1;# \/ C& D" K7 _# c, U/ `
goodNumber ++;
/ z7 S g% {/ u/ D1 k7 ? }# O3 C6 M0 d" G1 e8 @% X
}( d) S p# V, T
. `) r/ t: P" ` if(goodNumber >0){* O, _( P+ X$ }9 \0 J' E9 Z& O+ ]
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
2 v2 o3 x" M {1 w; E0 N& c; { Random rd1 = new Random();
8 ~8 j+ k! N, z7 d# o int select = rd1.nextInt(goodNumber);- n2 O$ _( ~ r/ J3 ?
potentialParterner = potenAgent[select];, j3 u) b+ j/ G: Q/ C
value = true;
8 ]+ j; V& k) r( p3 w% h3 C9 w! O }
, B1 H2 v; [; q return value;! j I [* Q; }# n* [, q
}. i7 c8 `7 _$ F$ i$ w, I
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|