Anylogic System Dynamics:库存容量

问题描述 投票:0回答:2

Anylogic system dyanmics

股票初始值为1 流量为0.1 Stock1 初始值为 0。

当我运行模拟时,我意识到股票的价值低于 0(获得负值)。如何在 Stock 的值达到零时停止流。

anylogic systemdynamics
2个回答
2
投票

本该有很明显答案的问题,却没有。

首先也是最重要的:没有选项可以设置为将 0 定义为库存的最小值,因为无论如何流量都会继续想要从库存中获取,所以你要做的就是改变流量当库存为 0(或接近 0)时。

记住系统动力学是一种连续的模拟技术,因为它使用步骤,所以它并不完美......所以我将向你展示 2 个可能的技巧来做到这一点

技巧一: 这个技巧会给你一个接近于零的不精确数字,但它总是足够好: 轻松,在流程中,输入以下公式:

stock-(getEngine().getNextStepTime()-time())*0.1<0 ? 0 : 0.1

getEngine().getNextStepTime() 是下一次计算发生的时间,所以

getEngine().getNextStepTime()-time()
会告诉你下一次迭代的时间步长(anylogic 使用的计算步长的数值方法每次迭代都会改变,所以你必须这样做)。我将时间步长乘以 0.1,因为这是您选择的流速。流量永远不会是 0.1,实际值是 0.1*(time Step)/(time Unit)。在这种情况下,时间单位是 1 秒,所以我除以 1,所以不需要进行除法。 公式最后指出,如果下一次迭代会给你一个负库存,那么让流量等于 0 而不是 0.1

技巧2: 使用以下配置: flow 在公式中会有

flowrate
flowRate 变量等于 0.1 并且该事件是具有以下条件的条件事件:

stock<=0

和以下动作:

flowRate=0;
stock1=stock1+stock;
stock=0;

在这种情况下,库存将在一个时间步长(大约 1-10 毫秒)内为负。我们人为地设置了真实值。

(如果你愿意,你可以结合技巧1和技巧2)


-1
投票

有谁知道如何在ANYLOGIC中使用脉冲函数,在vensim中很容易。

© www.soinside.com 2019 - 2024. All rights reserved.