|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
7 i, ]0 c; P0 U) S( ] private boolean findPotentialPartner(){
% V, ~# E/ o6 f) ?& Z boolean value = false;6 R- h7 _3 j W$ R9 v- ~) _$ j
6 q* M2 }# s" ~# @! x7 p
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();; a8 B( { C' d5 l) k. L
Iterator iterator = grid.getIteratorAt(x, y);, x( n$ j/ ~0 ~6 k9 m+ k
SexAgent ag1 = null; 3 Y v. I5 W0 W+ U! V2 W! Y
SexAgent [] potenAgent = new SexAgent[20];# p, I/ Y9 H1 U7 \7 g8 a X7 \/ H
int goodNumber = 0;' p& n* O R- p ^
while(iterator.hasNext()){) ^, D! M9 P1 C
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
8 Q/ K3 M2 [2 Z7 K9 \" V% I0 Y: @ ag1 = (SexAgent)iterator.next();
1 }) J0 V, t0 L1 Y if((ag1.sex == FEMALE)
/ a# c& L) c( q2 D3 [ &&(!ag1.isCoupled())){
7 V- |" D) }" m% b System.out.println("YYYYYYYYYYYYYYYYYYYY");
# _6 b$ W) m4 ^( ~9 f' Y9 v potenAgent[goodNumber] = ag1;! H. z; z: G+ C4 a2 |
goodNumber ++;! k) E4 O) @/ u \ U( c9 F
}7 O8 ^ U# X |2 ]
}3 \& e" W$ E9 S+ ?6 q: P
. Z$ M. m( J' d# Y5 u
if(goodNumber >0){. L4 _3 f/ ]* A
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
4 q4 ?. f% x: n% K% [" b0 s Random rd1 = new Random();
3 R0 N) n% P1 k: k int select = rd1.nextInt(goodNumber);
& L. J, D! C; u. Z) O8 z potentialParterner = potenAgent[select];9 k4 S6 v, {& ^% k
value = true;
; G( Y0 V6 o* _2 e$ B }
( ]$ I, M! p3 c8 b& x6 \ return value;
. s/ k6 ?3 I8 [1 [4 f D+ g' v; | }
7 A m: P4 [% Q4 s始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|