|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
* o/ O) J7 ]; i, M" I0 v private boolean findPotentialPartner(){
7 e J$ m- z% a boolean value = false;
3 a4 K* t3 o4 } _$ f# Y. y* F 3 U% X9 ?" W4 A# J r
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
3 W0 O; P2 n6 Z9 `6 i, f6 B Iterator iterator = grid.getIteratorAt(x, y);8 w( g; F) @6 v, g/ _7 \
SexAgent ag1 = null;
- }8 i% V" k0 A5 w. M% B SexAgent [] potenAgent = new SexAgent[20];. _# V. c+ W- U2 O7 j
int goodNumber = 0;
$ y$ k y) I( Y- h8 r while(iterator.hasNext()){7 F# m! G/ N' z& F/ [
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
3 m5 r; x% X; ` ag1 = (SexAgent)iterator.next();5 m$ Y& a. T) p( c1 Q( X+ t
if((ag1.sex == FEMALE)
6 ~$ ]4 E6 t# T4 ~ &&(!ag1.isCoupled())){
" q: `8 X( D* E1 M; Z9 V8 Q System.out.println("YYYYYYYYYYYYYYYYYYYY");
" O, Z. r p. Y: z potenAgent[goodNumber] = ag1;/ @7 p$ z% U$ P9 K
goodNumber ++;' J) [4 I" @' j
}
4 [0 Y$ x0 E8 R" g/ o& e6 H& b6 E& ? }
: ?/ B+ l, h- o2 L+ p" \- [( T, s 0 o9 K6 Z0 s. b; K
if(goodNumber >0){# S; b0 x" Y/ I9 b- P! y, m% `$ s
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
+ d! b" d* w1 M Random rd1 = new Random();
+ j/ P! A+ f+ d$ a int select = rd1.nextInt(goodNumber);. e: u$ K8 ~& g1 ]& E# T2 o- A
potentialParterner = potenAgent[select];+ w& Y' \; Z+ }4 {
value = true;2 k! u0 }9 q3 m1 _* w) H
}
) O; t' m x" i. _ return value;* Y9 A- z8 W( K0 X& }; x
}
8 H6 b$ F5 _5 r# ~始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|