设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4996|回复: 3

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

  [复制链接]
发表于 2012-3-4 17:00:49 | 显示全部楼层 |阅读模式
在CarryDrop model中那个spreadmoney方法里,哪一句是用来随机撒钱的啊?程序代码如下,我看到了随机选取坐标,并将该坐标对应的空间格内的值转换为数值,关键在于这个值貌似始终为0,不知道怎么把它修改掉的?哪一句是生成不为0的值的?( ~( d9 Z! J5 y+ ]
        public void spreadmoney(int m){
# b2 Q5 J% r" s. S1 Z                for(int i=0;i<m;i++){, m) \6 ]/ u: O
                        int x = (int)(Math.random()*(moneyspace.getSizeX()));
# f6 y3 f" a* a' x5 X                        int y = (int)(Math.random()*(moneyspace.getSizeY()));
' e" `2 M1 Y& t: ~% y
  }7 k; I2 G+ A, `' J* r                        int I;
' u( D5 L2 Z1 Z3 p% u* `                        if(moneyspace.getObjectAt(x,y)!=null                                I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();
& H7 ]8 h7 y3 L+ l3 }4 ^& Y                        }
8 L' J8 K4 K1 [3 M9 F. M                        else{1 q) x" E  M9 P# i) Y: [% `# u0 {# K0 L3 v
                                I = 0;
8 ~; P( u) Y+ v3 k# p  C                        }/ r! z" X* o  w" @6 c2 ~
                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }8 m6 [" k, L  ~' P" y$ T% J. N8 A
        }
 楼主| 发表于 2012-3-6 09:15:08 | 显示全部楼层
代码帖的有点乱,怎么都没人能帮忙看看呢?      
# n/ H) n3 W% Q: ^6 W  m       public void spreadmoney(int m){" l& `0 Z- n* s' E" q
                for(int i=0;i<m;i++){
* @6 W4 H6 y3 O- z                        int x = (int)(Math.random()*(moneyspace.getSizeX()));
* z6 U8 b; O1 j                        int y = (int)(Math.random()*(moneyspace.getSizeY()));9 B4 d" N. Y1 F9 s
3 f/ ]  a& [8 K1 [2 R" w
                        int I;7 G. J/ `2 ]! p' N# e1 z7 y, Y9 H
                        if(moneyspace.getObjectAt(x,y)!=null                                : b* U6 E8 o* ]2 a! ^0 C
                        I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();
4 |, P" E8 U, g9 a" G                        }
2 j( z$ T: ]# R. U" G6 t3 m, ^                        else{
1 S7 F& K9 I) @  B( K& W/ q                                I = 0;
- [; q4 C4 u0 B( i6 [                        }, W7 F1 i- z( O  W4 @8 P2 g$ |
                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }
) V9 X% y  ~8 W2 @1 T        }
 楼主| 发表于 2012-3-6 11:25:15 | 显示全部楼层
还有,当两个agent碰到一起了,到底是谁抢走了谁的钱呢?从程序上真的没看明白
 楼主| 发表于 2012-3-10 15:35:24 | 显示全部楼层
至今没人解答,这个论坛太失败了,还是我自己找出答案吧,不知道对不对。; G! ]1 m" j* z  U
第一个问题的钱其实是随机在40*40的格子中选择了1000个格子,每个格子里假设有1块钱,只要agent经过这个格子,如果没人来过,就认为拣了1块钱。) ?8 p2 _- `$ M- g4 Y2 _
第二个问题的答案来自于schedule的execute方法中有个shuffle方法,重新随机调整了每一轮agent的执行次序,根据执行次序的不同而判断是谁先进入了这个格子,从而得知后来的就要交钱了。

点评

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

本版积分规则

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

GMT+8, 2026-1-20 01:27 , Processed in 0.023890 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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