|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
) V% w* R1 z) i private boolean findPotentialPartner(){
% c9 Q+ ]: W0 \" `& U2 j boolean value = false;) J7 C* q2 T4 L
, `; y! e! Y" H3 Z# u* {5 b7 ^# Y2 N OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
/ j3 K9 n! ~2 C, `3 d" t( F( m [ Iterator iterator = grid.getIteratorAt(x, y);
$ \3 k4 M/ B1 _% z1 n3 V7 D; N: O* N SexAgent ag1 = null; ' O% p- ^8 Y. A: x' j
SexAgent [] potenAgent = new SexAgent[20];
u) ]2 b5 ^. H6 U int goodNumber = 0;
9 A! i4 ]6 P/ P S& v4 {8 V while(iterator.hasNext()){: S& P t/ q8 \0 I# @
System.out.println("XXXXXXXXXXXXXXXXXXXXX");+ D+ n% c& k* m+ u U4 g, ^2 b
ag1 = (SexAgent)iterator.next();" X! Z% J+ A6 U, e( v4 @- r
if((ag1.sex == FEMALE)
: S4 d& d; k# u5 l &&(!ag1.isCoupled())){
; F6 ]% b9 s' k" o/ k) h System.out.println("YYYYYYYYYYYYYYYYYYYY");
; Q; j* v7 l0 D8 H potenAgent[goodNumber] = ag1;
2 r* o! z0 r1 n0 X goodNumber ++;) n3 n. q% Z2 ^1 u0 O( Z
}
/ N- C$ W, e7 B, W) d }
6 u2 X. H* T, C" d. [1 a
1 }- R8 y$ A: q8 d- O) J if(goodNumber >0){
- V1 ~. m3 `$ V! [) D' M7 I; } System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 0 `/ E5 P9 O! U, y2 w8 {0 z6 j
Random rd1 = new Random();
& x- T3 {& C1 c8 q int select = rd1.nextInt(goodNumber);9 J* o9 w3 B1 q6 D- H) R
potentialParterner = potenAgent[select];
; B. X: l* g! h W9 f5 L) W- d value = true;0 \2 ?( F e+ E H& k4 |
}
( ?' [1 |' E: z) q' J1 R return value;
8 t4 r4 H* g9 l0 N( ~ }, [8 V3 C, o, { k" P' G. K/ A, s
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|