概览

蒙特卡罗方法又称统计模拟法、随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或伪随机数)来解决很多计算问题的方法。将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解。为象征性地表明这一方法的概率统计特征,故借用赌城蒙特卡罗命名。

引例

  • 为了求得圆周率π值,在十九世纪后期,有很多人作了这样的试验:将长为2l的一根针任意投到地面上,用针与一组相间距离为2a( l<a)的平行线相交的频率代替概率P,再利用准确的关系式:P=2lπaP = \frac{2l}{πa}P=πa2l​
  • 求出π值π=2lap≈2la(Nn)π=\frac{2l}{ap}≈\frac{2l}{a}(\frac{N}{n})π=ap2l​≈a2l​(nN​)

基本思想

  • 当所求问题的解是某个事件的概率,或者是某个随机变量的数学期望,或者是与概率,数学期望有关的量时,通过某种试验的方法,得出该事件发生的概率,或者该随机变量若干个具体观察值的算术平均值,通过它得到问题的解。
  • 当随机变量的取值仅为1或0时,它的数学期望就是某个事件的概率。或者说,某种事件的概率也是随机变量(仅取值为1或0)的数学期望。

特点

优点:(可以求解复杂图形的积分、定积分,多维数据也可以很快收敛)
1、能够比较逼真地描述具有随机性质的事物的特点及物理实验过程
2、受几何条件限制小
3、收敛速度与问题的维数无关
4、具有同时计算多个方案与多个未知量的能力
5、误差容易确定
6、程序结构简单,易于实现
缺点:
1收敛速度慢
2误差具有概率性
3在粒子输运问题中,计算结果与系统大小有关

所以在使用蒙特卡罗方法时,要“扬长避短”,只对问题中难以用解析(或数值)方法处理的部分,使用蒙特卡罗方法计算,对那些能用解析(或数值)方法处理的部分,应当尽量使用解析方法。

蒙特卡洛求解积分

θ=∫abf(x) dx\theta = \int_a^b f(x)\,dxθ=∫ab​f(x)dx

  • 求解定积分相当于计算一个图形的面积。
  • 按照牛顿和莱布尼兹的方法,我们是把区间划分成无限份,每份长为△t△ t△t,高为f(a+z△t)f(a+z△t)f(a+z△t),这样来计算面积。
  • 无论图形的形状如何,图形面积一定能被转化成一个以ab为底,y为高(y可以是负数)的长方形面积高,我们只需要用蒙特卡洛算法求y即可。
  • 那么y怎么求,其实非常简单,我们只需要在a~b之间生成n个随机点,计算相应的f(x1),f(x2)...f(x_1),f(x_2)...f(x1​),f(x2​)...
  • 然后再计算被积函数值的平均值∑i=1nf(xi)n\frac{\sum^n_{i=1}f(x_i)}{n}n∑i=1n​f(xi​)​
  • 于是整个函数的定积分理所当然为∑i=1nf(xi)n∗(b−a)\frac{\sum^n_{i=1}f(x_i)}{n}*(b-a)n∑i=1n​f(xi​)​∗(b−a)

项目风险案例分析

  • 现以成都某房地产开发公司对一综合开发用地进行投资开发为例,用基于蒙特卡罗模拟方法为原理的 EXCEL 插件——Crystal Ball工具对该开发项目进行风险决策分析。

一、项目概况和基本数据的确定

  • 该项目位于成都市锦江区,占地面积 47 亩;该房地产公司根据市场状况调查,结合该地块的规划说明,在做了充分的方案设计之后,确定了两套主要的投资方案。
  • 甲方案:该地块主要以小高层电梯住宅开发为主,辅以车库和部分商业配套设施,开发期共三年。甲方案预测出的的主要经济技术指标见表5-1。
  • 乙方案:将该地块开发为商业类地产为主,外设露天停车场,配以部分小户型电梯公寓,开发期仍为三年。乙方案预测出的的主要经济技术指标见表5-2。

采用蒙特卡罗方法进行风险决策分析

(一)识别项目风险
在投资开发项目时,实际情况千差万别,重要的风险变量也各不相同,这就需要分析人员根据项目的具体情况,运用适当的风险辨识的方法从影响投资的众多因素中找出关键的风险变量。本案例采用“德尔菲法”确定影响该项目的7个主要风险变量:住宅销售收入(P1*S1)、商业销售收入(P2*S2)、土地费用(K1)、前期费用(K2)、开发建设费用(K3)、营销费用(K4)、其他费用(K5)。
(二)确定每个风险变量的概率分布
同样采用“德尔菲法”估计出以上 7 个风险变量概率分布和其分布函数中的具体参数,如下表所示:



定义模型并确定模拟次数

定义财务净现值NPV的模型为:
NPV=∑t=1n∑l=12(pl∗Sl)t(P/F,ic,t)−∑tn=1∑l=15klt(P/F,ic,t)NPV = \sum^n_{t=1}\sum^2_{l=1}(pl*Sl)_t(P/F,i_c,t)-\sum^n_t = 1\sum^5_{l = 1}kl_t(P/F,i_c,t)NPV=t=1∑n​l=1∑2​(pl∗Sl)t​(P/F,ic​,t)−t∑n​=1l=1∑5​klt​(P/F,ic​,t)
其中,(p/F,ic,t)=1(1+ic)t(p/F,i_c,t) = \frac{1}{(1+i_c)}^t(p/F,ic​,t)=(1+ic​)1​t,i为基准折现率,n为项目的生命周期。
为了确保模拟结果与实际分布最大限度的接近一致,我们取95%的置信度,拟进行10000次的模拟实验。进行10000次的模拟,得出甲、乙方案的NPV的统计数据


分析决策

1、通过表 5-5 甲方案的财务净现值统计值和表 5-6 乙方案的财务净现值统计值,我们可以出,两个方案的NPV 期望值均大于零,但甲方案的值大于乙方案。
2、进一步对各方案的风险度进行比较,甲方案NPV 的标准差为1052.27,而乙的标准差为 2157.44,说明乙方案的偏离程度较大;并且甲方案NPV 介于[min:-1833.45,max:4448.76]之间,乙方案NPV 在[min:-7334.47,max:5529.92]之间,再次说明乙方案 NPV 的风险度大于甲方案。
因此,应该采用甲方案。

总结

通过上面的分析,利用蒙特卡罗方法模拟分析得出的结果与使用传统的分析技术得出的结果相比,不仅能够分析风险因素对整个项目预期收益的影响程度,而且还能科学地估计出风险发生的概率大小,并且这样的估计是建立在充分考虑了多个风险变量共同影响、共同作用的基础之上,能够为风险决策者提供有实用价值的决策依据。因此有助于我们对多套投资方案进行筛选比较。

数学建模之蒙特卡洛算法相关推荐

  1. 数学建模_数学模型的分类数学建模十大算法

    数学模型的分类 数学建模十大算法 1.蒙特卡罗算法 (该算法又称随机性模拟算法, 是通过计算机仿真来解决问题的算法, 同时可以 通过模拟可以来检验自己模型的正确性,比较好用的算法) 2.数据拟合.参数 ...

  2. 【Python与数学建模】蒙特卡洛模拟仿真(附完整详细代码)

    [Python与数学建模]蒙特卡洛模拟&仿真 零.前言 引例:投针实验 试验描述: 试验分析: 代码实现 蒙特卡洛模拟&仿真的基本介绍 应用实例 实例一.三门问题 问题描述 问题分析与 ...

  3. 【数学建模】蒙特卡洛模拟

    我的总结: 蒙特卡罗模型如果换一个名字就是计算机仿真,(计算机仿真现在的概念要大一点,可以理解为做大型工程的,两者不太一样,但在建模中类似). 个人感觉也可以说蒙特卡洛模型是模拟退火.蚁群等算法的原型 ...

  4. 数学建模竞赛常用算法介绍及对应国赛获奖论文分类整理分享

    数学建模竞赛中应当掌握的算法: 数学建模国赛每年的题型都类似,除非是个人专业性很强,否则作者不太建议选择华为出的题,剩余的题型每年都类似,是有迹可循的,毕竟站在巨人的肩膀上看的更远.下面就介绍一些数模 ...

  5. 数学建模—编程手算法学习路线(自用)

    算法目录 1.评价算法 适用情景 常用算法: 层次分析法 TOPSIS法 数据包络法 2.预测算法 适用情景 常用算法: 灰色预测模型 微分方程预测 回归分析预测 马尔科夫预测 时间序列预测(必须掌握 ...

  6. 【数学建模】模拟退火算法(最优化)

    文章目录 一.算法介绍 1. 退火 2.物理退火 3.模拟退火算法思想 二.适用问题 三.算法总结 1. 步骤 四.应用场景举例 五.MATLAB代码 六.实际案例 七.论文案例片段(待完善) 模拟退 ...

  7. 【数学建模】聚类算法+Spss实现+Matlab代码实现

    文章目录 一.聚类算法原理 二.Spss实现聚类 三.Matlab实现聚类 图片来源于清风老师视频 b站地址:数学建模学习交流 一.聚类算法原理 二.Spss实现聚类 三.Matlab实现聚类 1.创 ...

  8. 数学建模--蚁群算法

    数学建模常用的优化算法有蚁群算法. 首先学习资料: 网站:慕课数学建模在线课程 课件:链接:https://pan.baidu.com/s/1-bhmFZl7yM4-5JL__fzkLw 提取码:4s ...

  9. 【githubboy】数学建模学习资源,包含数学建模相关的算法、LaTeX 论文模板、算法思维导图

    在 GitHub 开源了数学建模学习资源,主要包含数学建模相关的竞赛优秀论文.算法.LaTeX 论文模板.算法思维导图.书籍.Matlab 教程等内容. GitHub:github.com/zhanw ...

  10. 数学建模十大算法02—插值与拟合(拉格朗日插值、三次样条插值、线性最小二乘法……)

    文章目录 引入 一.插值 1.1 分段线性插值 1.2 牛顿插值法 1.3 拉格朗日插值多项式 1.4 样条插值 1.4.1 三次样条插值 1.5 二维插值 1.5.1 插值节点为网格节点 1.5.2 ...

最新文章

  1. oracle12基本操作
  2. 第四节:EF Core的并发处理
  3. python1.学生管理系统
  4. 表哥的access入门 资源_理想的产品管理系统之二-找到Access
  5. 关于ASP调用.net WebService 的标准例子
  6. 思科模拟器交换机路由器常用命令
  7. 人才网运营之填充数据心得之骑士人才系统用火车头职位采集规则填充人才网数据
  8. (概论)java web后台开发跟手机APP后台开发有什么不同
  9. 2019全球最强100家AI公司名单出炉,6家中国公司上榜
  10. 程序员不要轻易去上海
  11. Python数据分析师工资怎么样?
  12. Javamail配置阿里云邮箱发送邮件
  13. linphone源码下载及下载失败解决方法
  14. 影集制作php源码_最新仿720全景在线制作云平台网站PHP源码
  15. 华为员工自曝百万级年终奖,论坛征女友!
  16. 基于Matlab的载波同步建模与仿真(科斯塔斯环)
  17. vulnhub THE PLANETS: EARTH
  18. cjson解析器说明
  19. C/C++编程学习 - 第7周 ④ 鸡尾酒疗法
  20. 两台Sawyer机械臂在rviz中的运动规划

热门文章

  1. 新编计算机组装与维护教程,新编计算机组装与维护教程/21世纪高等学校计算机科学与技术规划教材...
  2. Oracle 数据库修复,IBM DB2 数据库修复,MY SQL 数据库修复,SQL Server 数据 库修复,Sybase 数据库,Foxpro 数据库,Access 数据库,Informi
  3. 解决百度网盘超过4G限制,
  4. 你想通过创业赚取人生中的第一桶金
  5. go-http server使用hijack接管连接的管理
  6. 阿里专家问答丨人工智能/机器学习技术在电商场景下的应用
  7. 转载: WebKit介绍及总结(一)
  8. 7z文件格式及其源码的分析(三)
  9. Java解惑之长整型
  10. 绕口令 - 专项练习