|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。4 F$ ?/ e$ M: T, _% W0 ?
private boolean findPotentialPartner(){# e# O' s* {, N- C: I6 @
boolean value = false;
6 A7 e# p3 b0 i; R* Z3 ^6 M5 ? " D; _' V# k9 V( _" w( w7 y
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
6 T8 r& y, n; v6 X: f Iterator iterator = grid.getIteratorAt(x, y);/ ~6 N* z! H4 b4 [' }) S9 k
SexAgent ag1 = null; 6 ?2 X' I/ ]- ~
SexAgent [] potenAgent = new SexAgent[20];* A8 D7 i# P2 t7 O' f1 o8 o
int goodNumber = 0;
; z7 x: I; d* R" U9 p) `+ w while(iterator.hasNext()){
& e. o& M# `! A# E3 Y, G5 i, u( X System.out.println("XXXXXXXXXXXXXXXXXXXXX");' n/ Z3 R, q& l) ?- C
ag1 = (SexAgent)iterator.next();! h' Y7 x- }4 W
if((ag1.sex == FEMALE)
& B& D' z9 T7 z &&(!ag1.isCoupled())){
/ M5 G. T' D" {+ }1 Z System.out.println("YYYYYYYYYYYYYYYYYYYY");, a7 F; T$ @* [
potenAgent[goodNumber] = ag1;' p& L+ q6 P% R W
goodNumber ++;! `$ d7 d" d4 P- _7 z
}/ D; r2 Y# F* ?
}" ^9 A) j5 `) K% U
8 R5 I& l) x: N" J4 W _: R0 b7 Q
if(goodNumber >0){. q3 g6 H+ Y2 J( R1 Z; u6 ?
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 7 i" C. P% ~, A; o- f6 }7 i! p: }
Random rd1 = new Random();* b6 Z" C! \4 Y8 N' {8 x7 f
int select = rd1.nextInt(goodNumber);
' j3 @; ^" c- `; Q8 Q1 f6 f potentialParterner = potenAgent[select];
, g: {) j% s/ C" f8 [" e3 h- x value = true;. K) w1 c3 p+ ]9 r) {
}3 |7 |- h/ m# Y" \0 T% ?: {
return value;
: }/ ]& r5 z, o }
* ~; I- l1 g/ f始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|