|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
8 O9 q3 P( Q5 A5 s1 N8 [ private boolean findPotentialPartner(){
' U5 N5 e+ N! m \7 {6 Z) X boolean value = false;) D8 r' K4 y% W2 ~/ w
9 x5 i% ]1 G) m, c- [: A8 G
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
* ?* o7 }1 B& |, K" F Iterator iterator = grid.getIteratorAt(x, y);
# e) _- e( v/ r7 x% s SexAgent ag1 = null;
; J6 }- W* K3 u6 m k7 [7 c SexAgent [] potenAgent = new SexAgent[20];1 }% X U9 V2 Q6 B$ f0 r' X [, U0 V
int goodNumber = 0;
) }9 M: @# c6 P: { while(iterator.hasNext()){
9 m: q9 u, E0 V# f/ r( Z System.out.println("XXXXXXXXXXXXXXXXXXXXX");$ h1 K$ \% s' i5 |
ag1 = (SexAgent)iterator.next();
* X! {# S1 [5 I/ ^ if((ag1.sex == FEMALE)
A, A7 b7 F4 k, T &&(!ag1.isCoupled())){- V$ J h( L/ m b
System.out.println("YYYYYYYYYYYYYYYYYYYY");& c3 v) n0 c4 |; ?7 m, g
potenAgent[goodNumber] = ag1;
$ |1 n) x& _# O: {% s goodNumber ++;& o3 j/ G! t- I: l2 t1 r
}2 s, _/ {! @ u0 I i
}6 L- u; J6 `% B: V
: W8 {- O1 X" O' ?2 X0 ]+ z
if(goodNumber >0){: m9 ?2 i$ S3 _
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); @( \2 w/ A- I
Random rd1 = new Random();3 h$ I# T! G: y' h+ J; i& R; J
int select = rd1.nextInt(goodNumber);2 c# W( U" m0 J3 G \+ P
potentialParterner = potenAgent[select];
" Z# ?7 I4 }6 q( \* j/ _ value = true;* F! e" A$ C% e* c
}2 ~5 U! @: E7 O h! F
return value;( h- ?9 E$ z' M& C2 d6 q( N# y) M$ A
}+ U' o. M, c* W) @) O. h% ^; r7 E
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|