|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。$ Y0 U5 d0 |. u9 x- y- A d
private boolean findPotentialPartner(){
* F0 @1 M. u+ i" H) H9 Z" v2 B boolean value = false;
0 n# Q1 Q' m1 |& d1 {! ^8 q Z 5 z5 ?, _' ~6 v. ]" d; {
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
" d9 D4 H" l2 B5 ` f" f Iterator iterator = grid.getIteratorAt(x, y);
B+ M4 P5 y2 m. r. r# [ m- N SexAgent ag1 = null;
6 _! y" S9 F) j( m+ x SexAgent [] potenAgent = new SexAgent[20];7 r! s) m$ w" I' m1 t2 j1 N
int goodNumber = 0;# F8 z3 ^( W+ k
while(iterator.hasNext()){
! t: Z V0 m7 Z( w System.out.println("XXXXXXXXXXXXXXXXXXXXX");
1 I) O% L- a( A; F% a9 F! [ ag1 = (SexAgent)iterator.next();7 Q; h* d* K8 a& [1 F5 ~1 a
if((ag1.sex == FEMALE) 0 s. a0 Q( D, Y( a( H% O+ m
&&(!ag1.isCoupled())){5 H9 |1 F" m3 y/ R- m
System.out.println("YYYYYYYYYYYYYYYYYYYY");$ a/ r b$ Q4 B }& A
potenAgent[goodNumber] = ag1;4 E- N4 v r$ ]& v5 G" r* W. x
goodNumber ++;
8 t( t" l5 T& z, E6 e }8 v+ I: N n% K- y/ W3 l
}- p! a1 ~; S% G/ ]
0 C9 k' Y( C+ }/ \+ A' t" ~7 I
if(goodNumber >0){
8 C- n2 c8 i' ]* e System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); % D/ Y% K1 f i2 n' W9 O& G
Random rd1 = new Random();
7 c3 S/ J3 d b# n" n; o3 x int select = rd1.nextInt(goodNumber);3 ~' u# C7 q7 ~% W* O9 w
potentialParterner = potenAgent[select];
- A) ?; u. s: V value = true;
( P, b1 [5 S$ x h }
; G6 y4 ]4 P1 e3 e: y( b5 |* `1 n; t return value;% ?0 t3 E9 u- b& K% I
}" |; W3 O4 Y! C7 ?
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|