设为首页收藏本站

最大的系统仿真与系统优化公益交流社区

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5621|回复: 3

[求助] 关于CarryDrop model的一个问题

  [复制链接]
发表于 2012-3-4 17:00:49 | 显示全部楼层 |阅读模式
在CarryDrop model中那个spreadmoney方法里,哪一句是用来随机撒钱的啊?程序代码如下,我看到了随机选取坐标,并将该坐标对应的空间格内的值转换为数值,关键在于这个值貌似始终为0,不知道怎么把它修改掉的?哪一句是生成不为0的值的?
9 l7 |! Y" l7 A# q        public void spreadmoney(int m){6 I% l# R, S, M/ _
                for(int i=0;i<m;i++){
$ n* \# e( }3 b9 e$ H) {; A                        int x = (int)(Math.random()*(moneyspace.getSizeX()));$ W8 {5 n( S- I; ]
                        int y = (int)(Math.random()*(moneyspace.getSizeY()));
* g( G; }0 f2 i! I5 A
; ]# l9 ]4 G2 i& ?1 {3 _- ^$ B                        int I;
* i. X. x' n0 X) o0 e                        if(moneyspace.getObjectAt(x,y)!=null                                I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();$ F- B( K0 Z9 y/ n6 ]
                        }: x/ t$ X# T5 P, j( b# w' I
                        else{7 {* I& s# A0 I) b" B7 t3 Q
                                I = 0;
- S9 m* U+ h" [% W( X3 ?" x- [                        }
" A2 S& F- M  A5 R                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }
( ^+ t/ P4 I4 G# e        }
 楼主| 发表于 2012-3-6 09:15:08 | 显示全部楼层
代码帖的有点乱,怎么都没人能帮忙看看呢?       2 ~: d8 l' n+ P! d5 E/ U
       public void spreadmoney(int m){* b  h3 z6 D1 r- M& N) Q: h
                for(int i=0;i<m;i++){
4 r+ M9 n( u) x$ E' s' l                        int x = (int)(Math.random()*(moneyspace.getSizeX()));
0 }) X. s: d7 p, T% {  c1 A5 X                        int y = (int)(Math.random()*(moneyspace.getSizeY()));4 `* F5 j' U6 ]) Y, n9 O; G$ a
% @# \$ H0 f1 I1 j/ E( V
                        int I;
# B4 D/ |( D' o) ~9 F* o                        if(moneyspace.getObjectAt(x,y)!=null                                
# @+ J3 m+ d# I! _: v7 s1 D                        I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();" A; k$ I1 O& H" P1 \
                        }! V. {9 a& W1 r; C5 B+ z3 S$ Z3 @
                        else{
3 E: c3 H0 ]4 c                                I = 0;
  G! I# }) }9 g6 t! p) z" Y                        }+ c% Z- \4 U9 Q$ i
                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }
1 [! v6 {- I7 V. c! U        }
 楼主| 发表于 2012-3-6 11:25:15 | 显示全部楼层
还有,当两个agent碰到一起了,到底是谁抢走了谁的钱呢?从程序上真的没看明白
 楼主| 发表于 2012-3-10 15:35:24 | 显示全部楼层
至今没人解答,这个论坛太失败了,还是我自己找出答案吧,不知道对不对。
' w, a6 p6 K# W* n# y第一个问题的钱其实是随机在40*40的格子中选择了1000个格子,每个格子里假设有1块钱,只要agent经过这个格子,如果没人来过,就认为拣了1块钱。% `$ E& v# r+ R+ Y+ s
第二个问题的答案来自于schedule的execute方法中有个shuffle方法,重新随机调整了每一轮agent的执行次序,根据执行次序的不同而判断是谁先进入了这个格子,从而得知后来的就要交钱了。

点评

e, 没人回答你不代表论坛失败。。。做这块的本来人就少,而且刚好看过捡钱这个例子的人也不多。  发表于 2012-3-15 17:29
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|SimulWay 道于仿真   

GMT+8, 2026-6-23 09:40 , Processed in 0.014205 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表