Monte Carlo模拟的基本原理

2024-05-10

1. 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模拟的基本原理

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


3. 什么是monte carlo仿真法??

  Monte Carlo是Primavera公司开发的风险模拟分析软件。在和Primavera Project Planner相组合使用的条件下,利用Monte Carlo,项目管理人员能够分析项目实施中存在的风险,为项目计划建立概率模型。利用Monte Carlo可以评估有概率日历的工序组,衡量项目网络计划的任一部分,或者整个计划的成功概率。项目管理人员还可以确定工程按期交付的可能性性,为材料成本范围建立模型,甚至可以计算出一次罢工可能造成的影响。

  “Monte Carlo”的名称取自于Monaco(摩纳哥)内以赌博娱乐而闻名的一座城市。
  Monte Carlo 方法的应用有两种途径:仿真和取样。仿真是指提供实际随机现象的数学上的模仿的方法。一个典型的例子就是对中子进入反应堆屏障的运动进行仿真,用随机游动来模仿中子的锯齿形路径。取样是指通过研究少量的随机的子集来演绎大量元素的特性的方法。例如, 在 上的平均值可以通过间歇性随机选取的有限个数的点的平均值来进行估计。这就是数值积分的Monte Carlo 方法。MCM已被成功地用于求解微分方程和积分方程,求解本征值,矩阵转置,以及尤其用于计算多重积分。

  任何本质上属随机组员的过程或系统的仿真都需要一种产生或获得随机数的方法。这种仿真的例子在中子随机碰撞,数值统计,队列模型,战略游戏,以及其它竞赛活动中都会出现。Monte Carlo 计算方法需要有可得的、服从特定概率分布的、随机选取的数值序列。

  Monte Carlo算法分以下几个步骤:
  Step 1  离散化 Monte Carlo是基于离散采样的,离散多个粒子(也叫粒子滤波器),然后求得收敛值
  Step 2  预测阶段 给定某种行为,预测各个粒子可能的状态
  Step 3  观测 根据各种传感器的信息,获得粒子的观测数据
  Step 4  数据综合,根据预测值和观测值的误差给粒子划分区域,例如e1.e2,e3,……,en。把以上的误差值的倒数归一化,例如1号粒子占的区域(1/e1)/(1/e1+1/e2+1/e3,……+1/en)
  Step 5  Gambling,对每个粒子随机数,一致偏离(0,1),意思是,在(0,1)之间的任何数的出现的概率是相同的,对每一个粒子来说,随机数出现在哪个区域,就用哪个区域的值来代替原有的值。从几何概率上来说,所占的区域越大,用自己的粒子代替其他粒子的概率越大,也就意味着该粒子存活的可能性越大。以前我对此也有疑问,为什么要用随机的方式,而不用某种比例方式用小误差的粒子来代替大误差的呢?古人早就解释了“Lest people suspect your tale untrue,don't forget probability in view ” --John Gay(1727)。
  Step 6  Goto step 1 直到所有的粒子收敛为一个值(如果宪法允许多夫多妻可以收敛到多个值的),即所谓的最优值。
  主要研究的地方:
  1  粒子的来源问题
  2  多维优化问题
  3  随机数的选择问题

什么是monte carlo仿真法??

4. Monte Carlo方法基础

2.4.1.1 Monte Carlo 方法基本思想
Monte Carlo方法的定名和系统发展约始于20世纪40年代中,但从方法的特征角度来看可以一直追溯到19世纪后半叶的Buffon随机投针试验,即著名的Buffon问题。Buffon是法国著名学者,最早提供了用随机试验求π值的范例(图2.7)。

图2.7 Buffon投针试验

在平面上画间距为2a的平行线束,在平面上随机投长为2l的针,为了避免针与平行线同时相交的复杂情况,假定l<a。设M为针的中点,y为针与最近平行线的距离,θ为平行线与针的交角,0≤y≤a,0≤θ≤π,则针与平行线相交的充要条件是:
y≤lsinθ
故相交的概率为:

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

用N表示投针次数,v表示针与平行线相交次数,由贝努里定律知,当N足够大时,频率接近于概率,即:

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

因此:

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

上式即为用随机试验求π值的公式。
根据公式(2.2),在19~20世纪,不少学者做了随机投针试验,并估算了π值,有代表性的如表2.5所示。

表2.5 π值估算

上面例子为Monte Carlo方法的雏形,包括以概率统计理论为主要理论基础、以随机抽样为手段两个核心问题。
Monte Carlo方法也称为随机模拟方法(Random simulation),有时也称为随机抽样方法(Random sampling),其基本思想为首先建立一个随机过程或概率模型,使它的参数等于问题的解,然后通过模型或过程的观察或抽样试验来计算所求参数的统计特征,最后给出所求参数的近似值。
假如所要求的量x是随机变量ζ的数学期望E(ζ),那么近似确定x的方法是对ζ进行N次重复抽样试验,产生相互独立的ζ值的序列ζ1,ζ2,ζ3,…,ζn,并计算算术平均值:

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

根据阿尔莫哥罗夫加强大数定律,有:

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

因此,当N充分大时,下式:
ζN≈E(ζ)=x
成立的概率等于1,也即可用ζN作为所求量x的近似值。
举个简单例子,如要计算定积分:

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

可按下述步骤近似计算:
(1)产生均匀分布在[0,1]上的随机数rn(n=1,2,3,…,N);
(2)计算g(rn)(n=1,2,3,…,N);
(3)用平均值作为I的近似值:  。
2.4.1.2 随机数与伪随机数
用Monte Carlo方法模拟,需要产生各种概率分布的随机变量,最简单、最重要、最基本的随机变量是在[0,1]上均匀分布的随机变量。
设r为[0,1]上均匀分布的随机变量,则其密度函数为:

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

随机变量r的累计分布函数为:

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

则随机变量r的数学期望为:

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

为了方便,通常将在[0,1]上均匀分布的随机变量称为随机数。其他分布的随机变量的抽样都是借助于随机数来实现的。
在计算机上用数学方法产生随机数是目前广泛使用的方法,然而这种随机数是根据确定递推公式求得的,存在周期现象,初值确定后,所有的随机数便被唯一确定了,不能满足真正随机数的要求,因此将数学方法产生的随机数称为伪随机数。在实际应用中,只要这些伪随机数通过一系列的统计检验,还是可以把它当作真正随机数来使用的。
用数学方法产生的伪随机数具有许多优点,如适合用计算机进行迭代计算,只要在计算机中存储一个或几个初始值便可,而且速度快,费用低廉。在产生过程中,存在周期现象,因此周期的长短至关重要。在迭代过程中,应注意下列几点:
(1)随机性要好;
(2)在计算机上容易实现;
(3)省时;
(4)伪随机数的周期要长。

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

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

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

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

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

6. 蒙特卡洛模拟(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版解读 
  
  如何用通俗的案例解释「借壳上市」?

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

我们一直面对着不确定,不明确和变异。甚至我们无法获得信息,我们不能准确的预测未来。蒙特卡洛模拟( Monte Carlo simulation)让您看到了您决策的所有可能的输出,并评估风险,允许在不确定的情况下制定更好的决策。蒙特卡洛模拟( Monte Carlo simulation)是一种计算机数学技术,允许人们在定量分析和决策制定过程中量化风险。这项技术被专家们用于各种不同的领域,比如财经,项目管理,能源,生产,工程,研究和开发,保险,石油&天然气,物流和环境。蒙特卡洛模拟( Monte Carlo simulation)提供给了决策制定者大范围的可能输出和任意行动选择将会发生的概率。它显示了极端的可能性-最的输出,最保守的输出-以及对于中间路线决策的最可能的结果。这项技术首先被从事原子弹工作的科学家使用;它被命名为蒙特卡洛,摩纳哥有名的娱乐旅游胜地。它是在二战的时候被传入的,蒙特卡洛模拟( Monte Carlo simulation)现在已经被用于建模各种物理和概念系统。蒙特卡洛模拟( Monte Carlo simulation)是如何工作的蒙特卡洛模拟( Monte Carlo simulation)通过构建可能结果的模型-通过替换任意存在固有不确定性的因子的一定范围的值(概率分布)-来执行风险分析。它一次又一次的计算结果,每次使用一个从概率分布获得的不同随机数集。根据不确定数和为他们制定的范围,蒙特卡洛模拟( Monte Carlo simulation)能够在它完成计算前调用成千上万次的重复计算。蒙特卡洛模拟( Monte Carlo simulation)产生可能结果输出值的分布。通过使用概率分布,变量能够拥有不同结果发生的不同概率。概率分布是一种用来描述风险分析的变量中的不确定性的更加可行的方法。常用的概率分布包括:正态分布(Normal)-或"钟型曲线".用户简单的定义均值或期望值和标准差来描述关于均值的变异。在中部靠近均值的值是最有可能发生的值。它是对称的,可以用来描述多种自然现象,比如人的身高。可以通过正态分布描述的变量示例包括通货膨胀率和能源价格。对数正态分布(Lognormal)-值是正偏的,不像正态分布那样是对称的。它被用来代表不会小于零但可能有无限大正值的结果。可以通过对数正态分布描述的变量示例包括房地产价值,股票价格和石油储量。均匀分布(Uniform)-所有的值发生的机会相等,用户只需制定最小和最大值。可以通过均匀分布描述的变量示例包括一个新产品的制造费用或未来销售收入。三角分布(Triangular)-用户指定最小,最可能和最大值。在最可能附近的值最可能发生。可以通过三角分布描述的变量示例包括每时间单位内的过去销售历史和库存水平。PERT分布-用户指定最小,最可能和最大值,类似三角分布。在最可能附近的值最可能发生。然而在最可能和极值之间的值比三角分布更有可能发生;那就是说,the extremes are not as emphasized. 可以通过三角分布描述的变量示例包括在项目管理模型中的一项任务的持续时间。离散分布(Discrete)-用户指定最可能发生的值和每个值的可能性。比如关于诉讼结果的示例,20%的机会陪审团判决无罪,30%的机会陪审团判决有罪,40%的机会审批有效,10%的机会审批无效。在蒙特卡洛模拟( Monte Carlo simulation)过程中,值被从输入概率分布中随机抽取。每个样本集被称为一次迭代,从样本获得的结果被记录。蒙特卡洛模拟( Monte Carlo simulation)执行这样的操作成百上千次,可能结果形成一个概率分布。用这种方法,蒙特卡洛模拟( Monte Carlo simulation)生成了一个更加全面关于将会发生的结果的视图。它不仅仅告诉什么结果会发生,而且还有结果发生的可能性。蒙特卡洛模拟( Monte Carlo simulation)提供了许多超越确定性或"单点估计"分析的优势:概率结果,结果不仅显示会发生什么,而且还有每个结果发生的可能性图形化报告,因为蒙特卡洛模拟( Monte Carlo simulation)生成的数据,它很容易创建不同结果和他们发生机会的图形。这对于和其他投资者沟通结果是很重要的。敏感性分析,如果只有很少的一些案例,确定性分许就很难发现哪个变量对结果影响最大。在蒙特卡洛模拟( Monte Carlo simulation)中,很容易发现哪个输入对底线结果有最大的影响。情境分析,在确定性模型中,对于为不同输入值的不同组合建模来真实的查看不同情境的效果是很困难的。使用蒙特卡洛模拟( Monte Carlo simulation),分析员能够正确的查看当确定的输出发生时某个输入对应的值。这对于进一步的分析来说是无价的。相关性输入,在蒙特卡洛模拟( Monte Carlo simulation)中,可能要建模输入变量之间的相关关系。它对于准确的描绘在某些因子增长时,其它的因子是如何增长或下降的情况时是重要的。

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