设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5002|回复: 3

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

  [复制链接]
发表于 2012-3-4 17:00:49 | 显示全部楼层 |阅读模式
在CarryDrop model中那个spreadmoney方法里,哪一句是用来随机撒钱的啊?程序代码如下,我看到了随机选取坐标,并将该坐标对应的空间格内的值转换为数值,关键在于这个值貌似始终为0,不知道怎么把它修改掉的?哪一句是生成不为0的值的?
  |2 q' N, k3 |% ?) q, v3 A        public void spreadmoney(int m){
4 V" _0 c" }. x& T- T0 A                for(int i=0;i<m;i++){' ^5 o' O, @! z6 C3 H0 Q& F
                        int x = (int)(Math.random()*(moneyspace.getSizeX()));
& {, X+ ?$ i5 N9 [9 z2 U                        int y = (int)(Math.random()*(moneyspace.getSizeY()));& S2 {# _- n/ s
* B6 {' f8 `+ E* t+ ?. B
                        int I;/ V3 J1 u  H, t+ |! R7 g
                        if(moneyspace.getObjectAt(x,y)!=null                                I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();
. _% }/ `# W; V! m) h                        }
! h7 h# Z, g, Y' P3 h                        else{9 o9 a' P0 b) u. @1 h# O
                                I = 0;
- ^) M! _; b; J8 h  n                        }
1 b) o# x! h3 a$ {                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }  X) X* h7 G" p9 P& t. @% ]
        }
 楼主| 发表于 2012-3-6 09:15:08 | 显示全部楼层
代码帖的有点乱,怎么都没人能帮忙看看呢?      
- F% |! P- G- ^' u8 B4 m' F       public void spreadmoney(int m){
3 [; ?: p7 k( a" _7 V! ]2 l) z7 k* M                for(int i=0;i<m;i++){4 Z+ {. `% E5 u; G, v9 e
                        int x = (int)(Math.random()*(moneyspace.getSizeX()));
. a/ @" S+ U$ z                        int y = (int)(Math.random()*(moneyspace.getSizeY()));
6 b  G) \! Q. t8 u% o' f  h) {0 @. y7 I% o3 |5 E. y
                        int I;
3 a/ q, v( H( z+ \                        if(moneyspace.getObjectAt(x,y)!=null                                . t. e1 X# B8 Y
                        I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();
9 q* @" S7 b6 S                        }: g& ?2 B; ^' }8 e0 M$ ^- I1 s# G
                        else{3 q+ A/ j$ w7 t5 n
                                I = 0;! m* u" K: c/ Z" Q& T
                        }/ E% u7 }' u% w9 X7 I$ l
                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }
; y7 `$ ?- ~7 K( N: N! l        }
 楼主| 发表于 2012-3-6 11:25:15 | 显示全部楼层
还有,当两个agent碰到一起了,到底是谁抢走了谁的钱呢?从程序上真的没看明白
 楼主| 发表于 2012-3-10 15:35:24 | 显示全部楼层
至今没人解答,这个论坛太失败了,还是我自己找出答案吧,不知道对不对。
3 S# l- t* N+ `# p# k/ g第一个问题的钱其实是随机在40*40的格子中选择了1000个格子,每个格子里假设有1块钱,只要agent经过这个格子,如果没人来过,就认为拣了1块钱。
; W" P6 ~! d2 I0 s$ G! _) p第二个问题的答案来自于schedule的execute方法中有个shuffle方法,重新随机调整了每一轮agent的执行次序,根据执行次序的不同而判断是谁先进入了这个格子,从而得知后来的就要交钱了。

点评

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

本版积分规则

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

GMT+8, 2026-1-21 18:47 , Processed in 0.018277 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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