|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。$ A' ~6 l" x8 Y8 m- v8 [
private boolean findPotentialPartner(){
+ }& x* N& f! N* Y {; N boolean value = false;
, l% U s3 ?+ F b
- [: t9 H3 g/ \7 [% v OrderedMulti2DGrid grid = space.getCurrentAgentSpace();2 A# t+ _, D& ?
Iterator iterator = grid.getIteratorAt(x, y);) }" U" l8 T$ S2 M3 x! d6 M" F a
SexAgent ag1 = null;
$ K( j. ?* {% A% L( E( p q SexAgent [] potenAgent = new SexAgent[20];' A; b0 ]+ a3 x* h
int goodNumber = 0;
( Q3 P; J: P$ w( m while(iterator.hasNext()){4 [) w" [+ j$ e- j) o( b
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
) E/ ]. g1 H( F& Y, \' w ag1 = (SexAgent)iterator.next();6 P3 t4 m, h6 h, k8 X3 A c
if((ag1.sex == FEMALE) 8 z/ G0 N# v9 ~" x; ~2 a
&&(!ag1.isCoupled())){
% Y: j) B3 s9 y) f, v/ x1 H7 M, l" o1 M System.out.println("YYYYYYYYYYYYYYYYYYYY");
# h$ b& o1 i$ | potenAgent[goodNumber] = ag1;
& }& n9 }' X$ G* ^7 q+ L goodNumber ++;& m1 \- n! p% T7 A
}2 s2 [) _' b4 U# C$ _
}
+ N' ^% {8 \' |( n4 J% {- _ f% i }% N z$ V4 u( M9 y
if(goodNumber >0){
5 w" L& I& p" i, w System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ' V K+ b9 h: G, y
Random rd1 = new Random();2 @3 H4 t' \4 o
int select = rd1.nextInt(goodNumber);) e) l- b; q/ M1 f4 t
potentialParterner = potenAgent[select];
: O% a2 p1 |0 C. n* S1 E value = true;' b/ t# e* z" m6 f
}
* c( [* P' H& n/ y, q6 L+ \ return value;
+ u) Q1 }# @; p5 [' D* u* W- Y }+ o8 D. o+ o7 R7 n* i
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|