|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。! _$ c5 ]7 E+ l$ B& J
private boolean findPotentialPartner(){
. B4 P) _" P4 S; T boolean value = false;
6 w2 r. G2 Z: [# c) u$ h9 J " k0 x# e1 \3 H6 s" g; L
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();# I& Q! W7 B. X% x
Iterator iterator = grid.getIteratorAt(x, y);
|- ]0 L2 k w( x SexAgent ag1 = null;
5 F; T5 }" _0 n! A. \2 ` SexAgent [] potenAgent = new SexAgent[20];
2 S4 g4 B+ q# X+ B9 T* ~- r, I7 T int goodNumber = 0;# F1 i( Q3 C* N( K
while(iterator.hasNext()){
: T. D1 v8 j. E1 ~+ V System.out.println("XXXXXXXXXXXXXXXXXXXXX");
9 q2 d' v O4 C+ G; ^8 ^ N ag1 = (SexAgent)iterator.next();
& j2 Z+ n1 @1 }. M; @4 ^ if((ag1.sex == FEMALE)
2 \. `8 G3 m+ i- z &&(!ag1.isCoupled())){
* J# C# g5 ?0 w; @, S7 C- I System.out.println("YYYYYYYYYYYYYYYYYYYY");
7 I- A: T' |1 ]4 p* R4 j5 Y$ i* c potenAgent[goodNumber] = ag1;/ ?9 z. g& y3 @
goodNumber ++;
6 Q* P1 q3 u) a0 w, B" B/ f3 n }
" \7 b; Z$ f8 w' w& @/ K }6 N' ~& q- F( D" U {' }
( f. R9 C- N/ w7 t$ R5 n, b/ a
if(goodNumber >0){
( D; f4 O1 J& u3 w7 \3 u6 R7 h System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
/ k8 |: [6 d3 \3 v- t' r+ Q: A$ [ Random rd1 = new Random();
" ~5 l7 s7 S+ a int select = rd1.nextInt(goodNumber);
P3 N3 \1 A+ b# x1 \, { |9 ? potentialParterner = potenAgent[select];4 E4 \7 j" O. A3 z
value = true;
: v7 h; f. U0 D# D9 x! w5 { }
3 z" Y- g4 ~2 `% [8 ~+ Q return value;
# ^* @8 N: O' Q, A! g4 S8 e }7 s# L4 q. u2 S1 s8 q& R
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|