|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。3 @5 b! n7 x/ L
private boolean findPotentialPartner(){ n$ u6 q% o( N V7 c& b
boolean value = false;
+ F4 a2 G: q) C/ e5 c$ h9 b + [7 v& b5 |5 W# [: d, ?- B4 n- C
OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
5 B- W( b A: {) a+ [$ g5 m Iterator iterator = grid.getIteratorAt(x, y);3 u9 L. I4 `% o3 z% \
SexAgent ag1 = null; . f3 a: ], _* v7 y& R
SexAgent [] potenAgent = new SexAgent[20];
* ?0 Q& Z9 c' K) [1 z int goodNumber = 0;, p0 j( c4 J. z. d! } I$ V* [& e8 j
while(iterator.hasNext()){) F5 s, H6 k# `; L5 C: c9 R+ f
System.out.println("XXXXXXXXXXXXXXXXXXXXX");
4 l0 l+ D" o& A: `, d ag1 = (SexAgent)iterator.next();" T& A$ i5 m7 N' }7 o$ S" O' B
if((ag1.sex == FEMALE)
1 e9 A' F: a' l' p+ e' v &&(!ag1.isCoupled())){
* h1 |6 f) I8 ` V3 {( A4 x System.out.println("YYYYYYYYYYYYYYYYYYYY"); y! q6 E% a1 e1 W! i
potenAgent[goodNumber] = ag1;
* w* w# w9 {9 D3 [( \. r1 w5 W goodNumber ++;+ u0 x& S6 I. r" o
}0 P$ `, C# G: n6 a8 p3 P
}
( j @ P q5 ^* @2 f$ U' G
; ` `6 a$ Z5 f if(goodNumber >0){. W9 h+ N4 [3 c% w* s# |1 z
System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); 3 f9 G. b7 O! f& F o/ J6 i
Random rd1 = new Random();7 @% n9 \; V) Q- A8 X
int select = rd1.nextInt(goodNumber);+ }6 ?; M8 r y+ ?+ F
potentialParterner = potenAgent[select];+ s9 C) z* {4 ]* B
value = true;* ^2 m1 D! `& a G9 M# J. W
}
\! W0 _' @- l# C, s0 ^1 c$ \ return value;8 I4 r* y3 c; e
}
+ x4 T) z* b) p4 G始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|