|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
1 z( ?2 V: ]5 W private boolean findPotentialPartner(){7 U% T% s- G" t; r: x8 \: |5 `
boolean value = false;
' V0 z8 j0 T- A# ^) c7 d: Y- q
! v# r! n F7 w& z- Q: d3 M OrderedMulti2DGrid grid = space.getCurrentAgentSpace();5 k6 Q' M: \) B1 H* N$ Y: B* f
Iterator iterator = grid.getIteratorAt(x, y); M* |/ Q" s. Q! P {7 C
SexAgent ag1 = null;
: q" i& R; M" P; J9 u SexAgent [] potenAgent = new SexAgent[20];. S9 _' [ l" P* v
int goodNumber = 0;
6 a: p! b, g+ j while(iterator.hasNext()){
! S+ u1 m+ |' o% |- ]- V0 @7 L q1 X System.out.println("XXXXXXXXXXXXXXXXXXXXX");! C! ?3 K' b5 _/ R c7 X% M
ag1 = (SexAgent)iterator.next();
1 Z1 W: ~0 r4 W: p6 a if((ag1.sex == FEMALE) - v- T! F- s. Q: |
&&(!ag1.isCoupled())){
, ]4 b& y L' J+ v System.out.println("YYYYYYYYYYYYYYYYYYYY");0 ?% K5 L0 B3 ?$ T
potenAgent[goodNumber] = ag1;. @( w9 s) s) R1 X! D- Q- q% `1 x
goodNumber ++;* {7 O* m$ V# w
}
% w S$ ^* d# Q7 t }
$ F9 X* S Y" M8 ^! _( @ , m3 P* x3 F& Z7 W- o
if(goodNumber >0){7 Z8 H2 v# F+ n# a) E) t5 ?- ?" N
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 6 s5 o2 D6 g& B* @! O3 h4 i
Random rd1 = new Random();" g; ?2 A7 p2 v# u1 P# n8 V
int select = rd1.nextInt(goodNumber);
0 j2 S: }" J8 u$ N0 Y! s potentialParterner = potenAgent[select];% ^1 I# Y2 Y$ l- ]! i
value = true;7 T) X* c' o4 L* Q3 D, R
}- v: g) o9 [8 h$ O! O, i8 Y8 {
return value;
$ ~7 {! Y F0 H' c: a4 `6 y }
" G+ c4 ]# t1 ]# I1 G始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|