|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。! _& @) e, b$ S# L) g3 l1 R; p
private boolean findPotentialPartner(){
$ o9 P4 ?2 b. H" g1 x boolean value = false; F+ C( _' G' s1 E
# W) N# D, g* W8 d
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
3 k- u @# U+ n/ O6 E2 N' k+ [ Iterator iterator = grid.getIteratorAt(x, y);7 Z5 c6 F2 y$ q- x( Z' W
SexAgent ag1 = null;
- a: n7 o" W$ K) F k' s9 f SexAgent [] potenAgent = new SexAgent[20];
2 l4 w" N1 F8 a3 J int goodNumber = 0;
& }( |+ a, h0 Z. O+ y f1 Y while(iterator.hasNext()){
! N- o" s) S& K7 y! p4 k8 f& M System.out.println("XXXXXXXXXXXXXXXXXXXXX");
3 T( ]; P3 h, b g9 z. C: j ag1 = (SexAgent)iterator.next();0 g; H K$ G5 \/ A$ b# n
if((ag1.sex == FEMALE) & m$ ]- _) \: M; Q7 Q" Q2 U
&&(!ag1.isCoupled())){5 V, ~+ ]* s6 h2 e- S, S
System.out.println("YYYYYYYYYYYYYYYYYYYY");
* F' g; x: ^( Q$ F, X8 E! c potenAgent[goodNumber] = ag1;" w5 u# o) j. M# W; T7 g, ~
goodNumber ++;! {5 J3 k- U- p) P# B0 W
}
2 u L# }; a& I+ F: Z }) I; b% b) Y0 V+ _8 F, C% ?! a
% g% H; U& L* ~
if(goodNumber >0){
! F8 f9 M+ k' @/ I System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
' p5 F9 u) g! Q+ ]1 S Random rd1 = new Random();& J1 {: O N% X2 g
int select = rd1.nextInt(goodNumber);' a2 g: l3 a; N8 y* s0 k
potentialParterner = potenAgent[select];- u& S$ W0 W) P& s" q9 q
value = true;( u5 u; @% m* T' ]9 F9 n
}
# W0 k2 M$ M5 q' Y; t Z return value;- w4 g8 z8 \6 S+ q8 o1 ^' k2 S
}
& E1 C) E! B% E: }: C3 H始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|