|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
& S; B! S% I( m* @' t g private boolean findPotentialPartner(){
& _. k3 H8 U- a: e1 w- k boolean value = false;0 L9 c9 E& ]# u( G. a5 b2 g
& O! G/ `( e0 M o6 Y$ z
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();$ R7 ]* T& K4 N- E$ }* f
Iterator iterator = grid.getIteratorAt(x, y);
: Z9 c) g( p# Z7 } SexAgent ag1 = null;
; f7 N# f n# t; q; e9 j SexAgent [] potenAgent = new SexAgent[20];& T. L$ ]+ N* q/ A& D1 {0 [4 n9 m, h
int goodNumber = 0;
/ w3 h, U3 A" }: a: n" }7 w. P7 _, M1 b while(iterator.hasNext()){7 j0 H- C5 L1 ^+ G
System.out.println("XXXXXXXXXXXXXXXXXXXXX");: X- u2 t7 i+ e1 ~. z. S" K# ]. h
ag1 = (SexAgent)iterator.next();: N- Q v; i+ u, F5 I) j
if((ag1.sex == FEMALE)
, Y$ y7 a% G; ]" ~7 R &&(!ag1.isCoupled())){& {5 D. X& k! y* b' K4 v, A$ x5 `
System.out.println("YYYYYYYYYYYYYYYYYYYY");3 ^9 n: X. Z/ d, ~( r3 ^; u9 M4 u
potenAgent[goodNumber] = ag1;0 H, f2 Q5 j1 L8 }7 I+ m, n9 Y. M0 T
goodNumber ++;
3 h9 x. n# b1 H, i- U- z" Y' |, A }' ^# f* X4 {* c3 e" m
}: W- t% i! |( x& ?. B; j1 `1 ^
5 y$ m3 Z( s: H# x if(goodNumber >0){! p# l- e+ R* I
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); " r2 X0 W$ A8 }# O
Random rd1 = new Random();
# k# a: [% D7 I& ` int select = rd1.nextInt(goodNumber);
* P+ Y2 _5 B0 m7 V9 j: I5 F potentialParterner = potenAgent[select];
4 x2 y2 G* b% j2 {' G; [. q" U value = true;
7 x) Z- I1 i% K3 O6 N8 c# B H }6 k, C6 ^5 V% i) x0 w2 Z
return value;
, K9 }9 N$ @! Z& r* L }7 ?! I* B0 M& q9 N4 L0 a+ E
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|