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

时间:2018-03-04 17:37:39

标签: system microsoft-dynamics fibonacci anylogic

我在AnyLogic中有一个系统动力学模型,我试图模拟Fibonacci序列。然而,出于某种原因,我的结果与预期结果不同:

而不是

  

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

我得到了

  

1,21337954153,4.021788196,7.471205823,13.86070806 ...

我跟着these (spanish) instructions建立了我的简单模型。

我认为这对所有软件都不常见,因为在VenSim中,这个例子看起来效果很好......

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

1 个答案:

答案 0 :(得分:0)

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

你在vensim获得斐波纳契序列的原因是你在时间步骤1中使用欧拉方法(检查模型设置)

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

现在,让我们明白在任何实际应用中使用时间步长为1都是荒谬的......但是这就是为什么你在vensim中得到确切的值...因为那些确切的值对于模型真正的非常不准确。我甚至会说你链接上的模型是一个糟糕的模型,不应该向公众展示。

幸运的是,AnyLogic不允许您这样做。您可以在模型属性中设置1的时间步长,但它会立即发现不准确性并将时间步长更改为更小的值(可能为0.01)...因为它只允许在混合方程中使用Euler + Newton选项,但不仅仅是欧拉。