|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。& Y3 ~; i' C3 c, s* V
private boolean findPotentialPartner(){! C5 b7 S; k% m) t/ o
boolean value = false;" v* k# Y0 O: k s+ P
' t: `5 D/ M) g OrderedMulti2DGrid grid = space.getCurrentAgentSpace();1 a( S, Y1 R* V. H9 Z0 P
Iterator iterator = grid.getIteratorAt(x, y);
5 Y) z& z' o1 q/ A. Q SexAgent ag1 = null;
* K4 \- I Q ]" @% w" [ SexAgent [] potenAgent = new SexAgent[20];
, d. @% u/ {- u* j4 p! X int goodNumber = 0;. N* N/ Q4 r" v% Z* O+ ]) i$ Q$ U
while(iterator.hasNext()){/ ]; j3 P% l2 x
System.out.println("XXXXXXXXXXXXXXXXXXXXX");7 `' A9 B" x. m; z
ag1 = (SexAgent)iterator.next();
9 K, z7 t. e5 t( \- k& T4 H9 J4 d if((ag1.sex == FEMALE)
6 y9 `; M9 Q9 Z9 y8 O &&(!ag1.isCoupled())){; k! y9 D. N3 i# S
System.out.println("YYYYYYYYYYYYYYYYYYYY");7 G7 ~3 J" @% m0 U$ O, a/ v
potenAgent[goodNumber] = ag1;
a9 R) w, [! i, l0 Q. [- \ goodNumber ++;; o- Y. p3 x2 C% Q5 T
}
4 f t; ?# {: T+ ^/ k' k# G; ^9 } }' l3 X4 Y1 u- f3 p6 e) m N, d! W$ v& z
1 s m. X$ D9 {! W1 ]
if(goodNumber >0){
* L) B+ s- {8 b7 | System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 1 f1 F: M6 ]! t7 u! U- a5 U
Random rd1 = new Random();$ r" x D' w a
int select = rd1.nextInt(goodNumber);7 z7 x& Y' C- _4 B. o. G8 f
potentialParterner = potenAgent[select];% h0 ^# a) s& q `* H) b5 i Q$ P
value = true;
7 d$ u/ l! \) M; Q1 Y# U }9 T" G, b& |; u" L& P( T) K
return value;2 @& y* r) \1 I3 }) S6 [( s7 ~
}
* z$ a4 Y. F* ^+ V3 b7 m始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|