如何衡量万事万物 (5) 蒙地卡罗模拟法

在【CH6. 建立模型以衡量风险】这章里,作者介绍了蒙地卡罗法,可以根据机率产生模拟情境,用来分析风险。

本章是写给「从来不知道这个方法是什麽」的人(this is me!),作者介绍了基本的实作过程。

示范档案

作者在 https://www.howtomeasureanything.com/ 提供了完整的试算表下载,其实对熟悉 excel 的人来说,直接进去 excel 应该就看得出来分析的流程了。

为了方便,我将 excel 档案重新上传至自己的 Google sheet

情境

你正在考虑租下一台新机器,要用在某个制造过程。

租赁条件是:

  • 一年 40 万美元
  • 不能提早解约

因此,你需要考虑:

  • 如果不能打平成本,在未来一年内,会受限於租约
  • 但先进的设计可能节省的是:
    • 劳工成本
    • 原物料成本
    • 维护成本

参数范围

经过校准训练的估计人员提供了相关参数的范围:

  • 维护节省 (MS):每单位 10~20 美元
  • 劳工节省 (LS):每单元 -2~8 美元
  • 原物料节省 (RMS):每单位 3~9 美元
  • 生产水准 (PL):每年 15000~35000 单元
  • 每年租金:40 万美元

每年节省 = ( 维护节省 + 劳工节省 + 原物料节省 ) x 生产水准

模拟步骤

接下来作者介绍如何在 excel 上实作模型。

跑出来的模型看起来像这样:

https://ithelp.ithome.com.tw/upload/images/20210926/20129237ciDzHc2PxW.png

首先是根据估算范围,为每个参数随机产生数字,作者在此例中随机产生了 15000 个 scenario

在此例中,作者在产生随机数字时,选择了常态分配:

https://ithelp.ithome.com.tw/upload/images/20210926/20129237d8xcffEow2.png

  • 常态分配的公式为 NORMINV(RAND(), A, B)
    • A = 平均值 = (90% CI 上限 + 90% CI 下限) / 2
    • B = 标准差 = (90% CI 上限 + 90% CI 下限) / 3.29

这里的标准差 3.29 是作者直接给的 XD

接着根据每个 scenario,来计算当年的 Savings,并判断是否有打平成本,也就是 Breakeven met? 栏位。

最後,根据「Breakeven met?」的平均数获得 86% 的机率,也就是有 14% 的机率无法打平成本。

https://ithelp.ithome.com.tw/upload/images/20210926/2012923766b2un9GLe.png

同时,根据 Savings 栏位,整理成每千美元为单位的长条图:

https://ithelp.ithome.com.tw/upload/images/20210926/20129237VN7u4Rrsbf.png

完整试算表 (Google sheet) 看起来像这样:

https://ithelp.ithome.com.tw/upload/images/20210926/20129237ZJdOFgn61C.png

讨论:其他的分配型态

上例中使用常态分配,在这里作者讨论了需要使用其他型态的例子:

  • 如果损失「大客户」,每个月的需求 (也就是生产水准) 就会减少 1000 单元
  • 上述情境发生的机率为 10%

由於这是不连续的事件,是重大、突然的需求下降,就不适用常态分配。

此时需要在表格中增加新的栏位来模拟事件的发生,以及事件是在哪一个月份发生的,然後根据状况来改变 Production level 的值:

https://ithelp.ithome.com.tw/upload/images/20210926/20129237osjoas9wU5.png

此时 contract loss 的二元分配的公式是 if(rand() < 10%, 1, 0)

而「该年度剩余月份 (Months Remaining in Year When Contract is Terminated)」则采用均等分配,概念是:

  • 任何日子都可能发生「丧失合约」事件
  • 公式:rand() * (上限 - 下限) + 上限
    • 上限是 12 个月
    • 下限是 0

https://ithelp.ithome.com.tw/upload/images/20210926/20129237PnG6ZssGKo.png

以上是本书对蒙地卡罗模拟的介绍。

其他

作者表示,有时候会需要一些快捷的作法,但请不要直接把「乐观的数字」 & 「悲观的数字」加总起来直接当成上下限。这样在商业案例上产生的结果会太夸张。

作者另外介绍了一个快捷算法,可以在「全都是常态分配」的前提下,不用跑模拟就能快速获得成本与效益,but 他没解释为什麽这样算,这里就笔记一下而己⋯⋯

  1. 将三个成本的上限减去中间值
    1. 维护节省 (MS):每单位 10~20 美元 → 20-15 = 5
    2. 劳工节省 (LS):每单元 -2~8 美元 → 5
    3. 原物料节省 (RMS):每单位 3~9 美元 → 3
  2. 将数字平方後加增 25+25+9=59
  3. 将总额开平方 59^0.5 = 7.68
  4. 将三项平均数加总 15+3+6 = 24
  5. 将 4 减掉 3,产生总额的上限与下限
    1. 上限:24 + 7.68 = 31.68
    2. 下限:24 - 7.68 = 16.32

本章剩下的段落讲了一些行业问题并进行宣导,但因为我对行业背景一窍不通,所以这边也不太知道重点是什麽,这就略过了 XD


我看 Amazon 书评上有人说这本书是「他看过对蒙地卡罗法最好懂的介绍」,唉这应该就是有背景知识的人可以下的评论吧,我在人生中就看过这唯一一个例子而己,例子是懂了,但整体而言究竟知道了什麽呢 XD

总之,进度推到 140 页了,即将跨过中线........


<<:  OpenWRT安装与设定

>>:  Day11 ATT&CK for ICS - Initial Access(1)

Day 13: Monitor and Log with Google Cloud Operations Suite: Challenge Lab

Tasks: Initialize Cloud Monitoring. Navigation men...

【Day02-尺度】40°C为什麽不是20°C的两倍?

我们昨天提到了资料的类型,那今天就来讲一讲资料的尺度(Scale) 先厘清一下 这边所提到的尺度不是...

@Day25 | C# WixToolset + WPF 帅到不行的安装包 [既有的自订栏位介接]

搞定好 画面了以後,现在要把既有的自订栏位给加进去, 先用"选择路径"的自订栏位...

【Day22】立即函式(IIFE)

立即函式特点: 立即执行 无法在函式外再次执行 接着我们来看立即函式的语法 (function() ...

Day 15 讯息伫列的储存、接收及传送

关於讯息伫列怎麽去储存呢?大致分成下列两种: 1.系统池(system pool):如果能确定讯息伫...