|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。$ N5 Q! U5 K2 d) h
private boolean findPotentialPartner(){
( h0 d. e2 G3 {5 Y2 @! l1 z boolean value = false;4 l+ q$ Q6 P' `+ |% |4 x) O1 q5 k$ T
/ g0 H' o7 Z& G9 T9 e( r' ? S4 \7 o2 C OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
8 m% d# {+ G& S Iterator iterator = grid.getIteratorAt(x, y);3 z: h n# [* C. @: q
SexAgent ag1 = null;
* o( k, |7 M0 S9 i# ? SexAgent [] potenAgent = new SexAgent[20];
# l8 T% d9 O6 v7 N4 \; N0 \ int goodNumber = 0;
8 x& l& A! u' l5 ^2 n while(iterator.hasNext()){% B/ W5 |3 R; y7 f9 N3 a* C
System.out.println("XXXXXXXXXXXXXXXXXXXXX");! G1 U' P5 `& m& s% U
ag1 = (SexAgent)iterator.next();% ~$ a' A9 ]4 |7 O X( X0 N
if((ag1.sex == FEMALE) / d. v5 U: I# n8 ]9 N( c* W
&&(!ag1.isCoupled())){' S1 h& r7 x. g( B( w0 x2 B
System.out.println("YYYYYYYYYYYYYYYYYYYY");
! |/ R; ~- H! D potenAgent[goodNumber] = ag1;
$ |/ m; Y5 Q3 T- Z: X goodNumber ++;
' ?% r3 T, t! M% b+ g. b }
& t+ n5 S: @2 W$ ~: r8 i }" T I/ q5 j3 b, I, Q3 n4 A& J
$ R# V$ F ?7 J if(goodNumber >0){
4 D3 \# V$ N$ u; w System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 0 R a9 M! u: y! H& q- J
Random rd1 = new Random();
$ j0 q- _2 N/ }' T8 d int select = rd1.nextInt(goodNumber);
2 l N1 l( g+ i* D; y potentialParterner = potenAgent[select];
9 w% A" @0 w/ Y3 r9 U value = true;
0 V1 l, {+ h6 f: F# \2 O }
: Q P7 H& b) u: I# m return value;
6 I6 {2 G0 z5 ~ }1 Q: K( _6 v% g$ A
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|