首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AnyLogic - Fibonacci序列的系统动力学

AnyLogic - Fibonacci序列的系统动力学
EN

Stack Overflow用户
提问于 2018-03-04 17:37:39
回答 1查看 341关注 0票数 1

我在AnyLogic中有一个系统动力学模型,在这个模型中,我试图模拟斐波纳契序列。然而,由于某些原因,我的结果与预期的结果不同:

而不是

1,1,2,3,5,8,13.

我得到了

1,2.137954153,4.021788196,7.471205823,13.86070806…

我跟随这些(西班牙文)指示建立了我的简单模型。

我想这并不是所有软件都常见的,因为在VenSim中,这个例子似乎非常有效.

有人能解释一下为什么在我的AnyLogic程序中会出现这种情况吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-05 13:26:22

之所以会发生这种情况,是因为在每个软件中处理微分方程的方式。

之所以在vensim中获得fibonacci序列是因为您使用的是带有时间步骤1的Euler方法(检查模型设置)。

如果在Vensim中将集成类型更改为RK45,或者使用欧拉方法减少时间步骤,则可能会得到与AnyLogic获得的结果相同的结果。Runge方法虽然从固定步长1开始,但根据模型动力学的要求,它后来改变了时间步长。

现在,让我们理解,在系统动力学模型中使用时间步长为1的时间步长,该模型给出了错误的结果和较低的时间步数,这意味着您的模型不太可靠.但这是WHy,在vensim中得到精确值.因为这些精确的数值对于模型的实际情况来说是非常不准确的。我甚至会说,你的链接上的模型是一个糟糕的模型,永远不应该向公众展示。

幸运的是(或者不幸的是),AnyLogic不允许您这样做。您可以在模型属性中设置1的时间步长,但是任何逻辑都会在没有通知的情况下将时间步骤更改为其他步骤(除非您在虚拟模式下运行,并且满足其他条件).AnyLogic只允许在混合方程选项中使用Euler+Newton,而不是仅允许使用Euler。

我认为这是一个在AnyLogic中一直存在多年的bug,我已经向他们报告过了,我认为他们永远不会解决这个问题,如果幸运的话,直到AnyLogic 9才能解决。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49098312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档