|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。8 f1 K- l! Z7 @9 y
private boolean findPotentialPartner(){
& l i- N$ A* S- R/ d$ { boolean value = false;
6 j4 i' _3 c( B1 t' a+ J( P' x, d& C, A; Z6 H
, b% D4 K8 u/ c+ v9 Y! o OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
. A) L H, ]4 i; U' d Iterator iterator = grid.getIteratorAt(x, y);$ ~( F; K: `& L0 W0 }- x
SexAgent ag1 = null;
! u L# @2 z0 Q; w) G SexAgent [] potenAgent = new SexAgent[20];6 K. W0 L3 d2 a2 t9 ^) l8 m7 G
int goodNumber = 0;
2 ?( R0 x0 v3 k. H+ F) _' q( k while(iterator.hasNext()){$ }$ ] X! ~9 o% j6 B2 c* N
System.out.println("XXXXXXXXXXXXXXXXXXXXX");( [, m( O5 J* b* i" [) C0 R, Q6 s/ `
ag1 = (SexAgent)iterator.next();" q2 J( n1 w/ M) A
if((ag1.sex == FEMALE) " `4 ~3 X+ l/ y
&&(!ag1.isCoupled())){
! g9 J8 b0 r5 @3 Q( }1 X System.out.println("YYYYYYYYYYYYYYYYYYYY");/ F8 H o( K* y: \$ D( N# m
potenAgent[goodNumber] = ag1;, L; v: _- o8 O1 C0 z" k5 v7 O
goodNumber ++;
9 k6 b+ N9 @, ^8 b$ E. l }, ~) E8 v+ x4 G6 Q9 d
}
) N; q2 c5 U; f# m $ ~4 p0 [. a, p2 d/ S' u
if(goodNumber >0){
; v1 f" ?2 P. ~ B7 k8 [ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
; b- `4 n$ a5 [! N8 t# g& m Random rd1 = new Random();
/ l/ U- T6 p/ {: t& @6 R' { int select = rd1.nextInt(goodNumber);
# A' E: ^8 u, a potentialParterner = potenAgent[select];
% C2 w9 `2 \3 p4 j% q) ^7 ? value = true;
* m0 l/ _1 M% T }
: \& [3 `1 F# R d( F- J8 k! N return value;' _ x! X& M4 P: F/ R8 P/ O5 c
}; z" |8 c& C7 m. E n+ K& {
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|