|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。: L2 ?6 C5 r( _
private boolean findPotentialPartner(){ v/ e! {8 C3 J6 `& K6 K
boolean value = false;0 d; V+ A$ u$ ]" g8 Q5 {/ u
3 K. R9 E4 `( ]7 h. W8 e OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
# A, k; m2 j# t Iterator iterator = grid.getIteratorAt(x, y);
9 t2 I2 r9 y9 p$ C5 C$ b# c9 u SexAgent ag1 = null; ( Q4 E2 T: {4 r
SexAgent [] potenAgent = new SexAgent[20];/ C" F! f1 i; x' o3 E. K! s5 N2 ^
int goodNumber = 0;
+ H- u! r& Z0 R/ P, X while(iterator.hasNext()){8 G; |6 t7 N) V H. b
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
$ q' W8 J2 k" x3 I, c4 R ag1 = (SexAgent)iterator.next();+ t+ b6 F$ G# i# m8 _9 Z
if((ag1.sex == FEMALE)
, R) g$ q$ T5 A5 R8 P8 u& L &&(!ag1.isCoupled())){- M" g1 u. {5 m# R5 I1 l
System.out.println("YYYYYYYYYYYYYYYYYYYY");
- u' n! c* m- z potenAgent[goodNumber] = ag1;
+ j. O) [7 k% R) s, N) r" ~3 I goodNumber ++;
% g, y3 I6 u3 m* T6 ` }
% x+ ]! D8 E( z# t8 e q2 A+ t1 L3 F5 f }
8 B" b9 l+ [# Y+ K0 ]! r" \ - ^$ _# r: A7 J* T) w) e
if(goodNumber >0){
- e8 H" h+ `# z7 _; U( N System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 3 b# M# \. }- y; d5 l7 t7 m
Random rd1 = new Random();
9 H6 M1 g2 c9 C6 v' H1 o, ]2 | int select = rd1.nextInt(goodNumber);
7 m; c8 c) f; F# [7 @$ F potentialParterner = potenAgent[select];" r+ A5 q7 k2 T( h3 r+ w7 @
value = true;
0 z7 M. ]0 ^) |" x/ N- b& u! m }
3 m& C; J3 W) O return value;
, Q5 C- L1 B7 v* u$ y d) y; r }
, P4 k2 K+ Z, M1 z% g$ P始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|