|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。( H0 V* E# |/ ]0 e
private boolean findPotentialPartner(){
T8 }$ b( ]. S, [$ c boolean value = false;% ]: @# ]% P2 Q4 B+ \
! J2 g- }: D' ^7 t4 G3 M5 U
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
, Q6 W9 P% C" Y& |) J Iterator iterator = grid.getIteratorAt(x, y);: R6 F9 f) W1 k" s% |; _
SexAgent ag1 = null; $ `/ I9 d* r/ }+ L" W
SexAgent [] potenAgent = new SexAgent[20];, b$ [; j* t+ l$ `1 I/ T* l. h' e6 m3 t
int goodNumber = 0;4 L4 Z. g' T/ R* l( w2 a9 ^5 p
while(iterator.hasNext()){
) @) X) d9 R9 N' G System.out.println("XXXXXXXXXXXXXXXXXXXXX");3 w h; f9 k ^) i# N
ag1 = (SexAgent)iterator.next();, K! V+ }' G$ n6 {+ B
if((ag1.sex == FEMALE) ) F. m4 d5 x# Q0 T i
&&(!ag1.isCoupled())){
8 n- u. ~, a' `) r% Z0 P: o* C System.out.println("YYYYYYYYYYYYYYYYYYYY");
$ a* A, V+ a! ]2 | potenAgent[goodNumber] = ag1;( N3 a. ^! K# C1 |% S; G
goodNumber ++;
3 x( n: O! g5 R1 m; t$ `+ Q }4 d. [$ X& P1 W' i+ m) g+ c
}6 ]8 `) I/ U7 u
% _3 N0 A9 Z$ \" h5 @ if(goodNumber >0){/ l' W) @6 [+ c$ Y
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); ) [& C, I! }* q, z
Random rd1 = new Random();& {' r) [, Y7 t0 \9 \4 u) r$ B h5 D
int select = rd1.nextInt(goodNumber);
+ R5 C! D( Q/ ?( x" R potentialParterner = potenAgent[select];
! U- q8 G6 O, i! Z3 J1 P value = true;3 t- y$ K# U9 M6 i& I
}6 c# U4 z2 j5 [) Y. y" J
return value;. }9 W6 ^- w3 S" G$ M$ x S
}
" V: E4 d0 E; \. b9 T+ ?始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|