Anylogic系统动力学:库存容量

时间:2018-04-13 13:48:02

标签: anylogic systemdynamics

Anylogic system dyanmics

股票初始值为1 流速为0.1 Stock1初始值为0.

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

1 个答案:

答案 0 :(得分:1)

一个应该有一个非常明显答案的问题,但不是。

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

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

特技1: 这个技巧会给你一个接近于零的不精确数字,但它总是足够好: Ease,In flow,输入以下公式:

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

getEngine()。getNextStepTime()是下次计算发生的时间,因此getEngine().getNextStepTime()-time()将告诉您下一次迭代的时间步长(计算任何逻辑变化使用的步骤的数值方法)每次迭代,所以你必须这样做)。我将时间步长乘以0.1,因为这是您选择的流速。流量从不为0.1,实际值为0.1 *(时间步长)/(时间单位)。在这种情况下,时间单位是1秒,所以我除以1,所以我不需要进行划分。 该公式最后指出,如果下一次迭代将给你一个负数,那么使流量等于0而不是0.1

技巧2: 使用以下配置: new structure 流量将在公式中具有flowrate flowRate变量等于0.1 并且该事件是具有以下条件的条件事件:

stock<=0

以及以下行动:

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

在这种情况下,股票将在一个时间步长(大约1-10毫秒)为负。我们会人为地设置实际值。

(如果需要,你可以结合技巧1和技巧2)