|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
/ x1 `. e" k" D) c private boolean findPotentialPartner(){
! u4 G4 Y" F' B9 P* a) B boolean value = false;4 J a# B7 C6 a8 [9 W! k, K
6 ~- q: l3 x9 |+ [. |; P; Q$ o# o OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
: |2 Y1 C/ v3 X" j Iterator iterator = grid.getIteratorAt(x, y);$ v6 {0 |: ]8 @! U* T- z3 ^5 ?3 J
SexAgent ag1 = null;
1 T, U, ^+ I- a5 G SexAgent [] potenAgent = new SexAgent[20];) t+ o. u; x4 s Z5 a4 V6 p/ K
int goodNumber = 0;
" s3 a& X/ M5 P* q7 k3 H while(iterator.hasNext()){
6 D0 U$ S9 g% C/ C' {1 E+ e System.out.println("XXXXXXXXXXXXXXXXXXXXX");
; R7 V4 _) n) a# ` ag1 = (SexAgent)iterator.next();
; e! g3 k; X6 a" [3 F if((ag1.sex == FEMALE) 5 O" I% [( m2 ]
&&(!ag1.isCoupled())){
# }7 Y1 d- M( s/ Y7 U System.out.println("YYYYYYYYYYYYYYYYYYYY");) h8 T. R; J4 [7 e+ [2 M& z* X6 O) T T
potenAgent[goodNumber] = ag1;
6 P* c3 [2 \$ s5 P goodNumber ++;6 z% a7 W1 j5 q
}' P/ `4 }/ {4 }7 F4 z% }6 h* o3 x9 b
}6 z; E! M& }6 n9 [' q* V! X
' |7 m# N" m. O
if(goodNumber >0){
8 S/ J9 S) M( b$ o# K System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
3 G; f* w3 Y1 u6 X Random rd1 = new Random();
A- a7 T8 D, I, W" \: D* a- G) r8 } int select = rd1.nextInt(goodNumber);; \' V8 t0 J, j) i5 p8 f
potentialParterner = potenAgent[select];( r# f( g* K! r( f% P. `, M
value = true;
: z' I+ Q: f+ m }
- ^- P- l, }* F* ]$ e. Z return value;7 x5 h6 ~# D# q. A# k$ F
}9 F5 U+ _& M1 Q2 g1 a u
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|