|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
1 X% h4 N+ n+ d$ C6 M6 W private boolean findPotentialPartner(){9 H& \" Z5 }$ ]0 V% V' a) B
boolean value = false;
& _2 h& ]! p. T3 Q. j " d( b( S. ], J, L2 O( B
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();& q; }- S5 m0 R6 U! J9 ~
Iterator iterator = grid.getIteratorAt(x, y);( W: R$ }# F; x! k( T2 `& N8 o
SexAgent ag1 = null;
$ A, F3 l/ a4 R ]! L) X SexAgent [] potenAgent = new SexAgent[20];
' w$ A, ?9 V& ~8 R: C7 ~ int goodNumber = 0;# Q2 w- c/ p7 b z
while(iterator.hasNext()){" h1 K% d: t/ N. V% p+ U0 V7 p
System.out.println("XXXXXXXXXXXXXXXXXXXXX");. l9 v; u( _! w8 T* g0 N4 S
ag1 = (SexAgent)iterator.next();( p' M$ Q) g! ?) A; w# J* r7 D0 _
if((ag1.sex == FEMALE)
/ {1 y' Z2 t" m/ r* U6 D &&(!ag1.isCoupled())){3 ^2 J# I: E% \! e
System.out.println("YYYYYYYYYYYYYYYYYYYY");
9 A/ J3 w! Z; B7 R3 S/ ` potenAgent[goodNumber] = ag1;3 J3 n. h n4 Z
goodNumber ++;: h, q- v( N2 a! H: M5 D- {+ X
}# ~* _3 ^3 g1 K [
}2 j0 |8 C2 z& d
! w) t. O7 Y; |6 c if(goodNumber >0){7 N8 B8 G7 b. C9 S0 a0 C* p- z
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
3 k- D# @2 \( | Random rd1 = new Random();$ [. g) ^7 g" w" [
int select = rd1.nextInt(goodNumber);$ w& G6 x4 n+ }8 T
potentialParterner = potenAgent[select];
h2 _" d8 a9 w4 X value = true;
' \ y! s6 Y8 T7 ^ }! _+ {4 c7 f; E& t
return value;
. U$ L6 A4 ?0 C0 J* x9 W! Q) V% q } E* t _* n% M8 v% J* a
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|