设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5544|回复: 3

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

  [复制链接]
发表于 2012-3-4 17:00:49 | 显示全部楼层 |阅读模式
在CarryDrop model中那个spreadmoney方法里,哪一句是用来随机撒钱的啊?程序代码如下,我看到了随机选取坐标,并将该坐标对应的空间格内的值转换为数值,关键在于这个值貌似始终为0,不知道怎么把它修改掉的?哪一句是生成不为0的值的?
) k; j/ t2 `& y+ |3 x" P        public void spreadmoney(int m){
1 R9 ~4 w5 t' {& f/ S* L* B* E                for(int i=0;i<m;i++){
6 I: |: j: e+ e  m                        int x = (int)(Math.random()*(moneyspace.getSizeX()));
' }% @7 W: ]' y2 B) x                        int y = (int)(Math.random()*(moneyspace.getSizeY()));. B& ?/ x( _" F, E! H

1 Q- g! h( i- q                        int I;
& y0 ]1 x. ]4 L6 S# a, u                        if(moneyspace.getObjectAt(x,y)!=null                                I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();) D4 W( \1 |- I1 }1 g1 l& X9 C
                        }. A! y! Z' ~2 J* x
                        else{
$ v% V# r  I+ t9 d                                I = 0;5 ]% s% E! e6 y' p! `! X6 f
                        }/ {/ M% U, F$ S* p8 d% D
                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }
+ ?1 p. [$ `2 ^9 _3 k) w% X        }
 楼主| 发表于 2012-3-6 09:15:08 | 显示全部楼层
代码帖的有点乱,怎么都没人能帮忙看看呢?       9 g/ Z( ^/ j3 M
       public void spreadmoney(int m){
* `" U2 L" K# K                for(int i=0;i<m;i++){
5 x" R5 N, |% d- ?& x                        int x = (int)(Math.random()*(moneyspace.getSizeX()));
6 }. R" J; H3 G- e, c( @5 a. i; x( i                        int y = (int)(Math.random()*(moneyspace.getSizeY()));) |, q  {4 \) g/ s) B, _
5 Y: ~8 f* ]8 d1 W0 j
                        int I;
. x! t) y4 z1 H8 u# W3 d) ]8 C                        if(moneyspace.getObjectAt(x,y)!=null                                
" \4 W) W3 ?) H/ m- {                        I = ((Integer)moneyspace.getObjectAt(x,y)).intValue();
7 |# `6 I, {, k# W/ V% h( g                        }
' D; V9 Q/ X2 A0 j7 P; v                        else{
2 g/ h, e8 t+ F  X5 P5 i5 k' y* b  C                                I = 0;
) }, n9 O2 D3 V' ^1 w1 H/ Y9 L/ [. }                        }! G* r/ ]" e( x7 {4 h: W
                        moneyspace.putObjectAt(x, y, new Integer(I+1));                              }3 T. H) d* ~* T( E  H: c9 ^0 k
        }
 楼主| 发表于 2012-3-6 11:25:15 | 显示全部楼层
还有,当两个agent碰到一起了,到底是谁抢走了谁的钱呢?从程序上真的没看明白
 楼主| 发表于 2012-3-10 15:35:24 | 显示全部楼层
至今没人解答,这个论坛太失败了,还是我自己找出答案吧,不知道对不对。
2 n# y0 p" v; h% Q0 a第一个问题的钱其实是随机在40*40的格子中选择了1000个格子,每个格子里假设有1块钱,只要agent经过这个格子,如果没人来过,就认为拣了1块钱。: [8 m8 t: T4 V3 Y0 S0 W
第二个问题的答案来自于schedule的execute方法中有个shuffle方法,重新随机调整了每一轮agent的执行次序,根据执行次序的不同而判断是谁先进入了这个格子,从而得知后来的就要交钱了。

点评

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

本版积分规则

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

GMT+8, 2026-6-4 10:01 , Processed in 0.017023 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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