蒙特卡羅方法

蒙特卡羅方法概述
  蒙特卡羅方法又稱統計模擬法、隨機抽樣技術,是一種隨機模擬方法,以概率和統計理論方法爲基礎的一種計算方法,是使用隨機數(或更常見的僞隨機數)來解決很多計算問題的方法。將所求解的問題同一定的概率模型相聯系,用電子計算機實現統計模擬抽樣,以獲得問題的近似解。爲象徵性地表明這一方法的概率統計特徵,故借用賭城蒙特卡羅命名。
蒙特卡羅方法的提出
  蒙特卡羅方法於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。
  tp://wiki.mbalib.com/w/images/c/c7/%E8%92%99%E7%89%B9%E5%8D%A1%E7%BD%97%E6%96%B9%E6%B3%95.jpg" alt="蒙特卡羅模型(Monte Carlo method)" width="433" height="201" longdesc="/wiki/Image:%E8%92%99%E7%89%B9%E5%8D%A1%E7%BD%97%E6%96%B9%E6%B3%95.jpg">
  從表中數據可以看到,一直到公元20世紀初期,盡管實驗次數數以千計,利用蒙特卡羅方法所得到的圓周率∏值,還是達不到公元5世紀祖衝之的推算精度。這可能是傳統蒙特卡羅方法長期得不到推廣的主要原因。
  計算機技術的發展,使得蒙特卡羅方法在最近10年得到快速的普及。現代的蒙特卡羅方法,已經不必親自動手做實驗,而是借助計算機的高速運轉能力,使得原本費時費力的實驗過程,變成了快速和輕而易舉的事情。它不但用於解決許多復雜的科學方面的問題,也被項目管理人員經常使用。
  借助計算機技術,蒙特卡羅方法實現了兩大優點:
  一是簡單,省卻了繁復的數學報導和演算過程,使得一般人也能夠理解和掌握;
  二是快速。簡單和快速,是蒙特卡羅方法在現代項目管理中獲得應用的技術基礎。
  蒙特卡羅方法有很強的適應性,問題的幾何形狀的復雜性對它的影響不大。該方法的收斂性是指概率意義下的收斂,因此問題維數的增加不會影響它的收斂速度,而且存貯單元也很省,這些是用該方法處理大型復雜問題時的優勢。因此,隨着電子計算機的發展和科學技術問題的日趨復雜,蒙特卡羅方法的應用也越來越廣泛。它不僅較好地解決了多重積分計算、微分方程求解、積分方程求解、特徵值計算和非线性方程組求解等高難度和復雜的數學計算問題,而且在統計物理、核物理、真空技術、系統科學 、信息科學 、公用事業、地質、醫學,可靠性及計算機科學等廣泛的領域都得到成功的應用。
項目管理中蒙特卡羅模擬方法的一般步驟
  項目管理中蒙特卡羅模擬方法的一般步驟是:
  1、對每一項活動,輸入最小、最大和最可能估計數據,並爲其選擇一種合適的先驗分布模型;
  2、計算機根據上述輸入,利用給定的某種規則,快速實施充分大量的隨機抽樣
  3、對隨機抽樣的數據進行必要的數學計算,求出結果;
  4、對求出的結果進行統計學處理,求出最小值、最大值以及數學期望值和單位標準偏差
  5、根據求出的統計學處理數據,讓計算機自動生成概率分布曲线和累積概率曲线(通常是基於正態分布概率累積S曲线);
  6、依據累積概率曲线進行項目風險分析。
非權重蒙特卡羅積分
  非權重蒙特卡羅積分,也稱確定性抽樣,是對被積函數變量區間進行隨機均勻抽樣,然後對被抽樣點的函數值求平均,從而可以得到函數積分的近似值。此種方法的正確性是基於概率論的中心極限定理。當抽樣點數爲m時,使用此種方法所得近似解的統計誤差恆爲 1除於根號M,不隨積分維數的改變而改變。因此當積分維度較高時,蒙特卡羅方法相對於其他數值解法更優。
蒙特卡羅方法案例分析 ">編輯] 案例一:蒙特卡羅模型在投資項目決策中的开發應用
  一、問題的提出
  隨着社會主義市場經濟體制的逐步完善、經濟水平的逐步提高,我國社會經濟活動日趨復雜,越來越多變,其影響越來越廣泛,越來越深遠,不確定性逐漸成爲企業決策時所面臨的主要難題。因此,如何在不確定條件下做出投資決策,就成爲目前理論和實踐工作者們廣泛關注的一個核心課題。
  傳統的投資評價理論——以現值法(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所示。
  表 各變量對應概率密度函數表

  本案例用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) 3 (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)

  表 結果輸出表(2)

  表 結果輸出表(3)

  所得結果如下:
  表 現值模擬計算結果表

  表 現值概率分布統計表

  tp://wiki.mbalib.com/w/images/b/b4/%E5%87%80%E7%8E%B0%E5%80%BC%28NPV%29_%E7%9B%B4%E6%96%B9%E5%9B%BE.jpg" alt="Image:現值(NPV) 直方圖.jpg" width="450" height="254" longdesc="/wiki/Image:%E5%87%80%E7%8E%B0%E5%80%BC%28NPV%29_%E7%9B%B4%E6%96%B9%E5%9B%BE.jpg">
  tp://wiki.mbalib.com/w/images/f/fb/%E7%B4%AF%E8%AE%A1%E6%A6%82%E7%8E%87%E6%9B%B2%E7%BA%BF%E5%9B%BE.jpg" alt="Image:累計概率线圖.jpg" width="450" height="290" longdesc="/wiki/Image:%E7%B4%AF%E8%AE%A1%E6%A6%82%E7%8E%87%E6%9B%B2%E7%BA%BF%E5%9B%BE.jpg">
  從分析結果得出,雖然此項目未來的不確定性很大,但由圖可知,此氣田开發項目服從正態分布,模擬5 000次的結果是現值爲負的概率爲零,並且項目期望現值爲952113 萬元,說明項目值得开發。
  由以上的案例分析可知,基於蒙特卡羅模擬風險分析,對於工程實際應用具有較強的參考價值。隨機模擬5 000 次,如果僅靠人的大腦進行計算,這在現實世界中是不可能的,但考慮到系統決策支持功能, 算法設計爲由使用者自己設計方案, 採用人機交互, 這樣可以發揮使用者的經驗判斷;系統實現模擬運算——系統對每一個設定的投資項目投資、壽命期、殘值以及各年的收入支出,以及應付稅金稅率項目資本成本等隨機變量及他們的概率密度函數,通過蒙特卡羅模擬方法,得出了項目在不同概率發生的情況下現值模擬計算結果。爲人們解決不確定性項目的決策提供了簡單的方法,節約了人們的工作量和時間。但是利用蒙特卡羅模型分析問題時,收集數據是非常關鍵的。
參考文獻
  1. ↑ 蒙特卡羅模型在投資項目決策中的开發應用.科技和產業,2009,9(11):119-123


熱門資訊更多