|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
9 Z1 S c8 w% m9 {( x private boolean findPotentialPartner(){
$ g8 [" J- D0 A$ ? boolean value = false;
" J) @/ G6 p( g6 x2 U2 Q; M 8 V6 e+ p/ |7 p3 ^2 F* G+ T' {$ t
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
) S0 G+ I4 Y+ D* E Iterator iterator = grid.getIteratorAt(x, y);1 N9 R- y% v; v1 p
SexAgent ag1 = null; 0 _% r0 t* d4 B. G. H
SexAgent [] potenAgent = new SexAgent[20];1 g. A$ |3 K+ c* Q) d) p, A
int goodNumber = 0;
2 I& h. A) B; I" j* k# x while(iterator.hasNext()){
" G% k' e+ K4 F, ?% N* R System.out.println("XXXXXXXXXXXXXXXXXXXXX");
% N1 w( v. y6 T: S' e ag1 = (SexAgent)iterator.next();
: N0 `) |9 w4 b+ y. Y* r if((ag1.sex == FEMALE)
. b8 [ t$ c A+ g4 a$ z5 X0 G &&(!ag1.isCoupled())){
' _- Y2 p& K i4 P System.out.println("YYYYYYYYYYYYYYYYYYYY");
% ^& u& | Q& u5 Y: [) z+ g1 | potenAgent[goodNumber] = ag1;+ W2 u% F6 ^/ w( P
goodNumber ++;
( f$ {' [$ \5 p0 m5 L) W% o }
9 ^4 P% {; a1 L ]5 `7 D2 ~7 S }* f7 K; K+ O2 a" P
) E# N$ `% _: o0 g9 p$ Y if(goodNumber >0){) `) p' I, E3 o1 ?8 C1 T/ ]* O1 L
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); + Y8 Q' u! [ M; p0 G/ q- A
Random rd1 = new Random();# D1 h- q9 Z$ I, N; D+ i% R2 I
int select = rd1.nextInt(goodNumber);+ E0 i" F5 T4 L: J8 i& _& F8 z
potentialParterner = potenAgent[select];* ^. l" u2 F; H
value = true;- E; ?: V* s- e, d- P' z
}
* p% ~1 b3 q1 |6 E: O$ o return value;
0 c6 p& k( `. q! V4 } }
7 ?3 @( G4 p1 z3 @$ E& g始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|