|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。3 Q# V( o/ x1 P
private boolean findPotentialPartner(){' x# c- C `# P. b
boolean value = false;% F0 b/ d# p& q* G6 ^5 S. e" v
. R5 }& n7 r' I# v
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();% d' d2 y. Y/ x9 N4 ? M
Iterator iterator = grid.getIteratorAt(x, y);' G1 F( G8 @1 z5 w) x
SexAgent ag1 = null;
, Z, t8 v: X% I3 o6 v SexAgent [] potenAgent = new SexAgent[20];& h' Q6 q) J9 k& r" u# ]5 W* G
int goodNumber = 0;! t2 k! n+ s C6 L3 E% P9 b/ N
while(iterator.hasNext()){1 K) Q) l/ a) E5 [ r
System.out.println("XXXXXXXXXXXXXXXXXXXXX");, k8 b+ t) S0 g) \8 r
ag1 = (SexAgent)iterator.next();
E9 ~; b8 H) A/ S if((ag1.sex == FEMALE)
$ g$ |1 A" _$ V &&(!ag1.isCoupled())){
0 J' A5 I, M/ ^7 Q System.out.println("YYYYYYYYYYYYYYYYYYYY");
- r2 b, l5 q7 E1 ~0 } potenAgent[goodNumber] = ag1;
( P+ M& s$ B5 c4 H4 [& x2 j goodNumber ++;
4 k% k' l" _2 q) b1 E1 n, M" n }/ ^! v, e1 \! h* c
}2 N) b7 P6 C# F! v7 u9 S
- N2 i/ w! A7 @" `3 ?2 }3 ]
if(goodNumber >0){
9 L" L' c* y3 T8 |; _4 s: y% b System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
# t' h; x; N# V6 q/ J) J4 p Random rd1 = new Random();
+ s* q+ C4 G& p0 ] U0 {7 J* P int select = rd1.nextInt(goodNumber);' U6 |. {" L! _/ n
potentialParterner = potenAgent[select];) D$ y6 l% V1 Z$ H
value = true;, ]: _& J2 e' F) X3 g- Z2 I! I
}. D8 S* X$ C0 e4 H0 T f0 }
return value;
1 n \1 R3 [: O& \ }, {* y9 A6 X8 q6 b: N: n* J7 b
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|