设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4493|回复: 3

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

  [复制链接]
发表于 2012-3-4 17:00:49 | 显示全部楼层 |阅读模式
在CarryDrop model中那个spreadmoney方法里,哪一句是用来随机撒钱的啊?程序代码如下,我看到了随机选取坐标,并将该坐标对应的空间格内的值转换为数值,关键在于这个值貌似始终为0,不知道怎么把它修改掉的?哪一句是生成不为0的值的?" N! @0 n- c+ f) p& Y5 ?
        public void spreadmoney(int m){; `) y& r* e; I! s. R$ z9 y+ r. I
                for(int i=0;i<m;i++){
' B8 l8 ^6 V: h/ \, ?) U. y                        int x = (int)(Math.random()*(moneyspace.getSizeX()));( Q, d) Q0 U' W6 o, ~5 d
                        int y = (int)(Math.random()*(moneyspace.getSizeY()));
/ ?3 G: i6 P. Z. z' d- m
  T- w. S+ Z& j% C- P0 N$ ?9 o                        int I;" g4 B. M+ K8 t  s! d! K
                        if(moneyspace.getObjectAt(x,y)!=null                                I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();% `. |7 y# W+ P$ K$ K
                        }2 U( ^. K3 M+ ^
                        else{1 l* t# W  H' U" p
                                I = 0;3 J; @5 k# j1 f# c' g
                        }3 Z" a% h0 u. H" A' H# Q; P
                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }
# l5 m2 r0 }  Q& i        }
 楼主| 发表于 2012-3-6 09:15:08 | 显示全部楼层
代码帖的有点乱,怎么都没人能帮忙看看呢?      
, H. [$ `' x6 h/ t# _       public void spreadmoney(int m){+ T) @: p) j+ @5 |4 i8 l
                for(int i=0;i<m;i++){
7 L( I/ ^/ d! C                        int x = (int)(Math.random()*(moneyspace.getSizeX()));
3 d; O; a7 k9 k  V; F; x9 A0 e                        int y = (int)(Math.random()*(moneyspace.getSizeY()));
8 J4 P5 P  g, q) J# j% H- R) c- d
                        int I;
. |: H* a: W) G+ X' N                        if(moneyspace.getObjectAt(x,y)!=null                                
0 ^7 F5 U, w) m6 q6 ?                        I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();
" A- i8 V0 y. ?                        }! ^0 N: i( I, _- n2 D4 n& k/ q
                        else{
) l- Y/ A8 B3 n# Y                                I = 0;, d, t, ]# V! B3 k
                        }9 ^( H' V4 M  O! b- l
                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }
" A0 V" \0 i7 f% O" F& Y        }
 楼主| 发表于 2012-3-6 11:25:15 | 显示全部楼层
还有,当两个agent碰到一起了,到底是谁抢走了谁的钱呢?从程序上真的没看明白
 楼主| 发表于 2012-3-10 15:35:24 | 显示全部楼层
至今没人解答,这个论坛太失败了,还是我自己找出答案吧,不知道对不对。
/ f# V; A  O8 Z* X4 r! p# s第一个问题的钱其实是随机在40*40的格子中选择了1000个格子,每个格子里假设有1块钱,只要agent经过这个格子,如果没人来过,就认为拣了1块钱。! i9 R. R) Q" _; s1 p( h. C4 k& \
第二个问题的答案来自于schedule的execute方法中有个shuffle方法,重新随机调整了每一轮agent的执行次序,根据执行次序的不同而判断是谁先进入了这个格子,从而得知后来的就要交钱了。

点评

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

本版积分规则

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

GMT+8, 2025-10-3 03:50 , Processed in 0.013589 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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