|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 c |% _9 h9 `" z
private boolean findPotentialPartner(){
" y) @: w* J! R* ?" C boolean value = false;, E: k0 v) [6 [! H) `
; g" n% C) @# [1 a# T OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
& K- z4 |9 ~. ]6 T: k5 W: I8 O, G Iterator iterator = grid.getIteratorAt(x, y);
. ~/ F' v. x; Z2 g4 l9 h SexAgent ag1 = null; 8 U, }8 A) n( o; ^7 y
SexAgent [] potenAgent = new SexAgent[20];% j& V# J& q9 ^& a1 f
int goodNumber = 0;
7 v" J( e$ @& `( p* O while(iterator.hasNext()){: S5 O4 R/ z+ {8 w* j
System.out.println("XXXXXXXXXXXXXXXXXXXXX");) q: F& d( W3 r' _( V4 c" }
ag1 = (SexAgent)iterator.next();8 K: h; c7 `* c" P. t. c0 ^
if((ag1.sex == FEMALE)
! o; a$ t. _# _ &&(!ag1.isCoupled())){
: d$ z- k6 ~. ~/ n' i$ l System.out.println("YYYYYYYYYYYYYYYYYYYY");5 ?" C. Y8 U) m n- r" W# i- [' w" G
potenAgent[goodNumber] = ag1;
0 S) c: U/ g$ [7 H0 U goodNumber ++;- G# w% l4 q4 Y3 ]7 X$ ?$ r
}
$ N6 [ f7 `1 B% R* l0 n }* Z: y6 Y2 T5 t2 ?1 P! w+ N7 @/ h7 M
5 W1 j" h2 X0 n if(goodNumber >0){4 B$ F5 m1 P4 j! @0 U2 \+ h
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ! n5 M+ d# \! w
Random rd1 = new Random();# F; _" R E% f' w; M
int select = rd1.nextInt(goodNumber);1 ` ~5 ^6 }/ @* s
potentialParterner = potenAgent[select];/ Y5 w# u# ^! R1 ^5 ~
value = true;" P$ I) s4 \1 O: l/ H
}( S( V! u2 Z7 P+ e
return value;: o: T) Y# k& ~* A
}
! C% Q8 O" s, d0 Q$ ]- s! g始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|