20 世纪 40 年代,研究原子弹的科学家应用 Monte Carlo 模拟计算了一个裂变铀原子引起另一个裂变反应的概率,这是该模拟的首次应用,自此以来已经取得了很大进展。今天我们将介绍如何使用 Minitab 为已知的工程公式和 DOE 方程创建 Monte Carlo 模拟。

由于当时铀供应短缺,试验的试错空间很小,因此 Monte Carlo 模拟一直专注于根据模拟数据计算可靠的概率。如今,从材料工程到医疗设备包装密封再到炼钢,模拟数据经常用于许多场景,例如资源有限的场景,或者收集真实数据过于昂贵或不切实际的场景。使用 Engage 或 Workspace 的 Monte Carlo 模拟工具可以:

(1)模拟可能结果的范围以帮助做出决策。

(2)预测财务结果或估计项目时间表。

(3)了解过程或系统中的变异性。

(4)在过程或系统中发现问题。

(5)通过了解成本/效益关系来管理风险。

开始使用任何 Monte Carlo 模拟的 4 个步骤

模拟可能非常复杂,具体取决于所涉及因子的数量。但所有 Monte Carlo 模拟基本上都有四个简单的步骤:

1.确定传输方程

要创建 Monte Carlo 模拟,您需要一个包含要探索的业务活动、计划或过程的定量模型。过程的数学表达式称为“传输方程”。这可以是已知的工程或业务公式,也可以基于根据设计试验 (DOE) 或回归分析创建的模型。借助 Minitab Engage 和 Minitab Workspace 等软件,您能够创建复杂的方程,甚至是具有多个可能相互依赖的响应的方程。

2.定义输入参数

对于传输方程中的每个因子,确定其数据的分布方式。一些输入可能遵循正态分布,而另一些则遵循三角分布或均匀分布。然后,您需要确定每个输入的分布参数。例如,需要为遵循正态分布的输入指定均值和标准差。如果您不确定数据遵循哪种分布,可以使用 Engage 和 Workspace 提供的工具来确定。

3.设置模拟

要进行有效的模拟,您必须为每个输入创建一个非常大的随机数据集(大约包含 100,000 个实例)。这些随机数据点模拟在很长一段时间内,对于每个输入将看到的值。尽管听起来工作量很大,但这正是 Engage 和 Workspace 的亮点。一旦我们提交输入和模型,一切都会得到处理。

4.分析过程输出

有了模拟数据,您就可以使用传输方程来计算模拟结果。考虑到输入中的预期变异,通过模型运行足够多的模拟输入数据将可靠地指出该过程将在一段时间内输出的内容。

Monte Carlo 使用已知工程公式的 4 个步骤

一家制造公司需要评估所提议产品的设计,这是一款每分钟必须泵送 12 毫升流体的小型活塞泵。考虑到活塞直径 (D)、冲程长度 (L) 和每分钟冲程数 (RPM) 的自然变异,您想要估计数千个泵的可能性能。理想情况下,数千个泵的泵流量将具有不大于 0.2 毫升的标准差。

1.确定传输方程

进行 Monte Carlo 模拟的第一步是确定传输方程。在本例中,您只需使用已知的工程公式来测量泵流量:

流量(以毫升为单位)= π(D/2)2 ∗ L ∗ RPM

2.定义输入参数

现在,必须定义传输方程中使用的每个输入的分布和参数。泵的活塞直径和冲程长度是已知的,但必须计算达到所需 12 毫升/分钟流速所需的每分钟冲程数 (RPM)。每个冲程泵送的体积按以下方程计算:

π(D/2)2 * L

如果 D = 0.8,L = 2.5,则每个冲程排出 1.256 毫升流体。因此,要达到 12 毫升/分钟的流速,RPM 为 9.549。

根据贵厂制造的其他泵的性能,您可以假定活塞直径呈正态分布,均值为 0.8 厘米,标准差为 0.003 厘米。冲程长度呈正态分布,均值为 2.5 厘米,标准差为 0.15 厘米。最后,每分钟冲程数呈正态分布,均值为 9.549 RPM,标准差为 0.17 RPM。

3.在 Engage 或 Workspace 中设置模拟

单击顶部功能区中的插入选项卡,然后选择 Monte Carlo 模拟。

我们将它变得非常简单 — 您只需为每个变量提供名称,从下拉菜单中选择一个分布,然后输入参数。我们将按照上面所述的内容进行操作。如果您不确定数据遵循哪种分布,可以选择使用数据确定。这将提示您上传数据的 .csv 文件,可从以下几个选项中进行选择:

4.模拟和分析过程输出

下一步是给出方程。在这里,操作非常简单,只需为您的输出提供名称(我们提供的名称是 Flow),然后键入我们在上面确定的正确传输方程。您还可以添加规格上限和规格下限以查看模拟的比较情况。

然后,在功能区中,选择要运行的模拟数量(100,000 是不错的基准),然后单击用来运行模拟的按钮。

对于为了撰写本文而生成的随机数据,基于 100,000 个样本的平均流速为 11.996。从平均值来看,我们达到了目标,但最小值为 8.7817,最大值为 15.7057。这是一个相当大的范围。(所有组件的)传输变异导致标准差为 0.756 毫升,这远远超过目标值 0.2 毫升。

看起来这种泵的设计变异太大,需要在投入生产之前进一步完善。从这里,我们看到模拟所带来的好处。如果我们直接投入生产,很可能会生产出太多被退货的泵。借助 Monte Carlo 模拟,我们能够解决所有这些问题,而不会因制造和测试数千个原型或过早投入生产而产生费用。

您可能想了解这些模拟结果是否站得住脚,不妨自己尝试一下吧!运行不同的模拟将导致轻微的变化,但每次的最终结果(流速变异量不可接受)都会保持一致。这就是 Monte Carlo 方法的强大之处。

另一个可选步骤:参数优化

了解到标准差过高非常有价值,但 Engage 和 Workspace 真正突出的地方在于它们能够帮助改善状况。这就是参数优化的用武之地。

让我们看看第一个输入:活塞直径。平均值为 0.8,大部分数据将接近该值,或者在平均值的一两个标准差内。但是,如果活塞直径越小,流动效率越高,该怎么办?参数优化有助于我们回答这个问题。

为了进行参数优化,我们需要为每个输入指定搜索范围。在本例中,为简单起见,我指定的算法搜索范围是 +/- 3 个标准差。然后,Engage 或 Workspace 将帮助我们为每个输入找到要实现目标(在本例中是减小标准差)的最佳设置。选择合适的范围至关重要;确保您输入的整个范围都可以运行;如果找到的最佳解决方案无法在生产环境中复制,则毫无用处。

如果您在 Minitab Statistical Software 中用过响应优化器,则原理类似。下面是我们的结果:

基于以上结果,如果要减小标准差,则应当减小冲程长度和每分钟冲程数。活塞直径可以保持类似大小。请记住,Monte Carlo 模拟的关键之处在于,能够在不构建单个新原型或进行新试验的情况下找出所有这些结果。

Monte Carlo 使用试验设计 (DOE) 响应方程

如果您不知道要使用什么方程,或者您正在尝试模拟独特过程的结果,该怎么办?此时,我们可以将 Minitab Statistical Software 的设计试验功能与 Engage 或 Workspace 的模拟功能相结合。

一家电子制造商已指派您改进其电极清洁操作,该操作为电镀金属部件做准备。制造商通过电镀在原材料上涂上一层不同的金属,以实现所需的特性。电镀不会附着在肮脏的表面上,因此该公司有一个连接到自动电镀机的连续流电极清洗系统。传送带将每个部件浸入槽中,槽中的电压通过部件传送,从而对部件进行清洁。如果清洁不充分,会导致平均粗糙度的均方根(简称 RMS)值太高以及表面光洁度较差。经过正确清洁的部件具有光滑的表面和较低的 RMS。

为了优化该过程,可以调整两个关键输入:电压 (Vdc) 和电流密度 (ASF)。对于电极清洁方法,Vdc 的典型工程限值为 3 至 12 伏。电流密度限值为 10 至 150 安培/平方英尺 (ASF)。

1.确定传输方程

您不能针对该过程使用教材上的已知公式,但可以在 Minitab 中设置响应曲面 DOE 以确定传输方程。响应曲面 DOE 通常用于通过为“关键少数”可控因子寻找最佳设置来优化响应。

在本例中,响应将是部件在清洁后的表面质量。

要在 Minitab 中创建响应曲面试验,请选择统计 > DOE > 响应曲面 > 创建响应曲面设计。由于我们有两个因子(电压 (Vdc) 和电流密度 (ASF)),因此我们将选择试验次数为 13 的双因子中心复合设计。

Minitab 创建设计试验后,您需要执行 13 次试验、收集数据并记录 13 个清洁后部件的表面粗糙度。通过 Minitab,可轻松分析 DOE 结果、简化模型和使用残差图检查假定。使用最终模型和 Minitab 的响应优化器,可以找到变量的最佳设置。在本例中,您将电压设置为 7.74,将 ASF 设置为 77.8,所获得的粗糙度值为 39.4。

响应曲面 DOE 为 Monte Carlo 模拟生成以下传输方程:

粗糙度 = 957.8 − 189.4(Vdc) − 4.81(ASF) + 12.26(Vdc2) + 0.0309(ASF2)

2.定义输入参数

现在,您可以为 Monte Carlo 模拟输入设置参数定义,并将它们带入 Engage 或 Workspace 中。

请注意,标准差必须已知或基于现有的过程知识进行估计。这适用于所有 Monte Carlo 输入。电压呈正态分布,均值为 7.74 Vdc,标准差为 0.14 Vdc。每平方英尺安培数 (ASF) 呈正态分布,均值为 77.8 ASF,标准差为 3 ASF。

3.在 Engage 或 Workspace 中设置模拟

这与步骤 3 完全相同。单击功能区中的插入 > Monte Carlo 模拟,添加您的输入并定义其参数,然后输入您的模型。在本例中,如果您拥有最新版本的 Minitab,则可以单击鼠标右键,然后点击发送到 Engage发送到 Minitab Workspace。如果您没有,则可以从 Minitab 输出中手动复制它并将其粘贴到 Engage 或 Workspace 的模型字段中。

4.模拟和分析过程输出

汇总表明,即使基础输入呈正态分布,RMS 粗糙度的分布也不是正态的。该汇总还显示所有组件的传输变异导致标准差为 0.521,根据您掌握的过程知识判断,这是不错的过程结果。基于试验次数仅为 13 的 DOE,我们可以确定在该过程中将看到的实际情况。同样,由于这基于模拟数据,您的答案会略有不同,但通常而言答案应该是正确的。如有必要,我们可以查看参数优化以微调我们的答案并找到最佳解决方案。

本文最初出现在Minitab博客上。

使用 Engage 或 Workspace 创建 Monte Carlo 模拟的 4 个简单步骤相关推荐

  1. 创建蒙特卡洛模拟的 4 个简单步骤

    20 世纪 40 年代,研究原子弹的科学家应用 Monte Carlo 模拟计算了一个裂变铀原子引起另一个裂变反应的概率,这是该模拟的首次应用,自此以来已经取得了很大进展.今天我们将介绍如何使用 Mi ...

  2. 在我方某前沿防守地域 matlab,[matlab]Monte Carlo模拟学习笔记

    理论基础:大数定理,当频数足够多时,频率可以逼近概率,从而依靠概率与$\pi$的关系,求出$\pi$ 所以,rand在Monte Carlo中是必不可少的,必须保证测试数据的随机性. 用蒙特卡洛方法进 ...

  3. [matlab]Monte Carlo模拟学习笔记

    理论基础:大数定理,当频数足够多时,频率可以逼近概率,从而依靠概率与$\pi$的关系,求出$\pi$ 所以,rand在Monte Carlo中是必不可少的,必须保证测试数据的随机性. 用蒙特卡洛方法进 ...

  4. 创建项目执行计划的5个简单步骤

    项目执行计划是定义项目将如何执行的文件.执行计划解释项目中涉及的战略目标和步骤,定义项目完成时间表,并列出成功项目所需的资源(包括团队成员). 使用项目计划是多种项目管理最佳实践之一.这个过程并不像看 ...

  5. Matlab用Copula模型进行蒙特卡洛(Monte Carlo)模拟和拟合股票收益数据分析

    最近我们被客户要求撰写关于Copula的研究报告,包括一些图形和统计输出. 最近,copula 在仿真模型中变得流行起来.Copulas 是描述变量之间依赖关系的函数,并提供了一种创建分布以对相关多元 ...

  6. Python蒙特卡罗(Monte Carlo)模拟计算投资组合的风险价值(VaR)

    最近我们被客户要求撰写关于风险价值(VaR)的研究报告,包括一些图形和统计输出. 如何使用Python通过蒙特卡洛模拟自动计算风险值(VaR)来管理投资组合或股票的金融风险. 金融和投资组合风险管理中 ...

  7. matlab--蒙特卡罗Monte Carlo

    Monte Carlo:               以某个事件的出现概率估算随机事件的概率.另一种是得到随机事件的数字特征,将其作为问题的解.用于求问题的准确解,但求到的解可能不正确.正确的可能性随 ...

  8. Stata: 蒙特卡洛模拟(Monte Carlo Simulation)没那么神秘

    作者:侯新烁 湘潭大学 [编译] (知乎 | 简书 | 码云) Stata连享会 精彩推文1 || 精彩推文2 资料参考来源: The Stata Blog » Monte Carlo simulat ...

  9. 蒙特卡罗模拟概述(Monte Carlo Simulation)

    Overview 蒙特卡洛(Monte Carlo)方法,或称计算机随机模拟方法,是一种基于"随机数"的计算方法.这一方法源于美国在第二次世界大战中研制原子弹的"曼哈顿计 ...

最新文章

  1. 后端怎么防止重复提交?(常用的做法)
  2. Xmanager7如何通过SSH连接远程服务器
  3. 如何开发一个Node脚手架
  4. NN如何在表格数据中战胜GBDT类模型
  5. 动态内存分配到底为谁分配内存空间【浅谈动态内存的一个实例】
  6. 多生产者-多消费者问题
  7. Nginx的启动、停止、重启
  8. jdbc链接mysql按照id查询_使用jdbc连接并操作Oracle数据库(增删改查IDUS)
  9. pyqt5设置dialog的标题_Python GUI教程(一):在PyQt5中创建第一个GUI图形用户界面...
  10. ATL 工程下添加右击菜单
  11. 计算机系统的组成和应用,计算机系统组成与应用领域的考点
  12. 点到点短信WAPPUSH研究总结
  13. 新浪微博分享遇到的心酸的问题
  14. 开发板------OK6410
  15. 389-MySQL数据库代码封装
  16. 松下6轴程序模板 plc采用FP-XHC60T ,标准可带6轴程序
  17. 2022 十大科技趋势!达摩院年终预测重磅出炉:AI for Science 高居榜首
  18. 【计算机毕业设计】77.旅游资源网站源码
  19. echarts双y轴,自定义y轴显示字段
  20. 前景提取 matlab,基于MATLAB的动态前景目标特征提取与运动跟踪

热门文章

  1. mybatis通过ResultSets返回自定义结果集
  2. 圣诞节快乐:来自程序员们的问候~
  3. CSDN Chrome浏览器插件
  4. 有什么好用的OFD阅读器?这两种阅读工具很好用
  5. Oracle 闪回特性(FLASHBACK DROP RECYCLEBIN)
  6. 基于HTML5的电子病历编辑器 X-EMR
  7. HashMap 中 hash 冲突的解决方法及原理分析
  8. [Ext4] Ext4文件系统分析系列文章
  9. MIT博士99 行代码就能实现《冰雪奇缘》的特效引擎入门-用Taichi画太极
  10. 全志F1C100s主线linux入坑记录 (10)调试串口更改