|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。6 N# z% b# {9 I& o7 y8 D
private boolean findPotentialPartner(){
0 v% i6 z& _0 [# D/ N( N boolean value = false;
# ?% e' w M9 H& [7 ? ( p" X' g& K6 p* t, N) R9 @
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();, i) { v" Y" ], E; F
Iterator iterator = grid.getIteratorAt(x, y);/ X, [* d* k" ~8 \& Z. O& V1 y
SexAgent ag1 = null;
& `* x/ H0 ~' ]) W$ Q SexAgent [] potenAgent = new SexAgent[20];
! d2 z) r( s, a9 u7 e int goodNumber = 0;
, t4 A* l( c ~! }+ j0 }( _ while(iterator.hasNext()){3 R* {8 U4 P) [/ Q2 m: x6 _6 n
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
, Z. d0 `0 A1 s+ b2 y) u ag1 = (SexAgent)iterator.next();
: t& z# n7 {6 v! z if((ag1.sex == FEMALE)
7 I1 o* v/ l$ p* L/ H/ O &&(!ag1.isCoupled())){' z. ?' H, i/ M- I/ _; I
System.out.println("YYYYYYYYYYYYYYYYYYYY");. r [( ]5 X: \/ o2 M1 _+ U
potenAgent[goodNumber] = ag1;
# x& O) L7 s$ V ~7 l goodNumber ++;
& z, b0 Z7 u0 C0 _( \" k. y' K }* M% t3 m) q0 J) [9 Y; g5 l8 O1 @8 V
}
; U! @0 t; C8 ]9 p- M 5 M; V0 M& S* O5 L1 G U6 a9 o
if(goodNumber >0){9 R- y: r0 T3 h' C F- H# \
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
1 e% D' W9 P, y6 K% o+ g T% d C Random rd1 = new Random();
1 e# u6 \) T* E5 |9 _2 Q1 U" r4 S int select = rd1.nextInt(goodNumber);+ S3 {" j& v4 m% q/ ^- y! V' L
potentialParterner = potenAgent[select];
2 z/ X) {& l6 t! R0 Q value = true;7 P* I& G7 O# p) C |. D# T4 \
}0 u% {. ^6 u$ L" E9 L, H# [
return value;$ P* W8 X3 ?7 u6 z
}
, l2 n2 x; |. }& B0 h始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|