|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。- X" n' `0 E1 J7 C4 y' S
private boolean findPotentialPartner(){
; Q7 z k7 O8 }6 x+ s boolean value = false;# ]6 H ^7 {! T5 b" n
% X$ C B- L" t$ V' W$ K5 f
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();, H" H8 z- S7 K2 l- M9 i8 }
Iterator iterator = grid.getIteratorAt(x, y);$ W7 W: |9 L' C! l; e0 g @
SexAgent ag1 = null;
# L0 y( O) M( F' C' Z, @ SexAgent [] potenAgent = new SexAgent[20];4 l! t( O4 {" E/ e1 P, n" N
int goodNumber = 0;6 }% s% [1 v5 A! i
while(iterator.hasNext()){% l3 i4 B6 @% |& U+ W
System.out.println("XXXXXXXXXXXXXXXXXXXXX");8 b$ Q2 ?, W! t- c
ag1 = (SexAgent)iterator.next();
/ d# U) c4 P' b6 q& T( ~ if((ag1.sex == FEMALE) $ [& ?; y# k' z ~, E
&&(!ag1.isCoupled())){
) Z, Z# U( w# J: W# F System.out.println("YYYYYYYYYYYYYYYYYYYY");
. Q3 A5 j- }7 {+ m8 f potenAgent[goodNumber] = ag1;$ l9 o2 y/ K1 \1 r5 u
goodNumber ++;/ L9 [1 H5 J) ^2 B6 F1 Z5 q$ H
}7 S+ r, X8 O! Q. i. Q$ ~3 p
}3 F# G* y- x7 v* t; w# T
, _& [4 z M Y: b. G
if(goodNumber >0){
, X6 e- [4 |* H: p$ U+ e System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); + I7 T6 c3 W, R4 R, J$ k4 h
Random rd1 = new Random();
9 V5 V" b3 c3 v" q int select = rd1.nextInt(goodNumber);
8 ]8 E5 v7 K+ _+ p potentialParterner = potenAgent[select];; K4 b: _" n% S' J
value = true;
6 B, |1 e2 ?) D- j" {1 X }
2 @ E9 L) T& e$ {, _ return value;
% q j; v. F8 V0 O& D/ r2 l# Y }
* k" M) Q }" m$ `5 e始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|