工程经济学上机指导-蒙特卡罗模拟评价决策方法1上机二蒙特卡罗模拟评价决策方法蒙特卡罗模拟法是一种随机模拟方法,也叫模拟抽样法或统计实验法,它不是按照传统的观念去求解模型,而是按一定概率分布产生随机数的方法来模拟可能出现的随机现象。它的实质是实验,即在假定条件下去运行模型,然后根据模型运行的结果,进行预测分析和系统评价。蒙特卡罗模拟法是概率分析中一种非常实用的方法。在实际应用时,常常是先建立一个基本模型,再进行数字模拟,如果模拟结果说明模型的有效性不足,可以逐步扩大模型的细节,反复进行数字模拟以求最后取得一个更精确的估计。随机模拟之所以具有强大的功能,其主要原因之—,就是可以把更详细、更接近实际的内容纳入模拟模型。这一点是可解的分析模型所难以办到的。模拟分析就是利用计算机模拟技术,对项目的不确定因素进行模拟,通过抽取服从项目不确定因素分布的随机数,计算分析项目经济效果评价指标,从而得出项目经济效果评价指标的概率分布,以提供项目不确定因素对项目经济指标影响的全面情况。在经济评价中,任何一个评价指标Z往往是多个自变量xi的多元函数,即可表示为:mxxxfZ,,,21一般情况下,自变量xi都是确定的值,这样,得到的Z也是一个确定的值。当我们进行概率分析时,xi中至少有一个时随机变量,因而Z也是一个随机变量,这样我们在对方案进行比较评价时,就不但要比较Z的期望值的大小,而且还要比较项目失败后风险的大小。运用蒙特卡罗模拟法进行经济评价的过程主要有三个步骤:1、构造模型。进行蒙待卡罗模拟,首先必须确定研究对象及其概率分布,研究对象就是对研究指标有主要影响的因素,概率分布一般采用一个适当的理论分布来描述自变量的经验概率。对于某些经济问题来说,常常没有可以直接引用的分布率。在这种情况下,通常的做法是根据历史计录或主观的分析判断,求得研究对象的一个初始概率分布。例如在需求预测中,可以根据过去的实际需求量分布状况,估计预测目标的初始分布,或运用主观概率法、专家调查法给出一个事件出现的概率分布。2、运行模型。根据确定的模型结构(概率分布及其结构关系)进行随机抽样,由计算机按自变量的分布概率产生随机数作为样本,由函数关系计算样本的评价指标,故又称为数字模拟。3、根据模型的随机模拟结果,统计各事件发生的频数,得出要求的统计量,比如评价指标的期望值、方差、概率分布图等,从而进一步分析评价指标的置信区域和项目的风险程度。蒙特卡罗模拟的工作流程如图1所示。下面举两个实例,说明蒙特卡罗模拟分析法。例某公司新建一项目,第一年投资为I,第二年起运营,每年净收益为A,寿命期为20年,固定资产残值为Sv。根据大量统计资料,此行业基准收益率6%,I、A、Sv为随机分布,分布概率如表1,试用蒙特卡罗模拟法建造该项目的净现值分布。表1分布概率净收益A值128.5148.0167.5187.0206.5mL=164.58σL=23.78概率0.170.200.360.150.12累计概率0.170.370.730.881.00投资I值12501310137014901430mL=1388确定初始概率分布随机抽样(数字模拟)计算评价指标的统计量结果输出重新模拟或修正概率分布评价统计量结果不合理结果合理图1蒙特卡罗模拟法步骤框图工程经济学上机指导-蒙特卡罗模拟评价决策方法2概率0.100.130.340.230.20σL=72.75累计概率0.100.230.570.801.00残值Sv值7278849096mL=82.86σL=7.19概率0.170.220.340.170.10累计概率0.170.390.730.901.00解:进行蒙特卡罗模拟时,把随机数和累计概率相比较,落入哪个区间,自变量就取那个区间的上限值。根据题意,该项目的净现值计算公式为:1,06.0,/)21,06.0,/()1,06.0,/)(20,06.0,/(FPIFPSFPAPANPVv依次取三个随机数所对应的A、I、Sv计算NPV,就可以得到净现值的一批样本,本例共选取了25组数据,见图4。图2中各区段NPV值出现的频率就是它发生概率的近似值,表示此项目可获得的各种NPV可能性的大小。由图分析可知,NPV0的概率为零,即没有净现值为零的风险;0NPV2百万元的概率为4%;NPV6百万元的概率为72%;NPV1000万元的概率为24%。需要指出的是,本例选取了25组样本分析计算,在样本较小的情况下,概率分布图可能不太理想,读者可选取较多样本进行模拟,结果会比较满意,精度较高。0420088816441288051015202512345678910111213百万元百分率图2NPV的概率分布直方图模拟分析的计算工作量较大,因而一般采用计算机编程计算。下面介绍本例在EXCEL中的实现方法。1、首先输入已知数据表(如图3)。2、根据图3表制作A、I、Sv的随机样本数值。首先应用随机函数产生随机数,在单元格C20中输入函数“=RAND()”,分别复制到C20:C44。其次根据概率确定具体数值,在单元格D20中输入函数“=HLOOKUP(C20,$D$12:$H$13,2,TRUE)”,将会根据图3表中的概率分布分别查出相应的A值,复制到D20:D44。同理,求得I、Sv的随机样本数值,分别得到F列和H列。第三,计算净现值NPV,在单元格I20中输入函数“=11.469*D20*1.06+H20*0.294-F20*0.943”,复制到I20:I25,即可求得所有样本的NPV。如图4。工程经济学上机指导-蒙特卡罗模拟评价决策方法3图3已知数据表3、绘制NPV的概率分布直方图。首先制作一个NPV的分段表,图5中L5:X6,共分为13段,在单元格J20中输入函数“=HLOOKUP(I20,$L$5:$X$6,2,TRUE)”,根据分段,查表求得NPV所在的段号,分别复制到J20:J25单元格,然后统计每段内的NPV个数,在单元格L8中输入函数“=COUNTIF($J$20:$J$44,1)”,复制到L8:X8,即可得出每段内的NPV个数,进而得出NPV在不同段内百分率,如图5。根据图5中的数据即可绘制NPV的概率分布直方图。图4图5