|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
/ @4 U+ c. J# S. ~7 Y H# a: O/ e" u7 t private boolean findPotentialPartner(){
, l, P* H7 b, q boolean value = false;
% p4 p* s, k6 Y8 Q' R* p, D7 ^
" Y2 E B; h8 c( ^% G8 I OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
" k- H' c' O! E! y V Iterator iterator = grid.getIteratorAt(x, y); @. l7 g3 }8 L/ R# N9 p
SexAgent ag1 = null; % }( Y S$ ]/ A8 K+ A
SexAgent [] potenAgent = new SexAgent[20];
# A' M0 U8 I5 P int goodNumber = 0;3 ?& f9 c- r" l" `- ~% ?1 f: U
while(iterator.hasNext()){
9 U* f d: ^0 a0 S System.out.println("XXXXXXXXXXXXXXXXXXXXX");
+ U5 m$ |# G2 t$ F8 e: Q ag1 = (SexAgent)iterator.next();2 T! L" q0 J" X% y. Y6 y& }3 _
if((ag1.sex == FEMALE)
& D8 B! l; h/ j+ i7 C2 I &&(!ag1.isCoupled())){
3 F2 f: r h! o: J0 Q2 ?, C5 _4 x! Z System.out.println("YYYYYYYYYYYYYYYYYYYY");/ m; o r# j: K U2 n5 C M
potenAgent[goodNumber] = ag1;
9 ~1 v4 P" C k9 {8 M3 c goodNumber ++;! K' g r! n" [; Z# K
}% E3 g1 O! c+ p
}0 F- s3 z" `4 W( h% s9 I
, h* c, E) m+ j7 p$ F, T/ W. x0 I. G
if(goodNumber >0){
6 [" h1 m3 S7 i8 V System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); + X# V/ J9 K0 i3 W9 x
Random rd1 = new Random();
$ t' z& K4 s. c/ Z" ?# m; A int select = rd1.nextInt(goodNumber);" K2 s9 P+ L \9 E2 L( U
potentialParterner = potenAgent[select];$ Q/ d9 }2 j- s# y% }4 g9 K
value = true;
4 s/ K0 S% R: k7 Z5 f0 U, w# o }9 w0 G, X7 Y* W) {# }% b1 h6 j
return value;6 q6 L) c# K1 W4 u8 c \! s# _
}5 `3 ?) Z! E# s+ X [$ n5 b0 S
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|