|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。5 U( U" F5 U0 ]5 _' Q+ Y A
private boolean findPotentialPartner(){
/ M' I$ r1 ?& b+ f& U boolean value = false;& W: T e6 T5 b2 a
( z# K7 b' `+ V$ Z5 _2 m$ R7 \
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();1 f8 a4 _0 A2 K3 P$ U( y
Iterator iterator = grid.getIteratorAt(x, y);
. K$ a& Z2 x! ~ SexAgent ag1 = null; # z4 o: S( _ S5 D& v2 p1 k
SexAgent [] potenAgent = new SexAgent[20];
3 K' @/ [) a4 m% b* T! F int goodNumber = 0;, i3 B) F5 p. L; a7 Z
while(iterator.hasNext()){
$ j3 w; U- Y) K2 o: t/ x6 B3 W System.out.println("XXXXXXXXXXXXXXXXXXXXX");
* h2 G/ ^% y |" g. Q0 H2 Q ag1 = (SexAgent)iterator.next();
( T% F9 E4 [: p s7 L$ H b- G if((ag1.sex == FEMALE) 5 J" l; s" N: d6 k4 y0 Q/ }
&&(!ag1.isCoupled())){
6 P: s; k8 E' q: T0 v- ? System.out.println("YYYYYYYYYYYYYYYYYYYY");
" b4 z& q) ^* [0 }& q4 Q potenAgent[goodNumber] = ag1;
: V7 e" o! {$ n7 T+ i- K goodNumber ++;( f4 i. r i5 ?1 ^! s' T
}
8 D, F/ [" R9 H5 n6 s9 D }
' A7 l' {" P$ y
9 W' W; ]6 Q, J% L if(goodNumber >0){
1 m8 @8 h) H" n6 }" v% q1 U+ F System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
, t2 A* F3 h [6 q* ] Random rd1 = new Random();
1 z! n; I8 V. O; [ int select = rd1.nextInt(goodNumber);: p1 K9 k( u5 e: T# P
potentialParterner = potenAgent[select];
0 ]# L1 m! Q. u( d* Q) \: V value = true;9 Q. B) j% U" g. s7 b
}
, e8 S" e$ e) Z1 `5 {, z }+ i return value;
7 \$ w) a6 J" i- M }
0 v7 }7 B) z$ A始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|