|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
# B! U S N7 S3 I: h' L: G private boolean findPotentialPartner(){6 x3 V0 X Q$ B: g( I _
boolean value = false;
' W% A- |& v, f: R" B- B% P: J( k , |1 {! O" U; l Y4 N
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
# E& C$ l4 Z- m! R1 P3 G Iterator iterator = grid.getIteratorAt(x, y);
! R" w* x) b% A+ @ a SexAgent ag1 = null; 9 C7 F' h1 ]2 D* y" X
SexAgent [] potenAgent = new SexAgent[20];7 b3 U) N* d3 J/ Q0 Y2 [ A
int goodNumber = 0;, k# H- S5 P7 K; R1 _
while(iterator.hasNext()){. ]6 b: a5 E7 m0 e% `: e( T
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
& x; W9 Z n- x% C' e- ? ag1 = (SexAgent)iterator.next();/ _4 N. k4 U! f1 r# m$ ^
if((ag1.sex == FEMALE) ' w4 H' L, a/ N' d- b! G, }
&&(!ag1.isCoupled())){4 h6 e; [- t9 Z1 g* ?9 E0 q5 Z2 z
System.out.println("YYYYYYYYYYYYYYYYYYYY");) B6 A* w! g. ` k& T
potenAgent[goodNumber] = ag1;
8 f E$ g* D8 l! s' F/ f goodNumber ++;1 ]$ k" G6 s, l, U n1 t
}4 t( V0 d r6 b0 y' Q3 F
}
' V) e. F" n4 u( f# k6 u9 b ; Z8 d+ p% \/ l
if(goodNumber >0){* h1 H' [. a6 U8 |" V& i
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
* V; w7 S1 G$ X' F8 D Random rd1 = new Random();, ?3 i, b1 S3 \+ P. V) v% Q
int select = rd1.nextInt(goodNumber);9 ?8 Q% d0 K" X# H
potentialParterner = potenAgent[select];
7 \9 A0 C5 Q% f% O( n value = true;
7 p+ |$ G; W; ^. x: ?1 p% m% a }
* ]. l6 `/ S2 F/ p/ r- O" x return value;/ C0 G: ~( r: Y W) b$ ^; Z5 {
}
4 n" Q# n$ h( x) p: p/ V始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|