|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。3 W" T) G& i' F/ U- V
private boolean findPotentialPartner(){" R4 p+ |$ j, q
boolean value = false;
4 ~# Q0 K' {& s# w9 O" Q. O1 s , I( F) ]* e7 t! |
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();( j7 N n! O: L: ~) U% D
Iterator iterator = grid.getIteratorAt(x, y);
* f2 \+ L U0 Q5 }, M SexAgent ag1 = null; . { r+ ^7 B5 b9 [
SexAgent [] potenAgent = new SexAgent[20];3 \: @" O0 ^+ v3 v8 S0 T) |- b0 P$ W
int goodNumber = 0;
$ F2 ~; o) a# g8 w: F while(iterator.hasNext()){% j' a3 \& d4 }; m# W+ m
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
6 c# C4 I% H v G7 ?* N3 g8 | ag1 = (SexAgent)iterator.next();
) [0 |& B" |+ G9 M# C$ }+ K! n if((ag1.sex == FEMALE) ! \7 T: ?5 @- i; y4 @4 V
&&(!ag1.isCoupled())){
+ S8 {+ P! F# K) w7 c' l System.out.println("YYYYYYYYYYYYYYYYYYYY");
9 S& |- m2 F$ e1 v( m5 _4 U# r# V potenAgent[goodNumber] = ag1;: l+ ~$ J. v+ K4 ^" [& R
goodNumber ++;) T. L( ]0 s' n. F
}
: Y8 u7 y( ^$ p$ H5 Z9 o }% ? ?) G, G3 O% V0 J& A* l9 L( p
) ?5 U. `4 M+ t4 F- I if(goodNumber >0){
$ m) d2 U$ a6 ]# s System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
( e" l$ |- v& \$ e! e. E Random rd1 = new Random();
, {8 {( w4 [* {2 g$ ^! I int select = rd1.nextInt(goodNumber);4 n- n* ^$ _" m3 `0 x8 |( I0 C
potentialParterner = potenAgent[select];
; |! i, V% {: \1 | value = true;
$ P8 K0 j$ L, V% `5 |& l) o }
+ y; C5 `( Q4 H8 F return value;
+ u3 ^+ r3 O8 L0 p% k& _ }
9 }) J" D) G4 h始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|