|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。% V' K* L( H S+ A' F6 B
private boolean findPotentialPartner(){: ~( H& E- z/ U6 B
boolean value = false;8 r8 G8 c4 D5 j1 J: C
3 J' B M& H8 ~7 E5 L* x OrderedMulti2DGrid grid = space.getCurrentAgentSpace();+ H: O, F, ^6 r$ k7 h; }
Iterator iterator = grid.getIteratorAt(x, y);
% d- g' Q5 b! N) R6 ~! n SexAgent ag1 = null;
+ h0 e. n' _: F. x- W3 j SexAgent [] potenAgent = new SexAgent[20];
5 D6 |3 |9 V2 o int goodNumber = 0;6 g3 y8 }0 }% b
while(iterator.hasNext()){8 z1 Z I, S( v" L: ~
System.out.println("XXXXXXXXXXXXXXXXXXXXX");% L+ v+ ?( q8 x& B. [
ag1 = (SexAgent)iterator.next(); X Z5 e, o e- N4 S
if((ag1.sex == FEMALE) + ]: p; J* O8 C/ {& p/ t
&&(!ag1.isCoupled())){
; }5 A4 C e9 J% ~ System.out.println("YYYYYYYYYYYYYYYYYYYY");! L: B5 O( x: I( g8 O. k7 Q# \/ I M
potenAgent[goodNumber] = ag1;5 z+ ~) @. S- y; S9 U) [
goodNumber ++;$ j* }( C) k! D0 t2 T* Z1 F
}
0 R3 p* M, E7 R& X2 I; `5 ] } l7 T) a. U) B5 d( M3 e% x
' [. Q/ @" h3 e) g! } v/ g* T
if(goodNumber >0){: C5 `" S& U0 A" @ D
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
. A; P' s1 Y) `; Q# s. C* R# s Random rd1 = new Random();0 x3 r! s' b' w9 B
int select = rd1.nextInt(goodNumber);+ i! t1 e* {+ M
potentialParterner = potenAgent[select];
. L% ~" ]& d+ P9 y value = true;% G& Y# e# y8 ]. c, D
}8 n$ U! i7 H6 E$ `; b
return value;, D5 D8 j" P( D! [! ] c
}" Y8 K1 o8 Z9 e) u
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|