数学建模之蒙特卡洛算法

概览

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

引例

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

基本思想

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

特点

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

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

蒙特卡洛求解积分

θ=abf(x) dx\theta = \int_a^b f(x)\,dx
数学建模之蒙特卡洛算法

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

项目风险案例分析

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

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

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

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

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

定义模型并确定模拟次数

定义财务净现值NPV的模型为:
NPV=t=1nl=12(plSl)t(P/F,ic,t)tn=1l=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)
其中,(p/F,ic,t)=1(1+ic)t(p/F,i_c,t) = \frac{1}{(1+i_c)}^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 的风险度大于甲方案。
因此,应该采用甲方案。

总结

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