我在 AnyLogic 中有一个系统动力学模型,我试图在其中对斐波那契序列进行建模。然而,由于某种原因,我的结果与预期不同:
代替
1,1,2,3,5,8,13...
I get
1, 2.137954153, 4.021788196, 7.471205823, 13.86070806...
我跟着这些(西班牙语)说明构建我的简单模型。
我想这并不是所有软件都通用的,因为在 VenSim 中这个例子似乎工作得很好......
有人可以向我解释为什么我的 AnyLogic 程序中会发生这种情况吗?
发生这种情况的原因是每个软件中处理微分方程的方式不同。
您在 vensim 中获得斐波那契序列的原因是因为您在时间步 1 中使用欧拉方法(检查模型设置)
如果您在 Vensim 中将积分类型更改为 RK45,或者使用欧拉方法减少时间步长,您可能会得到与 AnyLogic 相同的结果... Runge-Kutta 方法,即使它以固定步长 1 开始,它随后根据模型动力学的要求改变时间步长。
现在,让我们了解,在系统动力学模型中使用时间步长 1,模型会以较低的时间步长给出错误的结果,这意味着您的模型不是很稳健......但这就是为什么您在 vensim 中获得精确值的原因。 ..因为这些精确值对于模型的实际情况来说确实非常不准确。我什至会说,您链接上的模型是一个糟糕的模型,不应该向公众展示。
幸运的是(或不幸的是),AnyLogic 不允许您这样做。你可以在模型属性中设置时间步长为1,但是anylogic会在不通知的情况下将时间步长更改为其他值(除非你在虚拟模式下运行,并且满足其他条件)... AnyLogic只允许使用Euler+牛顿在混合方程选项中,但不是欧拉单独。
我认为这是 AnyLogic 中的一个错误,已经持续了很多年,我已经将其告知他们,并且我认为他们永远不会解决它,如果幸运的话,也许直到 AnyLogic 9。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)