|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
4 ]* J9 i7 b0 b" T private boolean findPotentialPartner(){
& J- w6 d* e1 n& I# D boolean value = false;
) F# P K5 l, f8 B, H
5 B0 g( Q' W$ Q' H( Q) ] OrderedMulti2DGrid grid = space.getCurrentAgentSpace();2 e$ T6 i/ p9 D
Iterator iterator = grid.getIteratorAt(x, y);
4 `& k# s" q, P* Z8 R SexAgent ag1 = null;
3 c9 t' e. a M/ N SexAgent [] potenAgent = new SexAgent[20];; {$ T. F1 X4 t F9 ~8 p
int goodNumber = 0;8 J/ t. D& B9 E/ f* E# r
while(iterator.hasNext()){
' I# S5 c' N. \ System.out.println("XXXXXXXXXXXXXXXXXXXXX");7 A8 D- f# E+ v2 f- K8 p8 U
ag1 = (SexAgent)iterator.next();
2 S1 `' M5 _: q# F4 [, D# `: a0 h3 B if((ag1.sex == FEMALE)
4 a+ T9 k1 L- Y8 W &&(!ag1.isCoupled())){
7 f" g+ z: P& h# a3 v System.out.println("YYYYYYYYYYYYYYYYYYYY");
( }& C9 }4 `9 N5 h& \! F$ M potenAgent[goodNumber] = ag1;. E; W3 K- x' l* P. W
goodNumber ++;( O4 }! c" L ~, h d" p |
}
5 n/ D( ~8 t+ y3 ~- q6 O }; U( X7 P" k. ?; k
% |5 i) F7 k* n* L7 t, E
if(goodNumber >0){: Q( p$ R! k: U% f5 z4 G" k
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); # b( z" j- m0 s* j) h7 _
Random rd1 = new Random();
/ _) T5 a! E9 ~% S int select = rd1.nextInt(goodNumber);- ~- b5 G9 y0 |: d& v1 I5 l( t* S
potentialParterner = potenAgent[select];
3 e M$ w5 @: Q7 k: a, P- p* ] value = true;
1 W5 F3 b: \1 Q8 B- k: U' G }
0 p# a3 r6 P5 e" e return value;
- w2 r0 F6 f/ @ o. W }9 U L- h" e* S: J9 X& m4 O9 x
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|