|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。2 N" Y+ J9 R+ H5 d D' K/ F" N
private boolean findPotentialPartner(){
! b5 U# c) R/ C% D boolean value = false;/ U4 _, t/ T5 [5 V4 f* z+ u
- o, R3 R {. h, E* s7 d* s
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
+ d; J" c$ w1 E Iterator iterator = grid.getIteratorAt(x, y);/ q# e" ~1 n) V( c4 R
SexAgent ag1 = null; . k8 G3 H4 l* x: [
SexAgent [] potenAgent = new SexAgent[20];
6 _ N8 d$ b9 B& F4 ~4 i int goodNumber = 0;2 A! |2 {( O7 a$ d& F( U
while(iterator.hasNext()){" U7 h+ A9 m1 \1 C( O# U, |4 k
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
3 D) T8 Q, ^* `. e5 r2 ~4 m ag1 = (SexAgent)iterator.next();
! p3 q5 @+ X( C if((ag1.sex == FEMALE)
; ^& l! `& h( o5 ^3 Z2 e* _ &&(!ag1.isCoupled())){; Y0 j9 m1 ?8 D, ^ H
System.out.println("YYYYYYYYYYYYYYYYYYYY");, E. s) ?2 R: G1 H4 L
potenAgent[goodNumber] = ag1;
0 M% N& O8 d' J; k goodNumber ++;1 K0 f/ @; i) M5 S/ @ I9 d/ Q
}7 j6 s, @" y' G
}( G: ]" ~! _4 w
$ u; j3 R; J0 K, \ if(goodNumber >0){, z6 \5 `+ t; ^8 D4 f: H1 j
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
7 T1 Y* r$ E/ `! J; |. |% ~% y0 Q Random rd1 = new Random();8 c4 h, j% h+ i! R; X
int select = rd1.nextInt(goodNumber);
0 T2 z2 {/ s5 w potentialParterner = potenAgent[select];
M) X# L' {2 L& e9 S) { value = true;
6 |" H# D. W9 ^( o }# N% w/ ?! M! Q
return value;
7 D# x# g7 @4 K }
" h0 |: [$ Y9 a$ A' w. l j始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|