Anylogic System Dynamics : 库存容量

Posted

技术标签:

【中文标题】Anylogic System Dynamics : 库存容量【英文标题】:Anylogic System Dynamics : Stock capacity 【发布时间】:2018-09-23 21:43:12 【问题描述】:

库存初始值为1 流速为 0.1 Stock1初始值为0。

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

【问题讨论】:

【参考方案1】:

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

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

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

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

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

getEngine().getNextStepTime() 是下一次计算发生的时间,所以getEngine().getNextStepTime()-time() 会告诉你下一次迭代的时间步长(计算每次迭代使用的任何逻辑步长的数值方法) ,所以你必须这样做)。我将时间步长乘以 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 组合起来)

【讨论】:

根据我的经验,大多数时候你不需要强迫一只股票总是积极的。如果你的股票变成负数,它通常意味着你的等式有一个错误,至少在我建模的区域。例如,一阶延迟可以防止库存变为负数。 @buggaby 我不同意你...零下。在很多情况下,你的方程是正确的,但你仍然低于零......这总是有点问题......例如,如果你有一个初始金额并且你用永远不会进入的政策来花钱债务......你如何在不强迫它积极的情况下对其进行建模?你不能。 我从事医疗保健和流行病学工作。通常,股票要么是人,要么是统计数据。因此,在 SIR 模型中,导致人们从一只股票转移到另一只股票的“力量”取决于该股票中的人。许多一阶延误;不可能低于 0,因为流量取决于股票价值。使用一阶延迟使得不可能低于 0(例如,流出“I”的流量取决于 I,因此当 I = 0 时,流量 = 0)。 但是银行账户的情况可能不适用于一阶延迟。

以上是关于Anylogic System Dynamics : 库存容量的主要内容,如果未能解决你的问题,请参考以下文章

Dynamics 365 Plugin调HTTPS报System.Security.SecurityException的解决方法

Dynamics CRM Audit Performance Troubleshooting

Dynamics CRM 用户角色及从 UCI 改为 classic UI

anylogic 是哪个国家的

anylogic无法解析的编译问题

计算如何在 anylogic 上工作?