|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
5 r4 Z% x+ b/ D* F& E/ o# J( j private boolean findPotentialPartner(){
`- T: j+ s! L1 |: g' d6 B boolean value = false;
( P# [1 X& S3 L. ?7 u( O" P" Y+ s ]) e( x, V2 u! t' F
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();+ E* \- F+ L0 b
Iterator iterator = grid.getIteratorAt(x, y);
) q9 I& {9 |' S1 L( u+ g3 i4 ^ SexAgent ag1 = null; 5 @% h; S- {- w. P9 p2 g4 Y: ^# Z
SexAgent [] potenAgent = new SexAgent[20];
6 `4 h \, {8 } int goodNumber = 0;; a. v; Z! n# }3 ^5 N$ |% E7 x
while(iterator.hasNext()){
0 `$ |5 x6 \& ~3 M System.out.println("XXXXXXXXXXXXXXXXXXXXX");
! A) C( |8 z- ? ag1 = (SexAgent)iterator.next();
% Y" l, V; A9 s* F' l if((ag1.sex == FEMALE)
, T; Y4 E/ f) F) p& d% i &&(!ag1.isCoupled())){
- y/ M4 ?5 ?1 L3 j System.out.println("YYYYYYYYYYYYYYYYYYYY");
Y) v5 m+ }9 n+ p8 F6 t2 Q: }+ b: ` potenAgent[goodNumber] = ag1;
$ v! ~" ^, V0 K( s& R goodNumber ++;
9 e0 n, f. i4 m5 K' f+ v; G' ^5 r+ { }
2 p) T2 ?- P, p3 c( l7 H3 \ }" T; S" @6 i4 J2 @3 c# J0 m
6 W7 Q8 \7 l, k4 N5 J! n
if(goodNumber >0){) v( ] f7 j0 o
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); # S2 {. z* Y. u3 m
Random rd1 = new Random();: f! {0 L+ V7 Z! ~' A6 e( @
int select = rd1.nextInt(goodNumber);# x P9 T7 l( E
potentialParterner = potenAgent[select];+ q) G: u1 q! a' x
value = true;
5 ?9 E2 V& W. ?0 a7 ^7 g }8 f. ^$ }5 @( ~# Y0 A
return value;
3 r* r' V0 X1 F, @' m0 R/ Y }
! [/ |; u# A! ^2 u6 L* k2 a始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|