1. 程式人生 > >蒙特卡羅方法(Monte Carlo method)淺入

蒙特卡羅方法(Monte Carlo method)淺入

這裡寫圖片描述

蒙特卡羅方法概述

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

蒙特卡羅方法的提出

蒙特卡羅方法於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法計算的可靠指標相比,結果更為精確,並且由於思路簡單易於編制程式。 

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

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

蒙特卡羅演算法表示取樣越多,越近似最優解。舉個例子,假如筐裡有100個蘋果,讓我每次閉眼拿1個,挑出最大的。於是我隨機拿1個,再隨機拿1個跟它比,留下大的,再隨機拿1個……我每拿一次,留下的蘋果都至少不比上次的小。拿的次數越多,挑出的蘋果就越大,但我除非拿100次,否則無法肯定挑出了最大的。這個挑蘋果的演算法,就屬於蒙特卡羅演算法。告訴我們樣本容量足夠大,則最接近所要求解的概率。 

蒙特卡羅方法的工作過程

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

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

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

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

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

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

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

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

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

    若新的分子構型能量低於原分子構型的能量,則接受新的構型,使用這個構型重複再做下一次迭代。 

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

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

  蒙特卡羅方法是以概率統計原理為基礎,模擬事物的形成過程,以達到認識事物特徵及其變化規律的方法。這種方法的前提假設是不確定性引數可以用概率分佈來描述。蒙特卡羅方法實施步驟:

  1、通過敏感性分析,確定隨機變數;

  2、構造隨機變數的概率分佈模型;

  3、為各輸入隨機變數抽取隨機數;

  4、將抽得的隨機數轉化為各輸入隨機變數的抽樣值;

  5、將抽樣值組成一組專案評價基礎資料;

  6、根據基礎資料計算出評價指標值;

  7、整理模擬結果所得評價指標的期望值、方差、標準差和它的概率分佈及累計概率,繪製累計概率分佈圖,計算專案可行或不可行的概率。
  

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

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

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

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