|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
$ O; _ c% i! w: ` private boolean findPotentialPartner(){! ^1 e, o N+ ~2 g: g: ]- U
boolean value = false;& K X( {0 |4 K& T/ |" x
( F( {5 E; |% y. K
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();; F" n0 X1 \. Y7 h3 p6 o4 ~. J
Iterator iterator = grid.getIteratorAt(x, y);
5 D5 d2 T) e: t! N/ y* T SexAgent ag1 = null; . T* {7 I6 i4 A& D7 A* ~6 t B
SexAgent [] potenAgent = new SexAgent[20];) Z2 W# z; |) W1 M j$ H3 J9 K
int goodNumber = 0;
- y+ u9 Y: v% R while(iterator.hasNext()){
* Y" s' t. W. {9 J2 `4 o: [2 G# H System.out.println("XXXXXXXXXXXXXXXXXXXXX");) ~2 V, K, ]. e0 D5 R+ k5 T- C
ag1 = (SexAgent)iterator.next();
5 D% O0 r8 L2 Z) U if((ag1.sex == FEMALE) 6 _6 x; p! ]" `4 B: |# q d% h( K
&&(!ag1.isCoupled())){
0 x" G0 |$ A6 n System.out.println("YYYYYYYYYYYYYYYYYYYY");
$ F& T& N% [1 b potenAgent[goodNumber] = ag1;
7 J. I. w/ k* B! `8 P3 t0 Z goodNumber ++;2 z% G3 f6 V8 h
}
5 [& \9 w j: ^2 C7 _4 P/ m6 F }% B0 }+ J4 b; _9 ?5 P1 v1 M0 |
1 o7 V2 C6 ^: C if(goodNumber >0){% s( `% `$ B Z$ F
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
9 g& {! A! J* H. i4 J Random rd1 = new Random();9 H' D9 ]" O. K% }1 [) b/ u' G; V
int select = rd1.nextInt(goodNumber);6 x5 h% O% i* [7 X) t: f2 {" I
potentialParterner = potenAgent[select];
3 Y" J2 X' r4 e( A8 L3 S value = true;
4 q9 T: p9 |' V! P1 w }6 G. S a H' H2 M- D# v+ F/ K
return value;7 k+ I) o$ M8 w. A) c
}
5 J" Y0 n- Y' B. J$ C# i始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|