|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
4 j4 h. g& K& ?, _6 A0 P S1 M- ` private boolean findPotentialPartner(){
7 u) x; u: G$ z: q3 b* T, C boolean value = false;
) {' E2 C A# F" } 6 j. [! I7 B& I. a$ |2 U, o$ W
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
" z' y- e& g- ^; \% R Iterator iterator = grid.getIteratorAt(x, y);
8 e3 j+ y* @# ], Q7 C% h SexAgent ag1 = null;
& y& |$ y4 ^6 ?. _/ [( L$ c1 A& k, t9 q SexAgent [] potenAgent = new SexAgent[20];1 ?* s6 @5 P5 k; w, k6 S/ {" |( P- ]
int goodNumber = 0; r" ^! x" ]7 B g5 L
while(iterator.hasNext()){
# l1 p* r3 }/ v) l System.out.println("XXXXXXXXXXXXXXXXXXXXX");
" B% }4 ?% H% V. O& [ ag1 = (SexAgent)iterator.next();
( Q4 U6 p" d# E9 u if((ag1.sex == FEMALE)
o0 `2 Q4 q/ f &&(!ag1.isCoupled())){
$ D& v1 ?; K; n/ i0 L9 e' J4 d- ?/ M7 ~ System.out.println("YYYYYYYYYYYYYYYYYYYY");
: @% g' K( ?" B' M8 b& _6 W potenAgent[goodNumber] = ag1;+ G3 k! U7 G4 M! ]4 g9 J0 V& N
goodNumber ++;
& T' P2 _0 B R* @ }
* v! x* t) [* w7 R* d1 G6 U }) i z) U+ r% b. l/ D( d
4 b# |2 F% e5 D4 X) U
if(goodNumber >0){! H, C+ g1 d2 N
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
2 A( U9 ~ T: G7 b# R! E! W, u Random rd1 = new Random();! f) H. P: R7 f" i0 G
int select = rd1.nextInt(goodNumber);
' Q- P/ |; b# k+ A# \- V: Q potentialParterner = potenAgent[select];9 J3 G8 o* r. e7 Q
value = true;
1 \- [ S2 T8 I, _" u! a }
( S7 Q: t% c6 ~% W return value;3 ? Q* L8 F+ F3 [. w# A7 D$ W/ D
}1 F+ m& J" V/ V7 v, |
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|