本文分享了由Jaco-Ben Vosloo编写的一系列,以AnyLogic仿真软件为工具基础,对仿真建模项目的整个生命周期进行的简要说明,希望能为正在学习或使用AnyLogic的用户提供帮助。
作者:Jaco-Ben Vosloo
更新:Dec 7, 2021
阅读时间:6 min
本系列文旨在从头到尾,对仿真项目的生命周期进行说明,并给出一些最佳实践和实用建议。
最近,应 Johan Joubert 教授的邀请为比勒陀利亚大学工业工程专业的三年级学生做客座讲座。 至于话题?嗯,我选择……
起初,我想结合过去十多年的经验,从关于仿真和基于仿真的项目中学到的东西中选择主题,但要做出选择真的很困难。 尤其当我局限在思路的套子里时,很难回想和想象我想知道什么......
最后,我决定对做仿真项目给出更全面的看法,讨论典型仿真项目的生命周期,突出最佳实践、实用建议并展示一些“简单”的例子
7.调查结果报告
本文主要讲解第一部分内容,之后会陆续介绍其余部分。
注意:在后面的步骤中确实会“返回”前面的步骤中执行一些活动,但不需要重做整个步骤。 上面列出的步骤是典型项目遵循的一般步骤。 在所有步骤中,您都可以后退并重新访问之前的步骤,但在完成至少 80%-90% 的步骤之前,您不太可能跳过一个步骤或向前移动。
这是迄今为止最重要的一步,不仅在基于仿真的项目中,在几乎所有项目中这都是最重要的一步。
如果你没有准确地定义问题,会急剧降低你成功的机会。
我将问题定义阶段分为 3部分:
1) 问题
2) 范围
3) 模型目的
描述问题时要非常详细和具体,需要确保涵盖:
记住要具体但也要简洁!
正确的定义问题是一门艺术,需要通过经验累积和不断实践才能提高。
当您正确定义了一个问题时,您需要客观地评估仿真是否是完成这项工作的最佳工具......
不要像Dave的老板...
对于本篇,我们将假设仿真是完成这项工作的最佳工具,然后继续……
你的模型的目标是什么? 你想要你的模型实现什么......从本质上讲,它应该解决您的问题或为您提供解决问题的洞察力。
模型的目的通常比问题更抽象,层次更高。
以下是一些需要记住的关键点:
编辑:在一篇关于完整讲座的 LinkedIn 帖子中,Stefan Bengtsson 为这一步添加了一个有价值的补充,他指出还需要特别考虑两个非常重要的因素:利益相关者和时间框架。 这两者都对模型的目的和范围产生了重大影响。
利益相关者:谁将接收模型并使用它?
有营销总监或首席执行官参与的模型,很大可能会与仅包含生产和物流相关的个人的模型设计不同。其中的关键点是:1)我们应该如何可视化将信息传递给利益相关者? 2) 考虑到利益相关者,应该添加什么类型的交互性?
时间框架:这个模型是用来影响下周决定?还是我们有无限的时间?
用于构建模型的时间会严重影响建模策略。 用更少的时间,我们需要做减法,更多地从概念上思考并使用更高级别的抽象。 随着时间的推移,情况就大不相同了。 您可以以不同的方式构建模型架构,包括更多的视觉效果和功能等。
现在让我们看一个例子
假设一个情景,一家超市的顾客排队等候的时间比正常情况下要长,顾客的抱怨声不绝于耳。
其中一位经理建议他们从当前的每个服务台排一队,转换成多个服务台设置一队。
业主觉得思路可行,但同时担心这样做可能会有风险,不知道这样是否能够改善客户排队等待时间。
那么,让我们从问题定义开始,以下哪个选项提供了最佳的问题定义?
选项1:零售商希望调查从每个服务台一队到多个服务台设置一队的选项。
选项2:零售商希望量化当从每个服务台一队设置为多个服务台一队时,对其店铺中客户平均队列等待时间的影响。
选项 1 的问题在于“调查”一词非常含糊。 我们到底想调查什么? 占地面积利用率? 环境的? 社交隔离?
选项 2 为我们提供了有关问题的足够详细信息以及客户想知道的确切内容。
仿真听起来是这项工作的完美工具!
使用仿真创建零售商商店的数字孪生将使他能够测试这种新设置。 众所周知,数字孪生是一个很好的解决方案,因为它们可以:
以下哪个选项最好地定义了模型目的?
选项1:模型必须能够仿真客户到达并在服务台前排队或在单个队列中排队然后被服务。
选项2:准确测量每个服务台设置一个队列与多个服务台设置一个队列之间的平均客户等待时间的变化。
选项 1 的问题在于,仿真没有捕捉到特定的模型目的,而选项 2 则没有任何事后猜测的余地。
现在是简单的部分......让我们保持范围简短......至少在项目的第一阶段;-)
范围
但是为什么不添加以下内容?
我们需要问自己:这是否有助于模型实现其目标?
当然,在某些情况下,您可以争辩说附加功能会增加对模型结果的信心,或者它可以用于模型验证。 请注意,您添加的任何其他范围都可能导致不必要的复杂性并可能延迟项目......
好了, 我们已经通过了仿真模型生命周期的第一阶段!
在下一篇文章中,我们将看看如何处理数据!