|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 ?* g+ S2 G; B, Y2 l& Y
private boolean findPotentialPartner(){
! w s$ Q! m; d0 X8 D boolean value = false;
+ H+ o, F: v5 K3 h' H7 m! I 6 n9 u9 T( o1 E! k; _% c0 i$ b
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
& U! s, ]; ~, v0 \, V7 N# h' |9 J7 ] Iterator iterator = grid.getIteratorAt(x, y);
( b# s {, \" T/ w$ } S SexAgent ag1 = null; 5 t* `6 p) {+ {
SexAgent [] potenAgent = new SexAgent[20];* `) u+ m- G' _! ~9 Y- E- \ N
int goodNumber = 0;
* B: K- H5 A& ~& Z while(iterator.hasNext()){/ v: j% h, K3 y! ]$ X0 M1 a
System.out.println("XXXXXXXXXXXXXXXXXXXXX");' a% j4 ~9 t% m. j6 y% K9 ~
ag1 = (SexAgent)iterator.next();! P7 B! D( g3 T
if((ag1.sex == FEMALE) $ |# l# \, L. L. c. @0 ]+ q. o: I
&&(!ag1.isCoupled())){7 _8 H6 Z& ?# b8 p7 N
System.out.println("YYYYYYYYYYYYYYYYYYYY");
4 T" K9 n! Q \! }) } potenAgent[goodNumber] = ag1; i/ j2 x j( U
goodNumber ++;
8 {: n5 \" {" E% c }
. s, a9 d' c+ ?5 ~! _# T$ e* g }
# [ q3 |, e/ V& Q
3 U1 ~- b, w7 i; z: j {; p if(goodNumber >0){/ D0 C/ l( ?9 n. t, W2 m% w5 k
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 2 f6 c; Y/ [- L G8 n
Random rd1 = new Random();
. M/ Y: ~% L9 i- Q9 K# [ int select = rd1.nextInt(goodNumber);
) ]0 e: v `) }& }( S1 z' c0 \ potentialParterner = potenAgent[select];
& q: j+ c1 T( V value = true;/ }: D6 k; f3 M" f- B. {3 f
}/ u u6 z: R+ @, }0 B
return value;
$ G$ P5 m- k$ O9 y1 p W- i }
& k# p' g. P' S( e始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|