|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。0 l& [; d6 l3 h2 u) E& G! I
private boolean findPotentialPartner(){, `' v: r; ~$ ^6 \8 K
boolean value = false;6 p, z5 a: t% t# F0 A$ p
, H5 Q$ `0 U. w OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
2 e- o2 E# v$ f+ ? Iterator iterator = grid.getIteratorAt(x, y);
( a/ h0 c) r0 Q3 N, A+ C1 f SexAgent ag1 = null; - p7 V; M# S) C- n: x
SexAgent [] potenAgent = new SexAgent[20];
1 f7 O, n& G/ S" M) _! ~ int goodNumber = 0;$ R! u2 }- k% M! h
while(iterator.hasNext()){
% d# y% N. \" }4 M System.out.println("XXXXXXXXXXXXXXXXXXXXX");0 a4 C" G6 o0 T
ag1 = (SexAgent)iterator.next();, S8 I' e0 t: R' Q: P7 w) T
if((ag1.sex == FEMALE) & u' N& E" P. c+ A; v! j
&&(!ag1.isCoupled())){
' R' U) p7 w1 L; T0 r* U; u$ \) e System.out.println("YYYYYYYYYYYYYYYYYYYY");6 V+ M6 p% H4 X( T
potenAgent[goodNumber] = ag1;" ?8 R$ Y, |. W
goodNumber ++;8 s3 G$ P: x* T
}* T3 i! j/ P: R# a2 ]! r
}
2 Q+ Z1 ]7 V' ~1 M4 {, K& q
( q+ y T7 ]5 ?* t" E if(goodNumber >0){
2 l+ C; ^) K& W' S System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
2 F' [5 o( j; A8 _1 g9 K Random rd1 = new Random();3 G' M0 |9 }1 A6 y, L4 y% [# m
int select = rd1.nextInt(goodNumber);# Z# C; n& E, ^& V3 ]
potentialParterner = potenAgent[select];
4 e5 B8 |8 ]3 F8 [ t! e5 z value = true;
. [3 O9 B1 z1 X8 A }8 N/ l. j% T. L: j
return value;
7 h# ]7 Y+ |# Q. I }( `0 ]$ _2 _& ]: A! {1 w+ Z7 D
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|