|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
; ^& s; ~5 @' I8 G6 Z private boolean findPotentialPartner(){# S9 v3 D& B+ M1 L: g( B$ Z8 V
boolean value = false;
8 B3 N7 V- M7 F5 G
: ?4 c( L$ N2 A. r7 \4 s9 b OrderedMulti2DGrid grid = space.getCurrentAgentSpace();& E$ ~& |4 c7 d8 J8 K
Iterator iterator = grid.getIteratorAt(x, y);- B4 U0 W( z; V0 O+ g
SexAgent ag1 = null;
7 Q4 Q, P2 A8 E& i; X SexAgent [] potenAgent = new SexAgent[20];% P" v1 k7 ^' g. B1 x7 g$ s1 |
int goodNumber = 0;
8 v- `' ^" z* S while(iterator.hasNext()){
$ n' b, F9 H- U% g- o' a+ @& F: e System.out.println("XXXXXXXXXXXXXXXXXXXXX");
5 ~: z0 C, Z2 ]2 @4 [8 n! ? ag1 = (SexAgent)iterator.next();/ S6 ~/ q% D; k8 t6 G) Q
if((ag1.sex == FEMALE)
3 V, J+ [* o$ X3 s &&(!ag1.isCoupled())){
* H% D7 [, ?; ^/ p X System.out.println("YYYYYYYYYYYYYYYYYYYY");3 i$ g! I3 S; c! }' b \) @/ p) v8 E
potenAgent[goodNumber] = ag1;
) c: ^) u5 u& l) X" A) ` goodNumber ++;4 X5 R5 ?$ b( Z
}. x _* n. O% M( D6 A
}
8 y; k V# G" n1 K* R) c9 r/ Z% r F " C- d5 v8 w5 I5 [% D- ]2 x
if(goodNumber >0){
a. `0 l5 N& [ System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); - n4 i1 B! {9 m6 V- C! L D* ?. s+ m
Random rd1 = new Random();, u" s S) C7 [) V5 I
int select = rd1.nextInt(goodNumber);
+ b. s- T# |- P) B C7 f$ Q potentialParterner = potenAgent[select];
$ _3 d5 `3 Y$ p3 p N# h# A2 d. u value = true;+ C0 i7 h8 {) G6 W4 Z
}( a* S+ ~4 j" S3 r& Y; }
return value;' H( E: j. s4 f2 @' `* ~& O
}- O7 U, p/ p4 s2 a/ i2 D
始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|