首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多系统动力学:库存容量

多系统动力学:库存容量
EN

Stack Overflow用户
提问于 2018-04-13 13:48:01
回答 1查看 1.5K关注 0票数 4

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-13 15:38:32

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

首先,也是最重要的:没有选项可以将0定义为股票的最小值,因为无论什么情况,流都将继续希望从股票中获取,所以您必须做的是在股票为0(或接近于0)时更改流。

记住,系统动力学是一种连续的仿真技术,由于它使用的是步骤,所以并不完美。所以我将向你们展示两个可能的技巧

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

代码语言:javascript
复制
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:使用以下配置:

在公式flowrate变量中,flowRate变量为0.1,并且该事件是具有以下条件的条件事件:

代码语言:javascript
复制
stock<=0

和下列行动:

代码语言:javascript
复制
flowRate=0;
stock1=stock1+stock;
stock=0;

在这种情况下,股票将是负的一个时间步长(约1-10毫秒)。我们人为地建立了真正的价值观。

(如果你愿意的话,你可以把技巧1和技巧2结合起来)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49818546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档