|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
1 @6 @1 U6 v9 h+ e; J private boolean findPotentialPartner(){$ ?8 }/ t1 S, |$ s% N/ v
boolean value = false;2 d* `$ N. {3 P, Z
3 e8 s+ X% f# Z6 \8 O% ` OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
* q" b% l/ T5 T$ I5 d Iterator iterator = grid.getIteratorAt(x, y);
1 {' v7 ?" o: R! y# M! w; G7 z% f' k" n SexAgent ag1 = null; % j; @9 L0 t, b2 _) m
SexAgent [] potenAgent = new SexAgent[20];8 `9 M7 F7 _( I) W u. T" h
int goodNumber = 0;
! A, m, t! x+ |: y7 t while(iterator.hasNext()){1 d' j$ p& u# g2 I1 |
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
# n4 F$ x* q, z4 R+ r7 Z ag1 = (SexAgent)iterator.next();2 y8 a( F/ d2 @9 W0 Q
if((ag1.sex == FEMALE) % @" L9 K5 i' _: a k
&&(!ag1.isCoupled())){
* s. v; i# c& q" s1 J* l \ System.out.println("YYYYYYYYYYYYYYYYYYYY");7 y K: N& P6 Q8 ^/ w7 g
potenAgent[goodNumber] = ag1;
, `9 S9 n6 m; }2 r goodNumber ++;
% U4 v2 k3 V; v* Y j3 d4 C/ u) h }, P) ]" I! m4 n9 \
}
. k9 T) k7 F" j- c c & x5 Y. \# u8 h1 H8 ], E; G
if(goodNumber >0){
$ ?) n- r3 ~ |/ n' }2 c System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
% M# k7 u- y% i4 _2 h: v Random rd1 = new Random();
: S8 x6 Y' `; r' e. M o. g int select = rd1.nextInt(goodNumber);. Y- z8 M# B- u W- u. L1 s
potentialParterner = potenAgent[select];& p2 i3 t) e- X5 d
value = true;
8 t' F. e. r3 ]) S7 W }
7 m) r2 `8 \, n- J3 [/ B return value;
" Y2 r6 M- ]$ t. [ }) `" F2 ~6 }4 l* @6 j- y
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|