|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
2 o, G7 G7 S0 \: ^+ E private boolean findPotentialPartner(){
- l( w$ [6 U4 ?" c) G4 K boolean value = false;
" a( R! X! o) P * o* B. [) Q5 k$ H
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
4 Z3 n% _- s' ] Iterator iterator = grid.getIteratorAt(x, y);, i1 Y2 ^+ n9 Y- ?6 P
SexAgent ag1 = null; * H7 l$ B2 L9 v
SexAgent [] potenAgent = new SexAgent[20];
3 g0 g# o1 Q6 [( k6 D$ g- j int goodNumber = 0;
* c8 u0 B# S3 r, N k while(iterator.hasNext()){
! R: ?. C5 i a System.out.println("XXXXXXXXXXXXXXXXXXXXX");
# m' d J6 t0 O8 L7 G ag1 = (SexAgent)iterator.next();
$ n: r( h/ ], J n* d! h" k! g if((ag1.sex == FEMALE) 8 Z# \1 U5 I' m4 S, v e
&&(!ag1.isCoupled())){* V# Y/ h1 z8 ~2 _. K
System.out.println("YYYYYYYYYYYYYYYYYYYY");& u2 [' k8 X3 ^ m( R, d
potenAgent[goodNumber] = ag1;. f% e: q! ?$ B. }' o I
goodNumber ++;
9 {, i$ P) @2 X( x$ w* J } b3 J! r- H% J) j3 n, V( S3 B z
}
, N0 D5 {( P; C, Q
' v# P1 x! @, L1 o4 a! Z if(goodNumber >0){* ]9 N: Z9 Q1 ]& J: x( G
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
9 H& v2 m- D1 G' e# o6 \3 D Random rd1 = new Random();
6 J5 `1 v8 h5 H7 b int select = rd1.nextInt(goodNumber);" G O9 r* b8 j: k! p8 q
potentialParterner = potenAgent[select];
4 t5 Q; j! U3 d9 A6 k value = true;, g- I7 p( F3 h$ e# { p- l
}! C3 H2 X: ]! |4 O: K& T$ f8 [' \
return value;" q0 m1 ^6 ~/ I- p* ^3 ~
}. |0 _ |5 s, a m: _: h* a
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|