|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
% D# `. G) v" V+ i8 _7 N private boolean findPotentialPartner(){
; i Y, z. T4 g boolean value = false;4 b, M4 s# Q+ D# b2 O4 j
. J$ Z: t% l# r$ V: k OrderedMulti2DGrid grid = space.getCurrentAgentSpace();% ^/ E" L1 V4 j, o- J0 O
Iterator iterator = grid.getIteratorAt(x, y);
: t- n9 b+ h- f, }/ b% s3 o SexAgent ag1 = null;
: }. T( C( j0 T. u SexAgent [] potenAgent = new SexAgent[20];
5 @9 C5 \9 W( s- u& t$ \& [ int goodNumber = 0;9 w/ M$ w$ |, S# M5 _4 j
while(iterator.hasNext()){
* }& c [6 U; M System.out.println("XXXXXXXXXXXXXXXXXXXXX");! @2 A- S- L5 _7 L2 R: d
ag1 = (SexAgent)iterator.next();
m/ ?1 d8 a6 G6 n" ? if((ag1.sex == FEMALE) 1 d `, b1 V, T' R! j6 e5 X
&&(!ag1.isCoupled())){3 A9 P9 P# l- O0 _
System.out.println("YYYYYYYYYYYYYYYYYYYY");% s! [* K. U$ } P) T( S0 S
potenAgent[goodNumber] = ag1; P# f7 [/ a$ g/ W" i, J
goodNumber ++;
+ v' Z8 J' W9 v4 x- F3 _! t7 C }
1 C- f% b6 m3 ~/ S3 J7 c* A$ u9 c }
, g- z2 H- c" t$ S ( p: }; p _' n( A4 H3 e# N
if(goodNumber >0){' S& D4 j7 A7 X2 y' b* Y) h! B) r0 d
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 2 p0 m" w" m) ?$ g
Random rd1 = new Random();
0 R9 c! J! r* T1 }# A1 @- M int select = rd1.nextInt(goodNumber);
6 M0 T, A; \7 a potentialParterner = potenAgent[select];( p7 J, `6 q4 U
value = true;
- B& }" R3 U& b, |8 b7 n }1 r- e$ s6 `/ S; j
return value;
7 s! q% ~* i* k& g1 a ?; u" { }
% h- x& u. a6 h$ p1 R始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|