|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
1 f# g- A7 R1 z, h! _ private boolean findPotentialPartner(){
! H0 h6 R) w8 f* i boolean value = false;
7 n( |2 }( e A; g
: x2 ~& r: O$ h OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
. M! b5 i2 ?# Y Iterator iterator = grid.getIteratorAt(x, y);9 i" w7 q5 B# I" k$ x
SexAgent ag1 = null; 1 i# |' ], Z2 k9 }* b U+ R& {
SexAgent [] potenAgent = new SexAgent[20];
# C# @; D/ s# r% g! R+ x; z int goodNumber = 0;
0 W, u7 \& L5 ^ while(iterator.hasNext()){( w5 s) g# d! ]
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
" W3 s2 O$ y2 y0 f, d% C ag1 = (SexAgent)iterator.next();
1 f; i6 Z& D% X6 z& R if((ag1.sex == FEMALE)
5 j7 f1 A8 J, I0 ^9 Z &&(!ag1.isCoupled())){
& p7 w# G% D3 E0 O3 z$ M System.out.println("YYYYYYYYYYYYYYYYYYYY");* X) a, z7 ^( H; M) }: G; b! C
potenAgent[goodNumber] = ag1;! l' b/ S5 u; r( {- k2 }
goodNumber ++;2 u8 b. o3 b, @& j4 T4 A6 t7 u
}
9 B. g" G6 `2 h1 w5 `( C }
$ o) P: s: A5 K' C7 L6 t9 h- C% k2 p & O. G3 e, S$ J; S; J
if(goodNumber >0){' q' F- i8 H, ~
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); , b' w- L3 B4 p" U
Random rd1 = new Random();
% L- z, P7 U; ^ int select = rd1.nextInt(goodNumber);
$ V. F- x/ n1 ]! s: W potentialParterner = potenAgent[select];1 c1 t6 m3 h, Q& |! z
value = true;
& H$ {. f r7 g' T }( }% B4 f8 @/ Y$ i0 i% c& p% G: G
return value;
. Q" T; S& L. ^2 [/ n( i' m: b }
' R4 j u1 b7 `; M始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|