蒙特卡洛模拟(Monte Carlo Simulation)浅析

2024-05-11 14:15

1. 蒙特卡洛模拟(Monte Carlo Simulation)浅析

蒙特卡洛模拟作为一种常用的模拟技术,在PMBOK里经常可以看到它的身影,其主要出现在风险管理知识领域中的定量风险分析过程,是用于做项目定量风险分析的工具之一,同时蒙特卡洛模拟也可以用于估算进度或成本以及制定进度计划等。(全文共  2741  字,阅读大约需要  10  分钟。)
  
 蒙特卡洛模拟由于在PMBOK里讲得较为简单和抽象,理解起来稍微有点困难。为了让大家更加通透地理解蒙特卡洛模拟的作用及其过程原理,本文试图通过一个简单的例子来实操模拟一下这个蒙特卡洛模拟的过程。
  
  一、简要介绍 
  
 到底什么是蒙特卡洛模拟呢?蒙特卡洛模拟是一种统计学的方法,用来模拟大量数据。可能童鞋们看到这个定义更晕了,到底什么是统计学方法,模拟大量数据干什么?别着急下面会慢慢一一道来。
  
 我们先来简单介绍一下关于蒙特卡洛模拟的一些背景知识。蒙特卡洛模拟是在二战期间,当时在原子弹研制的项目中,为了模拟裂变物质的中子随机扩散现象,由美国数学家冯·诺伊曼(学计算机的同学都知道这位冯同志的大名,人称“计算机之父”)和乌拉姆等发明的一种统计方法。之所以起名叫蒙特卡洛模拟,是因为蒙特卡洛在是欧洲袖珍国家摩纳哥一个城市,这个城市在当时是非常著名的一个赌城。因为赌博的本质是算概率,而蒙特卡洛模拟正是以概率为基础的一种方法,所以用赌城的名字为这种方法命名。
  
 蒙特卡洛模拟是在计算机上模拟项目实施了成千上万次,每次输入都随机选择输入值。由于每个输入很多时候本身就是一个估计区间,因此计算机模型会随机选取每个输入的该区间内的任意值,通过大量成千上万甚至百万次的模拟次数,最终得出一个累计概率分布图,这个就是蒙特卡洛模拟。
  
  二、 模拟过程 
  
 蒙特卡洛模拟在实际的项目管理应用中一般较为复杂,而且很多时候用在专业的项目风险分析软件里面(比如Pertmaster),通常用在较为大型的项目和企业中。我们这篇文章只是为了让童鞋们对于蒙特卡洛模拟有个更为直观清晰的认识,同时鉴于篇幅和不至于让讲解过于晦涩,所以这儿我们只是准备用Excel工具来简单地模拟和介绍一下蒙特卡洛模拟的实施操作过程,这样大家也能对蒙特卡洛模拟有个更为直观地了解。
  
 我们以定量分析项目总持续时间为例来简要介绍一下蒙特卡洛模拟。比如说我们现在有个项目,该项目共有三个WBS要素分别是设计、建造和测试,为了简单起见我们假设这三个WBS要素的预估的工期概率分布都呈标准正态分布,各自的平均工期、标准差以及最悲观、最可能和最乐观的估计工期如下图所示(我们这儿简单地认为基于正态分布的工期的最悲观/最乐观的估算工期定在均值正负3个标准差的位置),而且三者之间都是完成到开始的逻辑关系,这样整个项目工期就是这三个WBS要素工期之和。
                                          
 现在我们需要用蒙特卡洛模拟来以这三个要素的工期的分布为输入,来模拟得到整个项目的工期概率分布图。由于设计、建造和测试这三个要素都是呈标准正态分布,我们可以根据上面表格中的各自的均值和标准差数据大致画出这三个要素工期的概率分布图如下面的样子:
                                          
 我们要用蒙特卡洛模拟来定量分析整个项目的工期进度风险。于是我们用计算机来模拟项目的实施,我们的思路是: 第一步: 随机选取每个WBS要素的工期值作为输入(因为每个要素的工期不是恒定的,本身就是一个估计的分布区间); 第二步: 然后把三个WBS要素的值相加得到整个项目的工期值,这样就完成了一次模拟; 第三步: 重复第一二步,然后就这样一次一次的模拟,需要模拟成千上万次最终得到成千上万个整个项目总工期的数值; 第四步: 再对这些海量模拟次数得到海量总工期数值进行统计分析,得出其最终的项目总工期估计的概率分布。
  
 我们先做第一步。第一步需要我们先产生这些每个要素的随机工期值。Excel里面有个函数可以生成呈正态分布的随机数,就是NORMINV。我们的设计要素的第一个随机工期取值的公式就是这么写的:=ROUND(NORMINV(RAND(),$E$3,$F$3),0),如下图所示:
                                          
 解释一下这个公式:ROUND(NORMINV(RAND(),$E$3,$F$3),0),RAND() 是生成0到1之间的随机数,NORMINV(RAND(),$E$3,$F$3) 是生成呈均值为E3(图中为14)、标准差为F3(图中为2)的正态分布的随机数,ROUND 是四舍五入的意思,这样回车我们就生成了设计这个要素的第一个随机工期值17。同理我们把这个公式值往下拉,复制400次(我们此例中模拟400次),就得到了400个呈正态分布的随机工期值;然后建造和测试的随机工期值也是照葫芦画瓢,这样我们就得到了这3个要素的400次模拟的随机值,再每次的3个要素的随机值相加得到总工期的模拟值,如下图所示:
                                          
 此时前三步就做完了得到了总工期的一组数据(400个)。现在开始做第四步对这组数据做统计分析和作图。
  
  4.1  先把总工期这一列(图中E列)400个值拷贝一份,粘贴数值到另外一列(注意粘贴的时候选择“选择性粘贴”然后选“值”,因为随机数随时变动,这儿需要把值固定下来),用MAX和MIN函数计算出这一列400个值的最大值为76,和最小值为45,作为分组依据,然后在旁边 I 列依次升序排列42-78(前后多取几个数值图像更完整)这部分数值作为分组数据,如下图所示:
                                          
  4.2  然后计算每个分组数据在总工期这组数据中出现的概率,这儿需要用到函数FREQUENCY,计算概率的公式为:=FREQUENCY(H8:H407,I8:I40)/400,意思是统计每个分组数据在总工期这一组数据中出现的次数,再除以模拟总次数400就得到这个分组数据出现的概率。再计算一个累积概率值,累积概率值就是前面的所有单个概率值加起来的概率,比如算分组数据46的累积概率值就是把46以下的数值的概率值全部加起来,这样我们就得到关于分组数据在总工期这组数据中出现的概率和累积概率的数据,如下表格所示:
                                          
  4.3  通过对上面表格的数据,以分组数据为X轴,出现概率和累积概率的值为Y轴于是可以做出下面关于总工期的概率分布图:
                                          
 红色柱状图是整个项目估计刚好多少天完工的概率数据,比如图中60天对应的概率大约是11%,表示整个项目刚好60天完工的概率是11%;蓝线就是我们PMBOK上定量风险分析得到的那张S曲线图,也是我们最终蒙特卡洛模拟需要得到的最终的模拟输出:总工期的概率分布图。通过这个S曲线,我们可以预测整个项目在多少天内完工的概率。比如我们需要预测整个项目在56天完工的概率,通过S曲线了解到56天对应的累积概率是34%左右,也就是整个项目56天内完工的概率是34%,那么56天内不能完工的概率就是1-34%=66%,这就是风险。如果觉得风险太高无法接受,那么我们可以把工期适当规划长一些,比如60天,这样查询S曲线可以得到60天内整个项目完工的概率是70%,这样就只有剩下30%的不能按时完工的风险,项目在进度方面的风险就大大降低了。
  
 好了,至此关于蒙特卡洛模拟的基本概念和操作流程就说完了,希望能通过本文对大家学习和理解蒙特卡洛模拟有所助益,如有任何疑问、建议或指正,欢迎留言交流,谢谢阅读。
  
 推荐阅读作者更多的文章(直接点击下面的标题):
  
  详解挣值管理(EVM) 
  
  详解净现值(NPV)与内部报酬率(IRR) 
  
  什么是边际效益递减规律? 
  
  “活动”失踪了吗? | 《PMBOK®指南》第6版解读 
  
  如何用通俗的案例解释「借壳上市」?

蒙特卡洛模拟(Monte Carlo Simulation)浅析

2. matlab蒙特卡洛模拟程序是什么?

蒙特卡洛模拟法求解步骤  应用此方法求解工程技术问题可以分为两类:确定性问题和随机性问题。解题步骤如下:
根据提出的问题构造一个简单、适用的概率模型或随机模型,使问题的解对应于该模型中随机变量的某些特征(如概率、均值和方差等),所构造的模型在主要特征参量方面要与实际问题或系统相一致
2 .根据模型中各个随机变量的分布,在计算机上产生随机数,实现一次模拟过程所需的足够数量的随机数。通常先产生均匀分布的随机数,然后生成服从某一分布的随机数,方可进行随机模拟试验。
3. 根据概率模型的特点和随机变量的分布特性,设计和选取合适的抽样方法,并对每个随机变量进行抽样(包括直接抽样、分层抽样、相关抽样、重要抽样等)。
4.按照所建立的模型进行仿真试验、计算,求出问题的随机解。
5. 统计分析模拟试验结果,给出问题的概率解以及解的精度估计。

3. Monte Carlo模拟的基本原理

2.4.2.1 均布随机数
在Monte Carlo模拟过程中,关键是产生[0,1]之间均匀分布的随机数,并通过适当的转换获得相应于某具体概率分布的随机变量来进行模拟。产生均匀分布随机数的方法很多[57~59],但常用的产生随机数的计算机方法是代数同余法,即:
xi+1=(axi+c)(mod m) (2.6)
其中a、c、m是非负整数,如果ki是  的整数部分,即:

非连续变形分析方法及其在地下工程中的应用

则对应于模数m的余数是:
xi+1=axi+c-mki (2.7)
对于给定初始值(种子数)x0,通过上式可迭代出一批均匀随机数x1,x2,…,xn。经过如下式的归一化处理,便可得到[0,1]区间上均匀分布的随机数ui:

非连续变形分析方法及其在地下工程中的应用

在产生[0,1]之间均匀分布的随机数后,将其转化为满足某种分布(如均匀分布、二项式分布、负指数分布等)的随机变量。如果某随机变量的分布函数存在反函数,则可用反函数方法来确定转化后的随机变量,否则要用数值积分的方法求解。
在计算机上产生的随机数必须满足下列要求[55]:
(1)分布上的均匀性,统计上的独立性;
(2)产生的随机数可以重复,即给予相同的初始值能得到相同的随机序列,这样可以在相同的条件下模拟不同的设计方案;
(3)应该有足够长的周期,即在达到重复循环之前,能产生足够使用的随机数。
2.4.2.2 正态分布的随机变量
结构面的产状(倾角、倾向)服从正态分布。Box 和Muller(1958)[55]认为,如果u1、u2是两个在[0,1]上独立分布的均匀随机数,则:

非连续变形分析方法及其在地下工程中的应用

构成一对统计意义上独立的标准正态分布随机变量。对于非标准的正态分布,可用标准正态分布的随机变量X经下列线性变换得到:
x=μ+σX (2.10)
因此源于正态分布N(μ,σ)的随机变量可由下式产生:

非连续变形分析方法及其在地下工程中的应用

2.4.2.3 负指数分布的随机变量
结构面的间距和迹长是负指数分布的。负指数函数的表达式为[60][61]:
FX(x)=1-e-λx,x≥0 (2.12)
其反函数为:

非连续变形分析方法及其在地下工程中的应用

由(2.3)式迭代出均匀分布的随机数后,便可获得负指数分布的随机变量:

非连续变形分析方法及其在地下工程中的应用

或:

非连续变形分析方法及其在地下工程中的应用

上式中λ为结构面间距或迹长的数学期望。

Monte Carlo模拟的基本原理

4. 什么是蒙特卡洛模拟( Monte Carlo simulation)


5. 什么是蒙特卡洛模拟( Monte Carlo simulation)

蒙特卡洛模拟又称为随机抽样或统计试验方法,属于计算数学的一个分支,它是在上世纪四十年代中期为了适应当时原子能事业的发展而发展起来的。传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方法由于能够真实地模拟实际物理过程,故解决问题与实际非常符合,可以得到很圆满的结果。
蒙特卡洛随机模拟法的原理是当问题或对象本身具有概率特征时,可以用计算机模拟的方法产生抽样结果,根据抽样计算统计量或者参数的值;随着模拟次数的增多,可以通过对各次统计量或参数的估计值求平均的方法得到稳定结论。
蒙特卡洛随机模拟法 - 实施步骤抽样计算统计量或者参数的值;随着模拟次数的增多,可以通过对各次统计量或参数的估计值求平均的方法得到稳定结论。

扩展资料基本原理思想
当所要求解的问题是某种事件出现的概率,或者是某个随机变量的期望值时,它们可以通过某种“试验”的方法,得到这种事件出现的频率,或者这个随机变数的平均值,并用它们作为问题的解。这就是蒙特卡罗方法的基本思想。
蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。可以把蒙特卡罗解题归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。

参考资料来源:百度百科-蒙特卡罗模拟
参考资料来源:百度百科-蒙特卡洛随机模拟法

什么是蒙特卡洛模拟( Monte Carlo simulation)

6. 蒙特卡洛模拟具体步骤是什么

蒙特卡洛模拟法求解步骤  应用此方法求解工程技术问题可以分为两类:确定性问题和随机性问题。解题步骤如下:
  1.根据提出的问题构造一个简单、适用的概率模型或随机模型,使问题的解对应于该模型中随机变量的某些特征(如概率、均值和方差等),所构造的模型在主要特征参量方面要与实际问题或系统相一致
  2 .根据模型中各个随机变量的分布,在计算机上产生随机数,实现一次模拟过程所需的足够数量的随机数。通常先产生均匀分布的随机数,然后生成服从某一分布的随机数,方可进行随机模拟试验。
  3. 根据概率模型的特点和随机变量的分布特性,设计和选取合适的抽样方法,并对每个随机变量进行抽样(包括直接抽样、分层抽样、相关抽样、重要抽样等)。
  4.按照所建立的模型进行仿真试验、计算,求出问题的随机解。
  5. 统计分析模拟试验结果,给出问题的概率解以及解的精度估计。
  在可靠性分析和设计中,用蒙特卡洛模拟法可以确定复杂随机变量的概率分布和数字特征,可以通过随机模拟估算系统和零件的可靠度,也可以模拟随机过程、寻求系统最优参数等。

7. 蒙特卡洛模拟法

一、蒙特卡洛模拟法的概念:(也叫随机模拟法)当系统中各个单元的可靠性特征量已知,但系统的可靠性过于复杂,难以建立可靠性预计的精确数学模型或模型太复杂而不便应用则可用随机模拟法近似计算出系统可靠性的预计值。随着模拟次数的增多,其预计精度也逐渐增高。由于需要大量反复的计算,一般均用计算机来完成。

二、蒙特卡洛模拟法求解步骤:应用此方法求解工程技术问题可以分为两类:确定性问题和随机性问题。解题步骤如下:

1.根据提出的问题构造一个简单、适用的概率模型或随机模型,使问题的解对应于该模型中随机变量的某些特征(如概率、均值和方差等),所构造的模型在主要特征参量方面要与实际问题或系统相一致

2 .根据模型中各个随机变量的分布,在计算机上产生随机数,实现一次模拟过程所需的足够数量的随机数。通常先产生均匀分布的随机数,然后生成服从某一分布的随机数,方可进行随机模拟试验。

3. 根据概率模型的特点和随机变量的分布特性,设计和选取合适的抽样方法,并对每个随机变量进行抽样(包括直接抽样、分层抽样、相关抽样、重要抽样等)。

4.按照所建立的模型进行仿真试验、计算,求出问题的随机解。

5. 统计分析模拟试验结果,给出问题的概率解以及解的精度估计。
在可靠性分析和设计中,用蒙特卡洛模拟法可以确定复杂随机变量的概率分布和数字特征,可以通过随机模拟估算系统和零件的可靠度,也可以模拟随机过程、寻求系统最优参数等。

蒙特卡洛模拟法

8. 蒙特卡洛模拟法

蒙特卡洛模拟技术,是用随机抽样的方法抽取一组满足输入变量的概率分布特征的数值,输入这组变量计算项目评价指标,通过多次抽样计算可获得评价指标的概率分布及累计概率分布、期望值、方差、标准差,计算项目可行或不可行的概率,从而估计项目投资所承担的风险。
蒙特卡洛模拟的步骤如下:
第一步,通过敏感性分析,确定风险变量。
第二步,构造风险变量的概率分布模型。
第三步,为各输入风险变量抽取随机数。
第四步,将抽得的随机数转化为各输入变量的抽样值。
第五步,将抽样值组成一组项目评价基础数据。
第六步,根据基础数据计算出评价指标值。
第七步,整理模拟结果所得评价指标的期望值、方差、标准差和它的概率分布及累计概率,绘制累计概率图,计算项目可行或不可行的概率。
蒙特卡洛模拟程序如图7-26所示。

图7-26 蒙特卡洛模拟程序图

【实训Ⅷ】某项目建设投资为1亿元,流动资金1000 万元,项目两年建成,第三年投产,当年达产。不含增值税年销售收入为5000万元,经营成本2000万元,附加税及营业外支出每年为50万元,项目计算期12 a。项目要求达到的项目财务内部收益率为15%,求内部收益率低于15%的概率。
由于蒙特卡洛模拟的计算量非常大,必须借助计算机来进行。本案例通过手工计算,模拟20次,主要是演示模拟过程。
(1)确定风险变量。通过敏感性分析,得知建设投资、产品销售收入、经营成本为主要风险变量。流动资金需要量与经营成本线性相关,不作为独立的输入变量。
(2)构造概率分布模型。建设投资变化概率服从三角形分布,其悲观值为1.3亿元、最大可能值为1亿元、乐观值为9000万元,如图7-27所示。年销售收入服从期望值为5000万元、σ=300万元的正态分布。年经营成本服从期望值为2000万元、σ=100 万元的正态分布。

图7-27 投资三角形分布图

建设投资变化的三角形分布的累计概率,见表7-16及图7-27所示。

表7-16 投资额三角形分布累计概率表

(3)对投资、销售收入、经营成本分别抽取随机数,随机数可以由计算机产生,或从随机数表中任意确定起始数后,顺序抽取。本例从随机数表(表7-20)中抽取随机数。假定模拟次数定为k=20,从随机数表中任意从不同地方抽取三个20 个一组的随机数,见表7-17。

表7-17 输入变量随机抽样取值

(4)将抽得的随机数转化为各随机变量的抽样值。
这里以第1组模拟随机变量产生做出说明。
1)服从三角形分布的随机变量产生方法。
根据随机数在累计概率表(表7-16)或累计概率图(图7-28)中查取。投资的第1个随机数为48867万元,查找累计概率0.48 867所对应的投资额,从表7-16中查得投资额在10300与10600之间,通过线性插值可得
第1个投资抽样值=10300+300×(48867-39250)/(52000-39250)=10526万元
2)服从正态分布的随机变量产生方法。
从标准正态分布表(表7-21)中查找累计概率与随机数相等的数值。例如销售收入第1个随机数06242,查标准正态分布表得销售收入的随机离差在-1.53与-1.54之间,经线性插值得-1.5348。

图7-28 投资的累计概率分布图

第1个销售收入抽样值=5000-1.5348×300≈4540万元。
同样,经营成本第一个随机数66 903相应的随机变量离差为0.4328,第一个经营成本的抽样值=2000+100×0.4328=2043万元。
3)服从离散型分布的随机变量的抽样方法。
本例中没有离散型随机变量。另举例如下,据专家调查获得的某种产品售价的概率分布见表7-18。

表7-18 某种产品售价的概率分布

根据上表绘制累计概率如图7-29所示。
若抽取的随机数为43252,从累计概率图纵坐标上找到累计概率为0.43252,划一水平线与累计概率折线相交的交点的横坐标值125元,即是售价的抽样值。
(5)投资、销售收入、经营成本各20个抽样值组成20组项目评价基础数据。
(6)根据20组项目评价基础数据,计算出20 个计算项目评价指标值,即项目财务内部收益率。
(7)模拟结果达到预定次数后,整理模拟结果按内部收益率从小到大排列并计算累计概率,见表7-19所示。
从累计概率表可知内部收益率低于15%的概率为15%,内部收益率高于15%的概率为85%。

图7-29 售价累计概率曲线


表7-19 蒙特卡洛模拟法累积概率计算表

①每次模拟结果的概率=1/模拟次数。