|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。# {/ u0 L1 J. A# w- p
private boolean findPotentialPartner(){- Y/ i! m; S: G/ _5 Q: x
boolean value = false;
* C2 ] m. K8 u; M
" {8 J, M+ j7 T: g$ ? OrderedMulti2DGrid grid = space.getCurrentAgentSpace();( }. D( Z% I: M9 z( j) Y
Iterator iterator = grid.getIteratorAt(x, y);
6 k; E3 C; W, {& r9 r. M SexAgent ag1 = null;
- \& P- l* E" _9 Z6 e SexAgent [] potenAgent = new SexAgent[20];' H! V( |: Q6 [( W2 s
int goodNumber = 0;9 q1 ^8 l! ^9 i* V4 S
while(iterator.hasNext()){+ L) r9 T* n. A& r
System.out.println("XXXXXXXXXXXXXXXXXXXXX");, H- i! h2 D" B0 c# b( S
ag1 = (SexAgent)iterator.next();0 {( X* t& ?# [! l; r/ \% k
if((ag1.sex == FEMALE)
1 v$ w7 q* u3 K, s4 R# | &&(!ag1.isCoupled())){% Z7 W. ^- o q
System.out.println("YYYYYYYYYYYYYYYYYYYY");, l5 P! T) M; G; N$ _" o* ^" T
potenAgent[goodNumber] = ag1;
2 v, H7 ?( w+ g' r. C3 i- |! B goodNumber ++;+ x7 Y/ A* Z7 h* J: a% ^
}
, [# k7 I& b2 X( Z' f- v C }
. V9 S, B- w/ }% b. b
! | i5 s; G/ G' P if(goodNumber >0){4 M4 ~9 |8 B+ }" Y$ {* A
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); * v! K/ ?7 [9 [& K: Q
Random rd1 = new Random();
5 n% Q9 x/ n9 C& w ^5 ]- a int select = rd1.nextInt(goodNumber);
3 |0 [$ |0 W s potentialParterner = potenAgent[select];) I. g5 G( ~2 ]7 v. W- ]4 T" N0 L' C
value = true;+ [8 A$ s, l9 r6 M% X
}& o/ {- c( z% T; w
return value;
7 }: \) L' J! n% y3 \8 D }
; m/ F1 t/ z; V; x5 ?) }- E始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|