
股票初始值为1,流量为0.1,Stock1初始值为0。
当我运行模拟时,我意识到股票的价值低于0(得到一个负值)。当股票价值达到零时,如何停止流通。
发布于 2018-04-13 15:38:32
这个问题应该有一个非常明显的答案,但不是。
首先,也是最重要的:没有选项可以将0定义为股票的最小值,因为无论什么情况,流都将继续希望从股票中获取,所以您必须做的是在股票为0(或接近于0)时更改流。
记住,系统动力学是一种连续的仿真技术,由于它使用的是步骤,所以并不完美。所以我将向你们展示两个可能的技巧
技巧1:这个技巧会给出一个接近于零的不精确数字,但它总是足够好的:在流程中,轻松地输入以下公式:
stock-(getEngine().getNextStepTime()-time())*0.1<0 ? 0 : 0.1getEngine().getNextStepTime()是下一次计算的时间,因此getEngine().getNextStepTime()-time()将告诉您下一次迭代的时间步骤(计算每个迭代的任意变化所使用的步骤的数值方法,因此您必须这样做)。我将时间步长乘以0.1,因为这是你选择的流量。流量从不为0.1,实际值为0.1*(时间步长)/(时间单位)。在这种情况下,时间单位是1秒,所以我除以1,所以我不需要把除法。该公式最后指出,如果下一次迭代将给出一个负值,则使流量等于0,而不是0.1
技巧2:使用以下配置:

在公式flowrate变量中,flowRate变量为0.1,并且该事件是具有以下条件的条件事件:
stock<=0和下列行动:
flowRate=0;
stock1=stock1+stock;
stock=0;在这种情况下,股票将是负的一个时间步长(约1-10毫秒)。我们人为地建立了真正的价值观。
(如果你愿意的话,你可以把技巧1和技巧2结合起来)
https://stackoverflow.com/questions/49818546
复制相似问题