基本社会里模型的源码分析(2)

经过这几天的痛苦折磨,社会里源码基本分析完毕了,基本上理解了将之前程序中出现一些怪现象都了充分的理解。也多社会力模型有了比较深入的理解。先将部分心得体会再次记录,算是为前面工作的一个总结,也为关注的朋友提个醒。关于代码的解析基本上本人在读程序过程中依据程序本身的上下文和对社会里末次那个粗浅的知识而推测的,有热衷源码分析的朋友可以一起讨论

1. 首先从程序构架上看,本程序是面向过程的不是面向对想的,所以采用了大量的全局变量,而且并没有模块化的过程划分,所以很多东西都是最大一起的,不过作者采用的章节的形式表明了代码的层次感(这个也是我目前一直采用的注释方式,我很喜欢),但是注释还是有点少。因为unix C不熟悉所以全局变量找了半天才发现。总体来讲代码的可读性还是不错的,至少我理解起来还是蛮好的

2.之前研究社会力模型参考的文章是《Simulating dynamical features of escape panic》。前一个模型的编写过程也是依据本文的思想来编写的,但是做出来的模型正如前面几篇博文当中提到的那样,粒子抖动过于剧烈(速度改变太大所致),粒子有时候出现穿墙(我省略了两个力),粒子重叠(串行处理的结果),根本没有demo那种运动平滑的现象。特别是在粒子运动过程中,粒子的位置总是跟显示当中的拥挤情况想去甚远,不能形成有效的拱形拥挤区域,基本上是平行的区域,比较离散,从而导致底层模型的正确性与否存在疑问,导致对其模型的改进的说服力变的很差。当然经过后期的研究我们发现模型的构建基本上是正确的,主要是细节没有考虑到

3.说道细节问题,第一个因素就是参数,研究源码程序的第一个感触,相关的参数设定真是差的不是一星半点啊,A的设置 25 而论文但中就是2000,虽然2000可能更加符合实际,但是450就使得里相对平和一些,速度变更相对柔和一写(其实这个地方是我疏忽了,因为默认粒子质量80千克的情况下 A的值也是2000,所以这个是我开始发现没有质量的原因了,因为加速度就是F/质量的)

3.关于速度的更新,也存在一个问题就是,速度的调增并不是仅仅依靠社会里来进行调整的,而是采用了了欧拉自适应补偿发,从而对调整进行了限定,而且速度也有最大值控制(这个在之前的模型中也有设计的)。速度调整的控制是比较令人惊奇的,这使得粒子的速度调增缓慢,运动比较平滑。粒子抖动好一些把。

4.部分公式的计算也与论文中略有调整,这些在原文中并没有体现,可能是对力本在影响理解不够透彻把

5.总体来讲本程序基本上为了表现社会力的运动过程而编写的,其中对墙的编号,圆柱体检测单独编写等都能够看出来的。所以实际在是使用过程要做较大的变通。这个是比较重要的有点。也一直强调做的工作是模型的改写而不是完全的复制。

经过这几天的研究猛然发现原来的模型对于社会力的扩充和改进还是有很大问题的,所以后面的工作是重写社会力的基本模型,验证模型的正确性,在加入新的改进策略了。唉,一个月的工作,在几天基本上被彻底否定了。也见的是件坏事情。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 29
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值