蒙地卡羅模擬是一套演算法,在輸入隨機變動時,可用於預測過程的機率結果。該演算法是一種隨機模擬,又稱為蒙地卡羅方法、蒙地卡羅分析或蒙地卡羅實驗。
為了瞭解潛在結果的分佈情況,蒙地卡羅模擬會執行大量試驗,每項試驗使用不同的隨機輸入組合。接著分析從每項試驗所得出的模擬結果,以判斷不確定變數的機率分佈。
蒙地卡羅模擬的概念源自於曼哈頓計畫 (Manhattan Project) 和後續的核武開發計畫。1946 年,Stanislaw Ulam 和 John Von Neumann 嘗試確定中子與原子核碰撞時釋放能量的機率分佈。有位同事提議使用「蒙地卡羅」這名稱,因為他的叔叔曾在摩納哥的蒙地卡羅賭場賭博,輸入變數的隨機選取讓他們聯想到賭場輪盤的隨機性。
大多數過程都具確定性,因為在提出任一輸入組合時,輸出結果是已知的。舉例來說,如果使用已知溫度的已知水量,加上已知的熱量,便能計算出溫度升高多少。但是,若是以隨機輸入且過程本身複雜時,在這項較為複雜的系統中,結果就會難以預測。工程師、科學家、數學家和經濟學家都使用蒙地卡羅模擬,將隨機性納入此類系統的結果預測中。
瞭解這項強大模擬工具的一個好方法就是直接透過一個簡單的範例加。有個典型的題目是,預測四枚硬幣要擲多少次,才會出現零、一、二、三或四次正面。
輸入變數是硬幣數,我們想預測的輸出變數,則是各種正面組合的機率。這個簡單的 Excel 蒙地卡羅模擬,使用隨機數函數「 rand()」 預測硬幣正反面的結果:當隨機數小於 0.5 時,將儲存格設為一 (表示正面),大於 0.5 時則設為零 (表示反面)。此模型由一個表格組成,其中每枚硬幣對應一個欄位,每次試驗對應一列,並設有一個總和欄位,用於計算擲出正面的硬幣數量。為了計算機率,此模型使用「 countif()」 計算各種可能性的發生次數,然後將其除以試驗次數。
使用 Microsoft Excel 進行簡單的四枚硬幣蒙地卡羅模擬。結果顯示在上方圖片,使用的公式則顯示在下方圖片。每次重新整理試算表時,都會計算出新的結果。
蒙地卡羅模擬使用演算法,透過從大量隨機輸入進行取樣以解決問題。此工具的使用者必須定義打算模擬的流程、識別輸入和輸出值、執行模擬並審核結果。
以下是具體步驟:
開始模擬前,先定義欲建模的流程。這可以是一個物理問題、股票市場、特定區域的天氣或生物學過程。
下一步是擷取所有自變數。這些變數代表該過程的各項特性。它們也必須是在一旦改變時,就會影響該流程行為的特性。自變數也稱為輸入變數、輸入值,或簡稱為輸入。
在此步驟中,研究人員亦需針對每個自變數,設定其最小值與最大值,並定義該值範圍內的分佈或變異性。分佈有多種類型。以下是最常見的項目:
第三步是定義流程的應變數。這些是可測量的特性,會在輸入變數出現變動時跟著變化。應變數同時應是對人們而言至關重要的指標。最小化或最大化應變數是最佳化研究的典型目標。或者,團隊會利用可能的結果做出決策。應變數也稱為輸出變數、輸出值或結果值。
關鍵步驟是將流程準確轉換為電腦演算法。這可以是一個簡單的方程式、一個查找表,或以數值模型呈現的較複雜表示方式。模擬應盡可能快速高效執行。
蒙地卡羅模擬的本質是透過模擬模型執行大量試驗。演算法使用每個輸入的值和分佈範圍,為每個輸入變數建立隨機值。接著,該工具會擷取每次試驗的不同結果。
受測流程決定了為取得輸出值準確分佈所需的模擬執行次數。有些問題需要執行 1,000 到 10,000 次。但有些流程可能需要執行 100,000 次以上的試驗。
收集到所有輸出值後,下一步是套用統計方法以估計每個結果的發生機率。如果輸出變數為常態分佈,其機率分佈可由平均值與標準差表示。在簡單情境下,特定值的機率是將特定結果計數除以試驗次數計算得出。
對於較複雜的系統和應用領域,尤其是訓練機器學習模型,研究人員會使用貝葉斯分析。
各行各業會使用蒙地卡羅模擬進行機率建模。以下是一些最常見的應用領域:
工程師時常需要設計缺乏歷史資料,或無法以簡單確定性模型描述的複雜系統,所以會在多種應用領域中採取蒙地卡羅方法。除了設計外,他們也將其用於專案管理,針對專案規劃進行敏感性分析和風險管理。最常見的用途是複雜系統的數值模擬,以瞭解產品的統計行為,以及輸入與輸出變數之間的關係。其中一個最佳範例是中子傳輸,工程師會計算中子如何穿過核反應爐中的結構元件,並與其發生交互作用。
從地球上開採自然資源,涉及在許多未知因素下,預測專案的經濟可行性。業界使用蒙地卡羅模擬協助預測儲存層規模、孔隙度、開採資源品質,甚至該商品的未來價格。其中一項較為常見的用途,是利用機率分佈,按照潛在油田的地質條件建模,包括不同岩層的組成、孔隙度與厚度,以及各種條件組合下的油藏分佈。人們接著會執行蒙地卡羅模擬,以取得潛在油藏含量分佈。他們不是預測特定位置的確切油藏量,而是計算石油的機率分佈。
金融市場的複雜度和隨機性,在世上鮮少有事物可以相提並論。經濟學家和財務分析師會使用蒙地卡羅方法,以預測股價、波動性、利率、消費價格和其他關鍵經濟變數。商品交易商會使用蒙地卡羅方法,針對持有商品隨著時間的價格波動進行壓力測試。他們將價格對數十種不同市場影響變化的敏感度進行建模,然後隨機選取隨著時間發生的事件,進而取得每日可能價格的分佈。這樣便能取得其投資組合的風險值 (VAR)。
蒙地卡羅方法最初是為核子物理學所開發,至今仍是反應爐、放射治療和偵測器等系統的重要輻射建模工具。化學家將其作為運算化學與統計力學的基礎,用於建立化學反應模型或開發新分子,因為他們所研究的機制,無法透過解析方法進行計算。在生物技術領域也不例外,研究人員利用此方法解讀藥物試驗結果、評估患者反應率,並據此設計新藥。
在新藥開發領域中,蒙地卡羅的常見用途是模擬分子嵌合。化學家想要找到能嵌入蛋白質 (鎖) 的小分子 (鑰匙)。如果分子能嵌入蛋白質,就可以抑制不必要的化學反應。與其對小分子的所有形狀與旋轉逐一建模,取而代之的是對兩者隨機分佈取樣,找出能量最低的組合,供研究人員進一步分析。
執行蒙地卡羅模擬通常使用三種工具:數學軟體、自訂程式和模擬軟體。
如下所述,三者各有其優點和挑戰。
Microsoft Excel、Google 試算表、Mathematica 和 MATLAB 等軟體工具的功能都很強大,可執行計算和處理輸入和輸出變數的統計分佈。試算表工具缺乏蒙地卡羅專用功能,使用者必須自行從頭建立模擬。專門的數學工具,特別是具備強大統計模組的工具,更容易建立隨機變數、自動執行試驗,並對結果進行機率分析。這種等級的工具所面臨的最大挑戰是建立準確的流程模型。
若能透過程式語言中的子程序描述流程時,自訂程式會是理想的工具類型。大多數語言都有函式庫以支援任務,此類任務例如為隨機變數及為處理據此產生的應變數,建立輸入分佈。這種方式的缺點在於使用者必須為每種應用建立自訂程式,包含研究過程的模型。像 Python 的程式設計平台有助於簡化此過程,但在設定並啟動模擬方面,仍需要耗費一些時間。
模擬軟體是功能最強大且在實務應用中最為常見的工具組合。這些程式可為所研究的過程建模,通常本身也搭載內建工具,能夠簡化蒙地卡羅的設定流程,並自動化執行試驗案例。
Ansys Optics 套件就是一個不錯的範例:Ansys Zemax OpticStudio 光學系統設計和分析軟體,可用於光學系統的蒙地卡羅模擬,至於 Ansys Lumerical 軟體,則用於模擬光子學的高度隨機行為。兩種工具都能協助使用者建立支援蒙地卡羅模擬的參數模型。
針對 Ansys Lumerical 軟體的最佳化介面
Ansys 旗艦模擬軟體工具的情況也是如此:Ansys Mechanical 結構有限元素分析軟體、Ansys LS-DYNA/LS-Opt 非線性動力學結構模擬軟體、Ansys Fluent 流體模擬軟體、Ansys Maxwell 先進電磁場求解器,以及 Ansys HFSS 高頻 3D 電磁模擬軟體。這些工具各自專注於模擬特定的物理子領域。然而,它們都支援參數化輸入和輸出變數,提供蒙地卡羅模擬工具,並支援統計後處理。
如果特定模擬平台的內建工具不足,使用者可以將其整合至最佳化工具中,例如 Ansys optiSLang 流程整合與設計最佳化軟體。這款通用的最佳化與流程整合工具具備先天優勢,可執行蒙地卡羅模擬,並同時與Ansys (現已與 Synopsys 合而為一) 和非 Ansys 模擬工具相互整合,提供單一自動化平台。它也運用功能強大的 Python 介面,將程式連接至其他軟體或 Python 例行程式。
Ansys Zemax OpticStudio 光學系統設計和分析軟體的蒙地卡羅公差介面
研究人員和數學家長期以來將蒙地卡羅模擬用於多個不同 AI 應用領域。以下是幾個範例:
用於模擬的 Ansys SimAI 雲端 AI 平台,是現代 AI 工具的典型範例,其運用蒙地卡羅模擬產生模型所需的訓練資料。
如果您面臨工程挑戰,我們的團隊將隨時為您提供協助。憑藉豐富的經驗和對創新的承諾,我們邀請您與我們聯絡。讓我們共同合作,將您的工程障礙轉化為成長和成功的機會。立即與我們聯絡,開始對話。