|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。* x3 R8 G: z6 Z8 d! X
private boolean findPotentialPartner(){
+ h9 r5 P2 q" u5 ~2 j+ o% p boolean value = false;
4 K# w7 h' e) |6 n+ u 0 A. J4 L0 s/ W
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();' [( g# n6 l6 U
Iterator iterator = grid.getIteratorAt(x, y);
! h- T4 C7 J3 o0 B7 [6 X$ L0 a SexAgent ag1 = null; $ d+ d! C7 N4 ^" m7 @% q
SexAgent [] potenAgent = new SexAgent[20];
! i+ a7 }. e% L9 J int goodNumber = 0;/ F6 E) Z6 X" f" \# A$ g, @, L
while(iterator.hasNext()){! y2 \' M' u; }9 |- I3 j1 U# K* \# a
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
4 C) n' E' t; G4 Q4 g" `2 _3 R ag1 = (SexAgent)iterator.next();8 d2 _' \" g+ u4 m. q% n1 v$ h
if((ag1.sex == FEMALE)
" C, s6 E+ ^% I: U &&(!ag1.isCoupled())){* v" T4 L6 ]* W
System.out.println("YYYYYYYYYYYYYYYYYYYY");) y: Y, z& s; c6 n
potenAgent[goodNumber] = ag1;
; d) P" i2 M& e( V7 L- Q5 O goodNumber ++;% G- R1 k/ l1 R- I. Q( t' P- F
}( U0 Z2 f3 t( \
}
, A6 k6 _. h6 j3 w! _' o* c5 r$ G 3 h: E4 F2 Q! \/ P2 i; K+ p+ n/ x
if(goodNumber >0){
) P- o8 r5 k' {. z System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
9 s4 K+ c+ i4 b: Q0 ~6 f Random rd1 = new Random();
6 q+ e3 r5 V. {9 N& w9 o- T2 A2 Z1 E int select = rd1.nextInt(goodNumber);6 L$ V6 h4 B3 m u6 V" {
potentialParterner = potenAgent[select];
Z1 y, c7 S7 p( N! Y6 @ value = true;3 ]! B& |2 ~. L/ f( s
}7 Y; p- Z4 H6 J6 |* z: S$ L
return value;
1 M2 P4 ^4 o; B# M) v/ H }
- R) d9 R; C" k+ h始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|