|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。* H+ ?+ ?; H8 c7 U% {& T
private boolean findPotentialPartner(){
, \( r' m* d! S+ J% k boolean value = false;
2 B# X1 e1 Z/ f5 {. G* y+ P
# U& W% p# D+ N7 D: t OrderedMulti2DGrid grid = space.getCurrentAgentSpace();6 s z# l1 V- w3 i- Q" ?% n
Iterator iterator = grid.getIteratorAt(x, y);
& w6 i) a! O; l- R4 M: F SexAgent ag1 = null;
! M$ O, e/ X# ~3 M SexAgent [] potenAgent = new SexAgent[20];
2 w2 x. p. Y. R2 W. o int goodNumber = 0;/ T$ f d: i2 g' \, u) \
while(iterator.hasNext()){
7 K- E0 Z' P/ F System.out.println("XXXXXXXXXXXXXXXXXXXXX");
) A7 t( Z: Z7 U# J/ I8 W! j0 { ag1 = (SexAgent)iterator.next();
6 @! ^- O9 @. F# I& M if((ag1.sex == FEMALE) * [4 D8 K% d5 |0 L
&&(!ag1.isCoupled())){ }* M* u- m/ @% f0 J/ U
System.out.println("YYYYYYYYYYYYYYYYYYYY");1 V/ g Y( S) r7 G
potenAgent[goodNumber] = ag1;
5 M8 W7 z4 Q/ V goodNumber ++;
# V) h8 w; Y g | }2 C( J- ^* y& L" B. T0 J
}
" }9 F- }! o: M- Z+ B * P0 @. h& x- G! g. z
if(goodNumber >0){
- r% s: @9 c0 o7 O, | System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
! A @- b2 c, H9 i+ z9 [" T$ a# b Random rd1 = new Random();: t; ]9 F' b$ x5 M; I$ H5 Y: j- ]
int select = rd1.nextInt(goodNumber);' c9 v( d% R- }- T1 e8 t
potentialParterner = potenAgent[select];& D- z% U# [9 e/ l3 b
value = true;4 ?+ H- T2 C/ u
}6 X7 f" \ h+ }' U) i) E
return value;
( z+ J% X5 q7 u; |+ @* T6 b }/ t5 d, n- b9 b8 r D# A5 R
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|