本文分享了由Vitor Lemos编写的关于AnyLogic的使用实践技巧,希望能为正在学习或使用AnyLogic的用户提供帮助。post/the-simulation-model-life-cycle-part-6-analyze-the-results
作者:Jaco-Ben Vosloo
更新:Jul 13, 2022
阅读时间:5 min
本系列文旨在为基于仿真的项目的生命周期进行说明,提供最佳实践和实用建议。本文是7部分系列文的第6部分。
注意:在后面的步骤中确实会“返回”前面的步骤中执行一些活动,但不需要重做整个步骤。 上面列出的步骤是典型项目遵循的一般步骤。 在所有步骤中,您都可以后退并重新访问之前的步骤,但在完成至少 80%-90% 的步骤之前,您不太可能跳过一个步骤或向前移动。
分析仿真模型的输出可以是一个完整的项目。复杂系统的超大模型通常具有大量输出文件,包含了系统各个部分的大量数据。本文主要是提供一组高层次的指引,在这一阶段为您提供帮助。
在每一项分析中,都要将模型目标放在最前沿,这一点非常关键。 另外,要注意,到此阶段,我们不在校核和验证阶段。因此,除非在主输出中发现一些需要解释的异常,否则我们不会查去逐一细查每一个输出结果。
以本系列的示例模型为例,我们的目标是衡量队列长度的影响,因此我们的分析应该集中在这个指标上。而所有其他分析都是试图解释我们在队列长度中所看到变化的副产品。
下面是一个非常简洁的表格示例,显示了从多服务台多队列设置到多服务台单队列设置的增量。
正如我们所看到的,多服务台单队列设置显示队列长度的最大值和平均值都在减少。
如果结果有疑问,特别是如果它与预期的结果相反,我们可以深入研究其他输出。
当结果与预期相反或您无法解释为什么会取得特定结果时。
保证您的数据采用易于获取的格式并能够在Excel中打开,这样您可以轻松创建数据透视表、绘制图表并进行简单的统计分析。但是,如果数据量太大(例如超过 140 万行数据),将需要使用一些专门的工具,如 R、Python、Tableau 或其他工具。
在我们的示例中,可以是将队列长度与一天中的时间进行比较,查看它是否符合期望。
在前一点的基础上,当您以不同的方式查看数据时,您也需要以不同的方式对其进行分析。
第一步是进行基础的数据统计分析。 对识别为与模型目标相关的每个输出进行统计分析,查看其最小值、平均值和最大值,分析这些值是否有意义?是否与您的预期一致?
下一步可以画一些图表,例如,可以画一个直方图,这样您就可以看到数据的分布。接下来,您可以例如为其中一次迭代绘制时间序列图。
最好的做法是让另一双眼睛查看您的数据。首选是其他团队成员,特别是一些对流程和数据更敏感的运营人员,可以让其为创建哪些数据比较提供建议。
我特别引用了“专家”一词,是要强调一个事实,即你的结果、分析和发现不仅可以由真正的专家,而且也可以由那些相信自己的专家进行双重检查,从而获得价值。通常,完全脱离流程的人可以指出一些最基本的问题,帮助您更好地构建分析,寻找模型中的错误,或者只是添加一个额外的模型输出来帮助理解。
许多人经常会忽略的一个关键要求是确保分析是可重现的。这是科学方法的关键要求,但也有许多实际原因需要您的分析具有可重复性。 很多时候,项目的设计发生了变化,或者模型中发现了一个小错误,现在您需要重新进行分析。 如果您的分析是真正可重现的,那么这应该不是问题。 只需重新运行模型,获取输出并将其放入(希望是自动化的)分析管道中。
让分析可重现的最佳实践是对您的分析进行编码。 如果您使用 Excel 等工具进行分析,则可以通过使用公式和数据透视表甚至 VBA 代码进行结构良好的数据分析来实现。 如果您使用 Python 或 R 等工具,则应将分析步骤编码到脚本中。
在本文中,我们研究了一些分析仿真模型输出数据的准则。 与我们前一篇实验阶段的帖子相比,这绝对降低了强度。在下一篇文章也就是本系列的最后一篇文章中,我们将通过另一篇简短的文章回归主题,介绍一些用于展示结果的指南。
请记住,在此阶段,您很可能会返回模型并添加更多输出,甚至在模型中汇总一些输出并仅输出汇总数据。 如果您继续在模型之外对数据进行相同的分析,大多数时候会得到相同的结果。