|
|
5仿真币
最近做流行病模型,需要在一个网格里面放多个Agent,我查了一下API,使用OrderedMultiGrid类来构造,里面提供了一些putObjectAt(int, int, index);之类的东西。似乎可以用。但是当我编程调试的时候发现在同一位置只能获取一个对象。这是很令人纳闷的事情。我想问一下Repast有提供什么好方法处理吗,不仅要能存进去,还要能方便的拿出来。
5 d6 Q4 e1 _4 s' P# C private boolean findPotentialPartner(){
0 p. ]% V, F' U. n boolean value = false;
; K% `3 C2 y0 R( x* n' G5 p
: o: G+ T& e4 ^; W/ Y U, C OrderedMulti2DGrid grid = space.getCurrentAgentSpace();
" [; a: a4 ?# V+ H6 S4 A, k# B Iterator iterator = grid.getIteratorAt(x, y);8 k) H3 C P" T; |% R% \
SexAgent ag1 = null;
" s7 k# c* U' N SexAgent [] potenAgent = new SexAgent[20];
r/ T4 t7 w* w- g* Y# F9 X int goodNumber = 0;
- M! f; n' W5 Y& G# f while(iterator.hasNext()){
3 l* U) W3 I C4 B System.out.println("XXXXXXXXXXXXXXXXXXXXX");+ b4 ?# E6 l; _# D) }
ag1 = (SexAgent)iterator.next();' K/ ?; R7 E8 L3 ?0 `8 \! d! J1 Q l
if((ag1.sex == FEMALE)
0 w6 B6 B* v' w9 o. T! F9 v &&(!ag1.isCoupled())){
' E; Z/ R; }3 q) J2 Z( e System.out.println("YYYYYYYYYYYYYYYYYYYY");/ S, ]$ u! _" S0 [8 E. i4 [; U
potenAgent[goodNumber] = ag1;$ z) T, C1 u2 Q0 r: B1 L! _3 U) V
goodNumber ++;
- u1 @, g" {4 S } N- U5 j# O8 J$ w( R3 G
}
4 N3 R3 [8 O) f6 I
3 X; o n, L. V8 L if(goodNumber >0){
, n- ^$ U- I% B- c+ E* t System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
- j" `: g L" R& p Random rd1 = new Random();# n5 j, D7 Z% N+ D2 O6 j0 Y( J
int select = rd1.nextInt(goodNumber);7 k: O' z% \: O' c7 A* @
potentialParterner = potenAgent[select];6 c. \% }7 m) @% c
value = true;- `2 l! {; J* D+ J- W( `
}
4 L0 w! E+ f1 E% o' S return value;
. \0 r7 _! r% @- q h; S }
" S9 {# U! n8 P: Y. g始终只能打印出XXXXXXXXXXXXXXXXXXXX,请各位帮帮忙。 |
|