|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
0 X& K+ u. O8 P! y! I7 Q private boolean findPotentialPartner(){$ G B( ]# f0 @! B" e; r. ^, }
boolean value = false;" r5 N. P1 v1 P* K" }$ V3 o
( T* v% K2 q) z$ ~/ }2 L0 F0 N' D) |* K0 k
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();; a( K( K0 n" ^- p5 E
Iterator iterator = grid.getIteratorAt(x, y);
* K) U9 ]6 M# L" x0 u W SexAgent ag1 = null;
% [. n: d' h1 J8 Q* k8 d3 H4 q SexAgent [] potenAgent = new SexAgent[20];
# d i( T7 I% D+ \! T int goodNumber = 0;; a: K: }7 Q' S1 ]" A! |! ]
while(iterator.hasNext()){
2 z/ {- m' M' c; P System.out.println("XXXXXXXXXXXXXXXXXXXXX");' M& w# [( B; b/ e% {" K! Q
ag1 = (SexAgent)iterator.next();
! R) E, G; C) M8 @# F0 X! f if((ag1.sex == FEMALE)
6 E3 p& S) D S8 {7 k$ O1 o+ G &&(!ag1.isCoupled())){7 q& u( u- Y/ J- z) ?5 |
System.out.println("YYYYYYYYYYYYYYYYYYYY");
, q: ?& x7 h4 h8 U4 q potenAgent[goodNumber] = ag1;" ?; d1 F% t; T) ~ T
goodNumber ++;
5 s5 m1 j' C& Q. J- [ }9 j/ z* x; I2 S6 K' X6 E& V
}
7 r9 I7 w) L. n: |+ U" b. i; Q0 O
8 }, u" x* Z% x0 x: @8 z. a if(goodNumber >0){
6 h7 W, U; i6 ]) e ]5 r System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
; E4 I& C7 C0 V1 [# T) T* a0 y Random rd1 = new Random();
T9 Q3 N" `* |& B& C j9 I2 R5 ] int select = rd1.nextInt(goodNumber);
2 x' u, T! H3 o potentialParterner = potenAgent[select];
, m" Y5 {" ]! M ~+ I value = true;- o; n& w# t2 W* v. h. P
}2 c; r! a- F) v
return value;
% `- a+ a2 F$ z; }1 m( c }
2 Y+ H& I1 F/ X7 \始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|