|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
: f9 }# p( n& P3 e& p private boolean findPotentialPartner(){: c$ ?5 y$ p; h
boolean value = false;0 u& w' [& L5 M" U$ Q* L* n
$ f: [& h5 w2 S9 _4 W w" m$ m OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
6 j6 I8 w; z0 k, i1 }2 ] Iterator iterator = grid.getIteratorAt(x, y);# P+ ]: F) n9 G* L5 p$ O; p1 l
SexAgent ag1 = null;
8 X! p' n/ _/ m# k: M" X- e SexAgent [] potenAgent = new SexAgent[20];2 l# W f' x9 k1 w0 S
int goodNumber = 0;% l4 f! \: h6 D5 F- H+ f
while(iterator.hasNext()){
7 s1 I8 e# o' |- v C) ?/ J System.out.println("XXXXXXXXXXXXXXXXXXXXX");2 a! J$ b9 _- g. R" l
ag1 = (SexAgent)iterator.next();
3 Y8 i6 ]& h' o5 ~, R if((ag1.sex == FEMALE)
( f- v) x4 @! `4 X8 h" v N* E% O- q &&(!ag1.isCoupled())){
+ @2 F) j; W1 A* y* o System.out.println("YYYYYYYYYYYYYYYYYYYY");2 B- v( r/ d/ W9 y1 b( L( X* P; _
potenAgent[goodNumber] = ag1;# Z, B7 d; Y6 F
goodNumber ++;' c, H1 U9 D( |7 V2 j. a; U
}
4 q* A* v0 P/ g E }
9 k4 I1 V: J d, Z% ?( x
! V6 t7 C q- E/ r if(goodNumber >0){/ E! n5 o( v+ Z- e. }
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 9 z8 p3 v5 A8 I5 n1 x
Random rd1 = new Random();
% e% u6 b9 _9 o" v int select = rd1.nextInt(goodNumber);
* |6 H! i( b. ?" @+ J# @$ v potentialParterner = potenAgent[select];
( s# X, H% l9 t, W% J value = true;" D" p4 e1 j# V# d; t% I
}0 J5 J0 j8 s0 k$ ?! T* ?! z
return value; x2 |3 f0 ?* n& |1 F
}
1 q. H; d6 z# D% l0 y始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|