|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。' k$ E, u& d4 u+ S) L
private boolean findPotentialPartner(){
3 N& v; j8 r* ], {8 ]/ x boolean value = false;* d* w4 C, C9 d: ^, l- a& p4 V
8 k) ]# K) u9 o2 V
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();" ]) b; k' F: @- K6 b% U+ p0 _
Iterator iterator = grid.getIteratorAt(x, y);
* \. V, V8 ]4 Z' w2 _$ q+ X SexAgent ag1 = null; ) \6 z6 ]) N' n5 Z D$ x
SexAgent [] potenAgent = new SexAgent[20];+ f: g' a ?8 p2 p5 A
int goodNumber = 0;
9 _0 t9 @0 ?" q while(iterator.hasNext()){
8 b6 B$ g; p1 M& k5 S System.out.println("XXXXXXXXXXXXXXXXXXXXX");7 C+ d0 x" |0 ^. H8 }
ag1 = (SexAgent)iterator.next();1 g# i8 j* |; y2 v- G
if((ag1.sex == FEMALE)
0 u: P: g4 X8 x% u, N# s% j. M n &&(!ag1.isCoupled())){
0 h% |1 c, a9 b- m U4 o System.out.println("YYYYYYYYYYYYYYYYYYYY");
$ u! H$ I( ]2 ^8 O* Z) s$ K4 L potenAgent[goodNumber] = ag1;
: a2 Q& B9 L4 E& `7 a) y/ n" k7 L goodNumber ++;2 y8 T2 ]# E# t) c) q
}
' `% H; y. A; I" \" X }- R$ n9 @8 [! U+ i' j
( d0 o( h4 X. }! g& W
if(goodNumber >0){5 y7 S; K! W! T' D* v
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 6 I% m/ ` D; A' Q0 _" a
Random rd1 = new Random();: w& Q( ^% ^" o0 h+ u
int select = rd1.nextInt(goodNumber);$ }! f& {9 F9 W3 [& s
potentialParterner = potenAgent[select];7 g; W" X, \1 o+ ?' }
value = true;
5 r! }6 V& ]0 |0 P, H8 z" v5 n. `: U }
7 W1 @# g' e7 m9 ~$ _( q return value;
+ c6 j. g; ]; y4 A0 F }; n1 Q; E$ O3 i. f* ~
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|