|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
0 ^, f: z7 W) `0 J private boolean findPotentialPartner(){
3 U. a0 @% J3 ]8 ~, v4 R boolean value = false;
6 F2 G H9 b9 }! l / d: s. r7 K7 Z1 `7 v
OrderedMulti2DGrid grid = space.getCurrentAgentSpace(); x% W. ~5 Z3 L. V- q3 P3 s5 ` j
Iterator iterator = grid.getIteratorAt(x, y);
e# D6 W$ f: ]+ ~ SexAgent ag1 = null; ! x* u" i* Q2 `' P2 Y% m
SexAgent [] potenAgent = new SexAgent[20];8 e/ F& p; x$ B7 k
int goodNumber = 0;8 K' y' K: h( L% C
while(iterator.hasNext()){4 |! Q$ e4 C8 \" d. |) e) |
System.out.println("XXXXXXXXXXXXXXXXXXXXX");- Y% g( O/ E$ d( x9 C/ Q
ag1 = (SexAgent)iterator.next();
0 o, r/ a# x' o c5 v- ]5 k if((ag1.sex == FEMALE) $ O& u+ u6 N4 v
&&(!ag1.isCoupled())){
4 h. T- l9 b* B/ z- z5 |+ ^ System.out.println("YYYYYYYYYYYYYYYYYYYY");: i w0 U$ f) x( t
potenAgent[goodNumber] = ag1;
5 S% A, [0 Y# y goodNumber ++;* |7 f8 H/ D/ z4 }. A1 D, I; x
}8 D6 Z+ k# K* l
}" S) W" m+ o* c1 n7 m: y: v S
7 @! U( z# `/ f, j+ K" g
if(goodNumber >0){6 Y" O- I2 U; J* s
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
! G. X2 n2 W7 g; e Random rd1 = new Random();( b) J' |2 @5 n+ o; j$ s5 A$ o
int select = rd1.nextInt(goodNumber);
b. O7 a, K# E2 h potentialParterner = potenAgent[select];
# Y5 x1 ^* Y$ ^2 m value = true;
6 M4 ?" O0 @" l/ m& n }
9 v- k* o: l* } return value;* u8 v: x" |. i' ?. p
}
* i1 M, c& L: D9 K; s始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|