香港公司

Monte Carlo Simulation

9547 171

蒙特卡羅方法(Monte Carlo method)

目錄

  • 1 蒙特卡羅方法概述
  • 2 蒙特卡羅方法的提出
  • 3 蒙特卡羅方法的基本思想
  • 4 蒙特卡羅方法的基本原理
  • 5 蒙特卡羅方法在數學中的應用
  • 6 蒙特卡羅方法的應用領域
  • 7 蒙特卡羅方法的工作過程
  • 8 蒙特卡羅方法分子模擬計算的步驟
  • 9 蒙特卡羅模型的發展運用
  • 10 項目管理中蒙特卡羅模擬方法的一般步驟
  • 11 非權重蒙特卡羅積分
  • 12 蒙特卡羅方法案例分析
    • 12.1 案例一:蒙特卡羅模型在投資項目決策中的開發應用[1]
  • 13 參考文獻

蒙特卡羅方法概述

  蒙特卡羅方法又稱統計模擬法、隨機抽樣技術,是一種隨機模擬方法,以概率和統計理論方法為基礎的一種計算方法,是使用隨機數(或更常見的偽隨機數)來解決很多計算問題的方法。將所求解的問題同一定的概率模型相聯繫,用電子電腦實現統計模擬或抽樣,以獲得問題的近似解。為象徵性地表明這一方法的概率統計特征,故借用賭城蒙特卡羅命名。

蒙特卡羅方法的提出

  蒙特卡羅方法於20世紀40年代美國在第二次世界大戰中研製原子彈的“曼哈頓計劃”計劃的成員S.M.烏拉姆和J.馮·諾伊曼首先提出。數學家馮·諾伊曼用馳名世界的賭城—摩納哥的Monte Carlo—來命名這種方法,為它蒙上了一層神秘色彩。在這之前,蒙特卡羅方法就已經存在。1777年,法國Buffon提出用投針實驗的方法求圓周率∏。這被認為是蒙特卡羅方法的起源。

蒙特卡羅方法的基本思想

  Monte Carlo方法的基本思想很早以前就被人們所發現和利用。早在17世紀,人們就知道用事件發生的“頻率”來決定事件的“概率”。19世紀人們用投針試驗的方法來決定圓周率π。本世紀40年代電子電腦的出現,特別是近年來高速電子電腦的出現,使得用數學方法在電腦上大量、快速地模擬這樣的試驗成為可能。

  考慮平面上的一個邊長為1的正方形及其內部的一個形狀不規則的“圖形”,如何求出這個“圖形”的面積呢?Monte Carlo方法是這樣一種“隨機化”的方法:向該正方形“隨機地”投擲N個點,有M個點落於“圖形”內,則該“圖形”的面積近似為M/N。 可用民意測驗來作一個不嚴格的比喻。民意測驗的人不是徵詢每一個登記選民的意見,而是通過對選民進行小規模的抽樣調查來確定可能的優勝者。其基本思想是一樣的。

  科技計算中的問題比這要複雜得多。比如金融衍生產品(期權、期貨、掉期等)的定價及交易風險估算,問題的維數(即變數的個數)可能高達數百甚至數千。對這類問題,難度隨維數的增加呈指數增長,這就是所謂的“維數的災難”(Curse of Dimensionality),傳統的數值方法難以對付(即使使用速度最快的電腦)。Monte Carlo方法能很好地用來對付維數的災難,因為該方法的計算複雜性不再依賴於維數。以前那些本來是無法計算的問題現在也能夠計算量。為提高方法的效率,科學家們提出了許多所謂的“方差縮減”技巧。

  另一類形式與Monte Carlo方法相似,但理論基礎不同的方法—“擬蒙特卡羅方法”(Quasi-Monte Carlo方法)—近年來也獲得迅速發展。我國數學家華羅庚、王元提出的“華—王”方法即是其中的一例。這種方法的基本思想是“用確定性的超均勻分佈序列(數學上稱為Low Discrepancy Sequences)代替Monte Carlo方法中的隨機數序列。對某些問題該方法的實際速度一般可比Monte Carlo方法提出高數百倍,並可計算精確度。

蒙特卡羅方法的基本原理

  由概率定義知,某事件的概率可以用大量試驗中該事件發生的頻率來估算,當樣本容量足夠大時,可以認為該事件的發生頻率即為其概率。因此,可以先對影響其可靠度的隨機變數進行大量的隨機抽樣,然後把這些抽樣值一組一組地代入功能函數式,確定結構是否失效,最後從中求得結構的失效概率。蒙特卡羅法正是基於此思路進行分析的。

  設有統計獨立的隨機變數Xi(i=1,2,3,…,k),其對應的概率密度函數分別為fx1,fx2,…,fxk,功能函數式為Z=g(x1,x2,…,xk)。

  首先根據各隨機變數的相應分佈,產生N組隨機數x1,x2,…,xk值,計算功能函數值 Zi=g(x1,x2,…,xk)(i=1,2,…,N),若其中有L組隨機數對應的功能函數值Zi≤0,則當N→∞時,根據伯努利大數定理

及正態隨機變數的特性有:結構失效概率,可靠指標。

  從蒙特卡羅方法的思路可看出,該方法迴避了結構可靠度分析中的數學困難,不管狀態函數是否非線性、隨機變數是否非正態,只要模擬的次數足夠多,就可得到一個比較精確的失效概率和可靠度指標。特別在岩土體分析中,變異繫數往往較大,與JC法計算的可靠指標相比,結果更為精確,並且由於思路簡單易於編製程式。

蒙特卡羅方法在數學中的應用

  通常蒙特·卡羅方法通過構造符合一定規則的隨機數來解決數學上的各種問題。對於那些由於計算過於複雜而難以得到解析解或者根本沒有解析解的問題,蒙特·卡羅方法是一種有效的求出數值解的方法。一般蒙特·卡羅方法在數學中最常見的應用就是蒙特·卡羅積分。

蒙特卡羅方法的應用領域

  蒙特卡羅方法在金融工程學,巨集觀經濟學,生物醫學,計算物理學(如粒子輸運計算、量子熱力學計算、空氣動力學計算)等領域應用廣泛。

蒙特卡羅方法的工作過程

  在解決實際問題的時候應用蒙特·卡羅方法主要有兩部分工作:

  1. 用蒙特·卡羅方法模擬某一過程時,需要產生各種概率分佈的隨機變數。

  2. 用統計方法把模型的數字特征估計出來,從而得到實際問題的數值解。

蒙特卡羅方法分子模擬計算的步驟

  使用蒙特·卡羅方法進行分子模擬計算是按照以下步驟進行的:

  1. 使用隨機數發生器產生一個隨機的分子構型。

  2. 對此分子構型的其中粒子坐標做無規則的改變,產生一個新的分子構型。

  3. 計算新的分子構型的能量。

  4. 比較新的分子構型於改變前的分子構型的能量變化,判斷是否接受該構型。

  • 若新的分子構型能量低於原分子構型的能量,則接受新的構型,使用這個構型重覆再做下一次迭代。
  • 若新的分子構型能量高於原分子構型的能量,則計算玻爾茲曼因數,並產生一個隨機數。
    • 若這個隨機數大於所計算出的玻爾茲曼因數,則放棄這個構型,重新計算。
    • 若這個隨機數小於所計算出的玻爾茲曼因數,則接受這個構型,使用這個構型重覆再做下一次迭代。

  5. 如此進行迭代計算,直至最後搜索出低於所給能量條件的分子構型結束。

蒙特卡羅模型的發展運用

  從理論上來說,蒙特卡羅方法需要大量的實驗。實驗次數越多,所得到的結果才越精確。以上Buffon的投針實驗為例、歷史上的記錄如下表1。

  蒙特卡罗模型(Monte Carlo method)

  從表中數據可以看到,一直到公元20世紀初期,儘管實驗次數數以千計,利用蒙特卡羅方法所得到的圓周率∏值,還是達不到公元5世紀祖沖之的推算精度。這可能是傳統蒙特卡羅方法長期得不到推廣的主要原因。

  電腦技術的發展,使得蒙特卡羅方法在最近10年得到快速的普及。現代的蒙特卡羅方法,已經不必親自動手做實驗,而是藉助電腦的高速運轉能力,使得原本費時費力的實驗過程,變成了快速和輕而易舉的事情。它不但用於解決許多複雜的科學方面的問題,也被項目管理人員經常使用。

  藉助電腦技術,蒙特卡羅方法實現了兩大優點:

  一是簡單,省卻了繁複的數學報導和演算過程,使得一般人也能夠理解和掌握;

  二是快速。簡單和快速,是蒙特卡羅方法在現代項目管理中獲得應用的技術基礎。

  蒙特卡羅方法有很強的適應性,問題的幾何形狀的複雜性對它的影響不大。該方法的收斂性是指概率意義下的收斂,因此問題維數的增加不會影響它的收斂速度,而且存貯單元也很省,這些是用該方法處理大型複雜問題時的優勢。因此,隨著電子電腦的發展和科學技術問題的日趨複雜,蒙特卡羅方法的應用也越來越廣泛。它不僅較好地解決了多重積分計算、微分方程求解、積分方程求解、特征值計算和非線性方程組求解等高難度和複雜的數學計算問題,而且在統計物理、核物理、真空技術、系統科學 、信息科學 、公用事業、地質、醫學,可靠性及電腦科學等廣泛的領域都得到成功的應用。

項目管理中蒙特卡羅模擬方法的一般步驟

  項目管理中蒙特卡羅模擬方法的一般步驟是:

  1、對每一項活動,輸入最小、最大和最可能估計數據,併為其選擇一種合適的先驗分佈模型;

  2、電腦根據上述輸入,利用給定的某種規則,快速實施充分大量的隨機抽樣;

  3、對隨機抽樣的數據進行必要的數學計算,求出結果;

  4、對求出的結果進行統計學處理,求出最小值、最大值以及數學期望值和單位標準偏差;

  5、根據求出的統計學處理數據,讓電腦自動生成概率分佈曲線和累積概率曲線(通常是基於正態分佈的概率累積S曲線);

  6、依據累積概率曲線進行項目風險分析。

非權重蒙特卡羅積分

  非權重蒙特卡羅積分,也稱確定性抽樣,是對被積函數變數區間進行隨機均勻抽樣,然後對被抽樣點的函數值求平均,從而可以得到函數積分的近似值。此種方法的正確性是基於概率論的中心極限定理。當抽樣點數為m時,使用此種方法所得近似解的統計誤差恆為 1除於根號M,不隨積分維數的改變而改變。因此當積分維度較高時,蒙特卡羅方法相對於其他數值解法更優。

蒙特卡羅方法案例分析

案例一:蒙特卡羅模型在投資項目決策中的開發應用[1]

  一、問題的提出

  隨著社會主義市場經濟體制的逐步完善、經濟水平的逐步提高,我國社會經濟活動日趨複雜,越來越多變,其影響越來越廣泛,越來越深遠,不確定性逐漸成為企業決策時所面臨的主要難題。因此,如何在不確定條件下做出投資決策,就成為目前理論和實踐工作者們廣泛關註的一個核心課題。

  傳統的投資評價理論——以凈現值法(NPV) 為代表的投資決策分析方法,其根本缺陷在於它們是事先對未來的現金流量做出估計,並假設其為不變或靜態的狀況,無法衡量不確定因素的影響,不能體現遞延決策以應對所帶來的管理彈性。所以,在不確定環境下的投資,用凈現值法評估項目不能體現柔性投資安排決策所體現的價值,無助於項目在決策中迴避風險。在多變的市場環境中,不確定性與競爭者的反應使實際收入與預期收入有所出入, 所以凈現值法(NPV) 適用於常規項目,未來不確定性比較小的項目。

  為此理論界對未來投資環境不確定性大的項目提出了實物期權法,但在實踐中應用的還是比較少。實物期權法的應用對企業決策者的綜合素質要求比較高,對企業資源能力要求也比較高。但是實物期權法改變了我國管理者對戰略投資的思維方式。

  基於以上的分析,我們得出這樣的結論:傳統的投資決策方法對風險項目和不確定性項目的評價有較多不完善之處,有必要對其改進;實物期權法理論上解決了傳統決策方法對不確定性項目評價的不足,但其應用尚處於體系不成熟階段,在實踐中應用並不廣泛。至此,引入蒙特卡羅模型的理論和其分析方法,此方法特別適用於參數波動性大,且服從某一概率分佈的項目,例如地質勘察、氣田開發等項目。

  蒙特卡羅模型是利用電腦進行數值計算的一類特殊風格的方法, 它是把某一現實或抽象系統的某種特征或部分狀態, 用模擬模型的系統來代替或模仿, 使所求問題的解正好是模擬模型的參數或特征量, 再通過統計實驗, 求出模型參數或特征量的估計值, 得出所求問題的近似解。目前評價不確定和風險項目多用敏感性分析和概率分析,但計算上較為複雜,尤其各因素變化可能出現概率的確定比較困難。蒙特卡羅模型解決了這方面的問題,各種因素出現的概率全部由軟體自動給出,通過多次模擬,得出項目是否應該投資。該方法應用面廣, 適應性強。

  惠斯通(Weston) 對美國1 000 家大公司所作的統計表明: 在公司管理決策中, 採用隨機模擬方法的頻率占29 % 以上, 遠大於其他數學方法的使用頻率 。特別, 該方法演算法簡單, 但計算量大, 在模擬實際問題時, 要求所建模型必須反覆驗證,這就離不開電腦技術的幫助, 自然可利用任何一門高級語言來實現這種方法。通過一案例具體實現了基於Excel 的Monte Carlo 模擬系統, 由於Microsof tExcel 電子錶格軟體強大的數據分析功能和友好的界面設計能力, 使系統實現起來頗感輕鬆自如。

  二、理論和方法

  蒙特卡洛模擬早在四十年前就用於求解核物理方面的問題。當管理問題更為複雜時,傳統的數學方法就難以進行了。模擬是將一個真實事物模型化,然後對該模型做各種實驗,模擬也是一個通過實驗和糾正誤差來尋求最佳選擇的數值性求解的過程。模擬作為一種有效的數值處理方法, 計算量大。以前只是停留在理論探討上, 手工是無法完成的。在管理領域由於規律複雜隨機因素多, 很多問題難以用線性數學公式分析和解決, 用模擬則有效得多。在新式的電腦普及後, 用模擬技術來求解管理問題已成為可能。

  電腦模擬技術和其它方法相比有以下優點:

  1) 成本低、風險小, 在產品未投產, 實際生產未形成就可以對市場進行分析模擬, 極大地減少費用和風險。

  2) 環境條件要求低, 工作人員不需要高深的數學能力, 完全依靠電腦進行, 在硬體和軟體日益降價的情況下, 可以成為現實。

  3) 可信度高, 常用的統計推理方法需要大量歷史數據(如平均數法、最小二乘法) , 對無歷史資料的場合就無能為力(如新產品) , 而且精度低。

  模擬的最大特點是藉助一個隨機數來模模擬實的現實, 隨機數的產生則由電腦來產生。稱為偽隨機數。即:

  Rn = F (r - 1 , r - 2 ,……r - k)

  在以對象為中心的軟體中, EXCEL 有一個RANE()函數實現偽隨機數功能。RANE( )實際上是一個會自動產生偽隨機數的子程式。用產生的偽隨機數模擬市場購買行為, 得出產品銷售量, 在生產成本相對固定時進而推測出產品的利潤。此方法不用編製複雜的程式, 思路假設為, 作為系統內部是可以控制的, 即企業內部生產成本可以人為控制, 但系統外部因素是不可控制的(消費心理導致的消費行為) , 則生產與銷售就會產生矛盾。生產量小於銷售量, 造成開工不足資源浪費;生產量大於銷售量, 造成產品積壓, 資金占用, 同樣形成資源的浪費。最好生產量等於銷售量, 則資源浪費最小, 自然經濟效益就最高, 實際就是利潤最大化。如果能科學地測算出在什麼情況下利潤最大, 則這時的產量就是最佳產量, 成本也就最低。這就是市場作為導向, 以銷定產的公認市場經濟的準則。實際工作中, 很多產品的消費是具有隨機性的, 主要是一些需求彈性大、價格彈性大、價格低、與日常生活有關的中、小商品, 如副食品、日用消費品、玩具、輕工業產品。對企業而言利潤較高的產品。

  從以上分析可以看出, 蒙特卡洛模擬可以動態實現對產品利潤的預測, 從而對產品產量科學控制,實現資源優化, 是一種較好的決策支持方法。

  三、蒙特卡羅模型在Excel 表中的應用

  某氣田投資項目期投資、壽命期、殘值以及各年的收入、支出,以及應付稅金的稅率、項目的資本成本等都是獨立的隨機變數,他們的概率密度函數如表1所示。

  表 各變數對應概率密度函數表

ABCD
2概率對應的隨機數可能值
3投資Yo0.20450
40.520500
50.370550
6壽命N0.506
70.3507
80.2808
9殘值F0.25040
100.52550
110.257560
12稅率Te0.2045
130.52048
140.37051
15年收入R0.150700
160.315750
170.445800
180.1585850
19年支出C0.20100
200.420150
210.360200
220.190250
23資本成本i0.1010
240.21012
250.43014
260.27016
270.19018

  本案例用windowsXP 中的Excel2003 對該項目進行模擬如下:

  1) 在A32 單元格(投資Yo 模擬:隨機數) 輸入:= RANDBETWEEN (0 ,99) ;在B32 單元格(投資Yo模擬:投資) 輸入: = VLOO KUP (A32 , $C $3 : $D$5 ,2) ;

  2) 在C32 單元格(壽命N 模擬:隨機數) 輸入: =RANDBETWEEN (0 ,99) ;在D32 單元格(壽命N 模擬: 壽命) 輸入: = VLOO KUP ( C32 , $C $6 : $D$8 ,2) ;

  3) E32 ,G32 , I32 , K32 ,M32 單元格分別輸入: =RANDBETWEEN (0 , 99) ; F32 = VLOOPUP ( E32 ,$C $9 : $D $11 , 2) , H32 = VLOOPUP ( G32 , $C$12 : $D $14 ,2) ,J 32 = VLOO KUP ( I32 , $C $15 :$D $18 ,2) ,L32 = VLOO KUP ( K32 , $C $19 : $D$22 ,2) ,

  N32 = VLOO KUP(M32 , $C $23 : $D $27 ,2)

  4) O32 = (B32 - F32) / D32 , P32 = (J 32 - L32 -O32) * (1 - H32/ 100) + O32 ,Q32 = PV (N32/ 100 ,D32 , - P32) - B32 ;

  5) H3 = AVERA GE ( Q32 , Q5031 ) , H4 =STDEV (Q32 ,Q5031) ,H5 = MAX ( Q32 , Q5031 ) , H6 = MIN ( Q32 ,Q5031) ,H7 = H4/ H3 ,H8 = COUN TIF (Q32 :Q5031 ,“ < 0”) / COUN T(Q32 ,Q5031) 。

  在Excel 工具表中模擬5000次,結果輸出見下表 :

  表 結果輸出表(1)

ABCDEFGH
  投資Yo模擬壽命N模擬殘值F模擬稅率Te模擬
隨機數投資隨機數壽命隨機數殘值隨機數稅率
32174507875150245
333150084887606748
342250063797608851
359555070740508151
363150096820401245
37164501641506648
387955033687605148
39045097878601745
40355004362240545
41345070752508751
427855039669503048
43205003669060245
44965505692604048
455150036690602048
46585003961401145
47445079722402948
488355036640506248

  表 結果輸出表(2)

IJKLMN
年收入R模擬年支出C模擬資本成本i模擬
隨機數年收入隨機數年支出隨機數資本成本
321270088200410
3311700882005914
34370079200710
3568800201507716
3623750211505314
3798850732004014
3837750231509918
3972800922501612
4081800962504614
4132750171007416
4270800732001712
4339750782006814
4412700461509218
4579800752001512
4610700521505414
474580011008716
487580047150410

  表 結果輸出表(3)

OPQ
折舊Dt各年現金流量YtNPV
3275307175840.3314803
3376166667348.1885613672298
3464128571342.85711064.716528
3575374878.0912297
3655.71429364.742911141128559
3762.185714368.171498618844068
3873.3333335519883.9767691
3958.57143299.37141007.465496
4083.33333336.5689.9136332
4183.33333326717.7056104
4266.66667344964.3241193
438535218749.9748285
4457.14286347.64291040.798547
4564.28571276.428676115527004
4676.166667348.8785.2358848
4748.75335141105.87495
4857.5391.612001950194

  所得結果如下:

  表 凈現值模擬計算結果表

FGH
2凈現值模擬計算結果
3凈現值期望值952.13017
4凈現值標準差198.90501
5凈現值最大值1726.9833
6凈現值最小值405.54502
7變異繫數0.12089053
8凈現值為負的概率0

  表 凈現值概率分佈統計表

凈現值概率分佈統計
系統分組分佈區間概率累計概率
3003以下00
4003~400
5004~50.0036010036
6005~60.024401028
7006~70.0620109
8007~80.1322012222
9008~90.189801412
10009~100.1992016112
110010~110.162801774
120011~120.1162018902
130012~130.054801945
140013~140.0338019788
150014~150.013201992
160015~160.00501997
170016~170.0018019988
180017以上0.00121

  Image:净现值(NPV) 直方图.jpg

  Image:累计概率曲线图.jpg

  從分析結果得出,雖然此項目未來的不確定性很大,但由圖可知,此氣田開發項目服從正態分佈,模擬5 000次的結果是凈現值為負的概率為零,並且項目的期望凈現值為952113 萬元,說明項目值得開發。

  由以上的案例分析可知,基於蒙特卡羅模擬的風險分析,對於工程實際應用具有較強的參考價值。隨機模擬5 000 次,如果僅靠人的大腦進行計算,這在現實世界中是不可能的,但考慮到系統決策支持功能, 演算法設計為由使用者自己設計方案, 採用人機交互, 這樣可以發揮使用者的經驗判斷;系統實現模擬運算——系統對每一個設定的投資項目期投資、壽命期、殘值以及各年的收入、支出,以及應付稅金的稅率、項目的資本成本等隨機變數及他們的概率密度函數,通過蒙特卡羅模擬方法,得出了項目在不同概率發生的情況下凈現值模擬計算結果。為人們解決不確定性項目的決策提供了簡單的方法,節約了人們的工作量和時間。但是利用蒙特卡羅模型分析問題時,收集數據是非常關鍵的。

參考文獻

  1. ↑ 蒙特卡羅模型在投資項目決策中的開發應用[J].科技和產業,2009,9(11):119-123