|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
' X8 l: ]8 M. ?' |. ], Y8 m) b* p private boolean findPotentialPartner(){
; G. s2 i6 {- F; X R2 V boolean value = false;
- t( t( l# G" b; Z+ f 7 W2 m: a) m' h% m! a- c- {4 H
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
/ c. e. X2 I0 S7 L7 x8 [- H# D Iterator iterator = grid.getIteratorAt(x, y);
. {7 W0 W9 _0 e. P; D0 I) s0 i SexAgent ag1 = null; , [1 \# E* T) [4 y$ F
SexAgent [] potenAgent = new SexAgent[20];# w, I, r7 t5 b0 B
int goodNumber = 0;
' \ e9 a6 s: @% F" W& D while(iterator.hasNext()){
1 b: @ }; @/ g2 D5 e System.out.println("XXXXXXXXXXXXXXXXXXXXX");
# P, J9 t3 k; \# O ag1 = (SexAgent)iterator.next();
: E& P6 p7 w. S4 W if((ag1.sex == FEMALE)
w1 f3 Z5 H8 \; S# l &&(!ag1.isCoupled())){
C! A1 X2 }! X' _) F# a System.out.println("YYYYYYYYYYYYYYYYYYYY");! j7 \7 t. V; }6 Z8 T
potenAgent[goodNumber] = ag1;
! w& l9 |2 u4 o: H2 V" y) b7 Z goodNumber ++;
+ K8 J' _5 J) O) R% V% Q2 }# R$ }# g }1 J$ @( r1 j& z2 D6 a4 C$ r9 w
}8 N! j, B7 l' [0 y: Y5 M3 B
) A3 {3 G2 S6 f
if(goodNumber >0){/ H- s8 ?4 L. |( I* [
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
& q( @* J. K% Y$ L Random rd1 = new Random();
: K$ _" G! b5 B7 A5 T int select = rd1.nextInt(goodNumber);# D2 H+ T8 L/ F# F! F
potentialParterner = potenAgent[select];
0 L% T* k8 _5 n: \8 c! G8 ^ value = true;2 S/ O+ W/ u2 M( C# Z0 d
}
! N' j9 ^( n0 v. G4 F; }* q) M return value;
' D% A( R7 d/ l" r) n }
+ n4 f/ m# y7 N7 o- T. F始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|