|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
$ I8 ]" x" X- p- P# h/ D0 s; x, _9 C$ J private boolean findPotentialPartner(){
3 g+ {: A- g( z, \( x A boolean value = false;. o) Q1 K& N6 J( M$ E i, W7 Q
$ k ]3 _+ c! k( f4 t; e
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
% D% W. I% h! R1 W% E8 e a5 t Iterator iterator = grid.getIteratorAt(x, y);
6 l1 i% }( i W4 G1 r# W SexAgent ag1 = null; 1 W' l* P' ^, I* |# Z2 `
SexAgent [] potenAgent = new SexAgent[20];, V# ^* q, W+ I4 i0 N) P1 B
int goodNumber = 0;+ y- n: Q5 P2 p- i5 a: A
while(iterator.hasNext()){0 t8 c t5 j5 ]3 d7 ?7 i8 n
System.out.println("XXXXXXXXXXXXXXXXXXXXX");: u7 j# I0 V( H# v, b! @- b
ag1 = (SexAgent)iterator.next();
* w: B, ?7 x6 g7 i( w& C" i& | if((ag1.sex == FEMALE) $ q% K* \8 G$ z
&&(!ag1.isCoupled())){6 t% c+ X: E' ^ N5 ?+ [
System.out.println("YYYYYYYYYYYYYYYYYYYY");9 D" R% J3 P' A. N
potenAgent[goodNumber] = ag1;
7 B) v2 I: }/ c goodNumber ++;0 v6 r) I% C# ?, A/ P
}% O' ?4 T; S& f9 r: a% W5 m
}
( e c5 K. ?& ]; p5 ~; K8 [ . P. q% I7 `, z/ U6 `1 h
if(goodNumber >0){# s, B4 V x( q* P- P2 M7 a
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
6 c9 }1 s2 M& _ Random rd1 = new Random();
0 Y9 y' K( L; P4 D& H* ^ int select = rd1.nextInt(goodNumber);- \% M. \3 ^" m0 ?0 J$ O# e
potentialParterner = potenAgent[select];
1 G) c7 u" p# u0 z/ R value = true; ^+ @; _: E* f
}
% w3 \+ u: ^ _ return value;
! \2 W) N) k0 e& S) \3 ~' A A' v }
5 I4 L! }4 u# V始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|