设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6087|回复: 3

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

  [复制链接]
发表于 2012-3-4 17:00:49 | 显示全部楼层 |阅读模式
在CarryDrop model中那个spreadmoney方法里,哪一句是用来随机撒钱的啊?程序代码如下,我看到了随机选取坐标,并将该坐标对应的空间格内的值转换为数值,关键在于这个值貌似始终为0,不知道怎么把它修改掉的?哪一句是生成不为0的值的?3 c9 |: }% j$ ]( w6 S
        public void spreadmoney(int m){5 D+ j( Q  E: L. w& Z
                for(int i=0;i<m;i++){2 ~0 v2 s' M$ E: u2 n0 Q6 x
                        int x = (int)(Math.random()*(moneyspace.getSizeX()));1 o, v6 ~" R+ x: h6 l% h0 ]! ~& d
                        int y = (int)(Math.random()*(moneyspace.getSizeY()));
  [4 y$ E# E) G7 B+ ~7 w+ x2 K: N0 Y7 o% Z
                        int I;
- h6 i! O% d. t                        if(moneyspace.getObjectAt(x,y)!=null                                I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();7 H. \+ q% V5 q' P4 f0 q
                        }7 @' f& W" a7 k/ L# f% `) i
                        else{
1 W+ E5 \; q) {3 U                                I = 0;
. @4 }3 B9 E. u( {) i                        }
6 j' Y9 T4 T# J# Z6 p: h) S3 n; |7 U                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }, n# [% K3 v2 G8 d  W
        }
 楼主| 发表于 2012-3-6 09:15:08 | 显示全部楼层
代码帖的有点乱,怎么都没人能帮忙看看呢?       ! h: Q3 s. f  m4 q! E7 \
       public void spreadmoney(int m){
; w, J! b6 Q5 s                for(int i=0;i<m;i++){
: A$ X1 k0 Y% m( _# Q                        int x = (int)(Math.random()*(moneyspace.getSizeX()));
" [! R, `+ a/ z                        int y = (int)(Math.random()*(moneyspace.getSizeY()));
8 `9 z% e1 C' M8 w6 W$ u5 I% U$ E' \: W: O
                        int I;# }- I( j# ~! J, @! ?" A* ?3 e
                        if(moneyspace.getObjectAt(x,y)!=null                                
1 E* D, G$ c; s4 @* y                        I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();1 C, y/ e6 _5 D8 b% p
                        }/ I6 W8 j( {7 [+ b# q* n* M+ e
                        else{7 F+ D$ \$ H& e2 c) O
                                I = 0;
. F* a: m6 T8 J+ t                        }$ N, W. C  L6 ^/ s0 J0 H
                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }
" r$ g# E; R1 h% x) P, R. j% G. [        }
 楼主| 发表于 2012-3-6 11:25:15 | 显示全部楼层
还有,当两个agent碰到一起了,到底是谁抢走了谁的钱呢?从程序上真的没看明白
 楼主| 发表于 2012-3-10 15:35:24 | 显示全部楼层
至今没人解答,这个论坛太失败了,还是我自己找出答案吧,不知道对不对。- f9 G4 g$ n# F- j3 U1 l; m
第一个问题的钱其实是随机在40*40的格子中选择了1000个格子,每个格子里假设有1块钱,只要agent经过这个格子,如果没人来过,就认为拣了1块钱。2 s: }% M  k; I! ^
第二个问题的答案来自于schedule的execute方法中有个shuffle方法,重新随机调整了每一轮agent的执行次序,根据执行次序的不同而判断是谁先进入了这个格子,从而得知后来的就要交钱了。

点评

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

本版积分规则

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

GMT+8, 2026-9-14 20:17 , Processed in 0.017836 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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