AnyLogic 中的系统动力学 - 斐波那契数列

Systems Dynamics in AnyLogic - Fibonacci sequence

我在 AnyLogic 中有一个系统动力学模型,我试图在其中对斐波那契数列建模。然而,出于某种原因,我的结果与预期的不同:

而不是

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

我明白了

1, 2.137954153, 4.021788196, 7.471205823, 13.86070806...

我按照 these (spanish) instructions 构建了我的简单模型。

我想这不是所有软件都通用的,因为在 VenSim 中这个例子似乎工作得很好......

有人可以向我解释为什么在我的 AnyLogic 程序中会发生这种情况吗?

发生这种情况的原因是每个软件处理微分方程的方式。

您在 vensim 中获得斐波那契数列的原因是您使用时间步长为 1 的欧拉方法(检查模型设置)

如果您在 Vensim 中将积分类型更改为 RK45,或者如果您使用欧拉方法减少时间步长,您可能会得到与 AnyLogic gets...Runge-Kutta 方法相同的结果,即使它以1的固定步长,以后根据模型动力学的要求改变时间步长。

现在,让我们了解在系统动力学模型中使用 1 的 time-step,该模型会以较低的时间步长给出错误的结果,这意味着您的模型不是很稳健......但这就是为什么你在 vensim 中得到精确的值......因为这些精确值对于模型的真实情况来说确实非常不准确。我什至会说你 link 上的模型是一个糟糕的模型,不应该显示给 public。

幸好(或不幸),AnyLogic 不允许您这样做。您可以在模型属性中将时间步长设置为 1,但 anylogic 会将时间步长更改为其他内容,恕不另行通知(除非您 运行 在虚拟模式下,并且满足其他条件)... AnyLogic 仅允许在混合方程选项中使用 Euler+Newton,而不是单独使用 Euler。

我认为这是 AnyLogic 中存在多年的错误,我已将其告知他们,我认为他们永远不会解决它,如果我们幸运的话,也许直到 AnyLogic 9。