|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
5 Q' ?( @( j0 _- o private boolean findPotentialPartner(){
* W! P& L4 ?$ A' _9 l& y boolean value = false;2 F f! M Q" h2 f9 ^( G) Z9 z9 m/ I
' A- V( O L+ u' ]% G
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
0 l. o! }$ c9 @9 C `( P6 K Iterator iterator = grid.getIteratorAt(x, y);4 b8 O& }7 [" ]' m
SexAgent ag1 = null; % Q: x' Q) N5 d) B, M# t8 K( p3 @
SexAgent [] potenAgent = new SexAgent[20];
, |, Y1 p; t2 g" s# V' k int goodNumber = 0;- ^2 y! h/ x* }2 ]$ O, A5 x9 u
while(iterator.hasNext()){" \5 d# ~3 i0 }4 c
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
4 i3 z/ Q! D7 f1 z+ X. b ag1 = (SexAgent)iterator.next();
& T0 D2 _& X! \4 x8 F1 D m$ y if((ag1.sex == FEMALE) 8 J* x/ A( R8 G' y5 Z# R7 K% e
&&(!ag1.isCoupled())){' D8 C( @$ Z2 T0 m+ f" ~
System.out.println("YYYYYYYYYYYYYYYYYYYY");
8 `/ Y/ l* j9 Q" m y: l5 `) l2 | potenAgent[goodNumber] = ag1;) d4 x* B+ Q" |4 k+ G
goodNumber ++;
' k, m$ t5 W" i5 J8 R w# ~ }$ I. d9 V7 k: L, c9 b# T
}
: r" E# i1 w) l& Y: ^ : f9 J" ^6 [. a# {1 R
if(goodNumber >0){) G5 S; `& M a6 f5 \0 r
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
8 @" S: ], Y& \6 @) l- f- t: y Random rd1 = new Random();9 c' b* H% {- j& S9 j
int select = rd1.nextInt(goodNumber);
3 B" H9 m; O& {1 l2 ?' O* b potentialParterner = potenAgent[select];
% `$ d9 [6 ?' v* N2 |1 T4 | value = true;) @; R% q3 L- Z3 R
}
0 O# Y/ M: \% ^( H% p+ y$ h return value;
& n8 U2 g( Z$ ? }3 i0 m6 c: A b+ g9 O: y" H7 W3 b
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|