【问题标题】:How do I handle variability of output in Anylogic?如何处理 Anylogic 中输出的可变性?
【发布时间】:2021-08-14 18:22:50
【问题描述】:

我一直在研究 Anylogic 中的电池更换仿真模型。到目前为止,我已经开发了仿真模型、优化实验和参数变化实验。

模型中没有错误,但输出值不理想。小的变化,例如改变决策变量的步长,会导致每次实验后获得的最佳值发生剧烈的变化。虽然目标没有太大变化,但我担心每次运行都会发生变化的其他变量。即使经过多次优化运行,也很难得出结论。

作为参考,我在此处发布参数变化实验的输出。我使用优化值运行实验,但得到的可行结果(百分比 > 95%) 与预期输入值相差甚远。虽然,总体结果是正确的(随着充电时间的增加而减少百分位数),但很难理解变化性。

谁能帮忙?enter image description here

【问题讨论】:

  • 无法解决“我无法得到我想要的输出”的问题
  • 电池更换听起来像输出数据是一个时间序列,因此它们不是独立观察。这会以两种方式影响分析。 1) 可能有一个“热身”时期——称为初始化偏差——在此期间模型的启动条件会影响观察到的行为。 2) 输出的序列相关性会极大地影响方差,因此使用 s^2 估计方差可能会大大偏离(如数量级)。有关这些问题的概述,请参阅this tutorial 的第 6 节。
  • 您可能想看看这篇专门针对 analysis of simulation output data 的教程论文。
  • 最后但同样重要的是,如果您想了解您的结果与多个输入之间的关系,您应该应用design of experiments 以最大限度地获得与所花费的工作相关的信息。

标签: optimization simulation anylogic random-seed


【解决方案1】:

在构建模型时,这是您在查看高水平整体输出时会遇到的常见问题。您可能有模型错误,但很可能(如果不是更有可能)您的系统存在一些动态,而这些动态在简单的 Excel 电子表格或心智模型中并不明确。 DES 可能会告诉我们一些关于系统行为的真正有趣的事情,但是如果没有额外的输出,就无法理解那是什么。

一些建议:

  1. 将此作为简单的单一场景运行,您可以在其中手动更新输入。当您使用输入值的低范围和输入值的高范围运行此程序时,您在动画或其他输出上看到什么与您的预期不同或可以解释整体输出趋势?尝试运行几个中间点。
  2. 添加额外的输出指标。如果您查看队列大小、资源利用率、周转时间等;您在该级别上是否发现任何与预期不同的地方?
  3. 添加“复制”日志。当您为多个场景运行一组输入时,是否有任何单个复制作为异常值脱颖而出?如果是这样,请使用该组输入和该随机种子重新运行该场景。

了解底层系统行为是无可替代的,如果不了解这些动态,查看与优化或参数变化实验的整体相关性通常会导致公司做出错误的政策决策。

【讨论】:

  • 代理的到达模式是费率表的形式。从我在几次运行后观察到的情况是:1. 每次运行的费率计划都会发生变化(在某种程度上) 2. 我无法控制代理将在什么确切时间到达系统。 (我可以控制费率/小时,但不能控制确切的到达时间)。到目前为止,我认为这可能是高可变性的原因。
  • 这里是一个简短的例子:2 辆汽车在两小时内到达车站(每小时 1 辆)。最初只有一节电池可用,充电时间为 60 分钟。第 1 小时到来的汽车将使用该电池并留下另一个进行充电。现在第二辆车到了,要不要等还不好说。这取决于它之前的汽车的到达时间。如果到站时间相差超过60分钟,则无需等待,否则第2辆车需要等待电池充电。
  • 考虑到随机性,这听起来像是一个非常现实的模型。
猜你喜欢
  • 2016-12-05
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
  • 2020-05-21
  • 1970-01-01
  • 2020-11-23
  • 2021-10-09
  • 1970-01-01
相关资源
最近更新 更多