optimization - 如何处理 Anylogic 中输出的可变性?
问题描述
我一直在研究 Anylogic 中电池更换的仿真模型。到目前为止,我已经开发了仿真模型、优化实验和参数变化实验。
模型中没有错误,但输出值不能令人满意。小的变化,例如改变决策变量的步长,会导致每次实验后获得的最佳值发生巨大变化。虽然目标没有太大变化,但我担心每次运行都会发生变化的其他变量。即使进行了多次优化运行,也很难得出结论。
作为参考,我在这里发布了参数变化实验的输出。我使用优化值运行实验,但得到的结果(百分比 > 95%)与预期输入值相差甚远。虽然,总体结果是正确的(随着充电时间的增加而减少百分位数),但很难理解可变性。
任何人都可以帮忙吗?在此处输入图像描述
解决方案
在构建模型时,这是您在查看高水平整体输出时会遇到的常见问题。您可能有模型错误,但很可能(如果不是更有可能)您的系统存在一些动态,而这些动态在简单的 Excel 电子表格或心智模型中并不明确。DES 可能会告诉我们一些关于系统行为的真正有趣的事情,但是如果没有额外的输出,就无法理解那是什么。
几点建议:
- 将此作为一个简单的单一场景运行,您可以在其中手动更新输入。当您使用输入值的低范围和输入值的高范围运行此程序时,您在动画或其他输出上看到什么与您的预期不同或可以解释整体输出趋势?尝试运行几个中间点。
- 添加其他输出指标。如果您查看队列大小、资源利用率、周转时间等;你在那个水平上看到任何与预期不同的东西吗?
- 添加“复制”日志。当您为多个场景运行一组输入时,是否有任何单个复制作为异常值脱颖而出?如果是这样,请使用该组输入和该随机种子重新运行该场景。
了解底层系统行为是无可替代的,如果不了解这些动态,查看与优化或参数变化实验的整体相关性通常会导致公司做出错误的政策决策。
推荐阅读
- python - 使用 Django 发送电子邮件
- python - Digital Ocean 服务器上的 Chatbot Sqlite3 错误
- java - 无法从谷歌驱动器获取文件
- visual-studio-code - 如果我将 devDependency 包安装为依赖项,我需要将其重新安装为 devDependency 吗?
- javascript - 如何在单个变量中存储和重用选择器和上下文表达式的组合?
- c# - 在 C#.net 中,如何在打印时获取行中的文本?
- swift - 在 Swift 中以编程方式发送 SMS/iMessage
- vba - 如何从 MS Access VBA 中的自定义查询之一读取值?
- keycloak - 切换到 Keycloak 后,主体名称显示不同
- c++ - C ++:如果用户输入数字将其转换为单词并且如果按Enter键程序应该退出,则使用切换案例