|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。 b. n/ ~, {7 }5 y( Q
private boolean findPotentialPartner(){
4 M* D) v G# \) |6 z# S$ h boolean value = false;
; \$ }& W# n/ t, Z
; `3 C- v; ~ x n$ u! w% { OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
5 N9 {% U! j& k3 B8 P/ _" c Iterator iterator = grid.getIteratorAt(x, y);
& H- L7 n% L% s8 j1 P( K2 P/ h SexAgent ag1 = null;
% w$ s8 V; R5 M# W0 G SexAgent [] potenAgent = new SexAgent[20];
$ w) k# d# n$ m8 a int goodNumber = 0;
' ^; g" c5 v/ h( Y( V/ j( V% k while(iterator.hasNext()){8 u5 Y% D# {5 y1 F
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
, N+ N$ p2 v8 X2 \% J+ `" w/ O ag1 = (SexAgent)iterator.next();
3 } x1 F6 U8 e5 m5 g* O if((ag1.sex == FEMALE) & |0 t6 M. J# x, x# {, T
&&(!ag1.isCoupled())){
/ \9 z% ]/ P7 @6 c System.out.println("YYYYYYYYYYYYYYYYYYYY");
" Y/ u3 w4 ~% p( v6 p5 f- P potenAgent[goodNumber] = ag1;7 e# J- j- _8 f$ ?
goodNumber ++;
( D6 f: S \8 S }- w; v' D6 ? W, {: L
}/ N7 `' ^7 C; h, b" [3 k
$ n: V, g# d( d, H4 w if(goodNumber >0){
1 \5 l# o! f& h9 e8 f3 Z4 n/ c System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ) Q- Y$ z' t/ P6 w5 f
Random rd1 = new Random();, w2 B# _% o+ E7 `& z' N
int select = rd1.nextInt(goodNumber);! N9 f2 m7 r, Q0 d0 k1 ?+ J4 P
potentialParterner = potenAgent[select];
+ O" S; j' i% c3 T5 g+ ]1 ]: y2 X value = true;2 j: ]2 S3 a/ R3 V1 o$ l& U
}3 l& b7 a" n d
return value;
+ [# o% E+ H% V& M( T& F0 \ }
+ c$ f# e& s! B3 X. b* M始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|