|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
4 d9 U, o' ^ O, N# N private boolean findPotentialPartner(){
6 A! G* x3 l4 g+ b- U boolean value = false;
+ ?" ?4 W8 [% K $ t$ ^6 G5 E4 n7 i7 s
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
7 ^! G( T0 }' C/ T Iterator iterator = grid.getIteratorAt(x, y);2 l2 u0 w) Q+ [
SexAgent ag1 = null;
- M. Z/ @5 Z! N9 o* D% W: b SexAgent [] potenAgent = new SexAgent[20];
5 W9 \# w- a, p6 X7 V( F) i3 B int goodNumber = 0;1 e! k4 V/ y' \0 d* G3 O5 @
while(iterator.hasNext()){
( G& N2 k4 x3 [4 l; e& i+ t System.out.println("XXXXXXXXXXXXXXXXXXXXX");$ Q; ]0 Y' x1 z: Y+ h7 ~. V
ag1 = (SexAgent)iterator.next();# g( w" a9 I7 Z; }4 U4 t1 b% H
if((ag1.sex == FEMALE)
- @: V' P! s B &&(!ag1.isCoupled())){& c8 |6 l3 L% P+ S
System.out.println("YYYYYYYYYYYYYYYYYYYY");# J& p- R& ]" K- Z1 v/ K' n
potenAgent[goodNumber] = ag1;
* l, \0 |1 K7 |# N S goodNumber ++;
( o4 d- y8 h5 [+ y* I0 |4 Z }
7 n1 q0 l' r; K R% K7 p3 N' h }
& M F. y4 w u* |4 g8 e) k
2 e. e4 i' q) A$ Q0 i3 Z if(goodNumber >0){
$ ^% [2 H$ z( B% B System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 6 m( \! \2 E% U6 p" d
Random rd1 = new Random();
2 q/ v$ c2 M# r" T; L int select = rd1.nextInt(goodNumber);
: b* ]2 |% X# Y; E potentialParterner = potenAgent[select];$ {3 N6 ?: N9 I1 n
value = true;
5 x/ r7 @7 R8 m5 j1 o }
% _8 G6 a' J: [; z" ] return value;9 E6 V9 G" A$ K: y! j* s
}; u4 c/ j4 m1 T8 X
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|