|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。+ u6 E% {! h4 c2 D% q$ X$ r
private boolean findPotentialPartner(){
. P1 S9 ?( W# p, Z boolean value = false;
4 y; a! l5 h; B' f* g3 ~% [. C ! n- c: G- g) O* f5 M4 u
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
9 S! w" _" Q% k- K: b( m5 g4 V3 y Iterator iterator = grid.getIteratorAt(x, y);* t3 I# s$ u2 o; Z6 ^
SexAgent ag1 = null;
. _& Z3 k7 n" g4 U2 j L SexAgent [] potenAgent = new SexAgent[20];+ p- u2 P! \+ t8 x* e; c' C; ?6 p4 S
int goodNumber = 0;# g- u' x6 M! S0 L+ r9 C9 [* `; e
while(iterator.hasNext()){- S/ J8 n) t" L% _
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
; ]! Y/ ?% L! O- K3 V2 d# `3 D3 c ag1 = (SexAgent)iterator.next();
5 x9 w' Y% D' {1 @% O if((ag1.sex == FEMALE) 7 r5 c* M* h# m+ x) f T2 b
&&(!ag1.isCoupled())){; K0 l1 }' J/ P4 n
System.out.println("YYYYYYYYYYYYYYYYYYYY");
- s8 [7 C- M, u% d potenAgent[goodNumber] = ag1;
2 I- a8 O0 `3 d8 z# U! O goodNumber ++;* ?; Y* |, f1 W- @3 H
}5 k l4 W7 \$ m2 |3 s% z. A& J3 x
}
3 t) O8 \2 Q$ b2 U1 N5 z0 Z0 L
8 x! ~ H6 w! ]: X5 ] if(goodNumber >0){
2 x. b( Q3 N0 H2 h; v8 j System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); P2 M- b4 X6 x8 \" U6 z; H/ Q% c
Random rd1 = new Random();
9 m/ J0 @2 r; i* o5 U int select = rd1.nextInt(goodNumber);
4 w* k# V: I: a. J/ P: [ potentialParterner = potenAgent[select];3 ~4 G/ w; d! s7 `. D A
value = true;
" t) ]/ q& P: o# x }+ o$ ? W4 t8 J Z- y9 z
return value;
4 \- q; [' d! T% Q2 V. j4 j }) ~6 Z; a2 a6 ^2 ]+ I
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|