2011-09-19 102 views

回答

16

根據我的經驗,「蒙特卡羅」是一個嚴重超載的術語。人們似乎將它用於任何使用隨機數生成器的技術(全局優化,場景分析(Google「Excel蒙特卡洛模擬」),隨機集成(每個人都用來演示MC的the Pi calculation)。我相信,因爲您提到了演化算法在你的問題中,你是在談論蒙特卡羅技術的數學優化:你有一些適應函數與幾個輸入參數,你想最大限度地減少(或最大化)該函數。

如果你的功能表現良好(無論您開始使用哪種輸入,您都會得到一個單一的全局最小值),那麼您最好使用確定性最小化技術,如共軛梯度法。許多機器學習分類技術涉及找到最小化最小參數廣場超平面相對於訓練集的錯誤。在這種情況下,正在被最小化的函數在n維空間中是一個平滑的,表現良好的parabaloid。計算坡度並向下滾動。十分簡單。

但是,如果您的輸入參數是離散的(或者如果您的適應度函數具有不連續性),則不再可能精確計算梯度。如果使用一個或多個變量的表格數據計算適應度函數(如果變量X小於0.5,則使用此表或其他表使用該表),則可能發生這種情況。或者,您可能有一個從NASA獲得的程序,由20個由不同團隊編寫的模塊組成,這些團隊是作爲批處理作業運行的。你提供它的輸入和它吐出一個數字(想想黑盒子)。根據你開始的輸入參數,你可能會以最小的錯誤結束。全局優化技術試圖解決這些類型的問題。

演化算法形成一類global optimization技術。全局優化技術通常涉及某種「爬山」(接受具有更高(更差)適應度函數的配置)。這種爬山通常涉及一些隨機性/隨機性/蒙特卡羅性。一般來說,這些技術在更早的時候更可能接受較不理想的配置,並且隨着優化的進行,它們不太可能接受劣勢配置。演化算法鬆散地基於演化類比。模擬退火基於對金屬退火的類比。粒子羣技術也受到生物系統的啓發。在所有情況下,您都應該將結果與簡單的隨機(又名「monte carlo」)配置抽樣進行比較......這通常會產生相同的結果。

我的建議是開始使用確定性的基於梯度的技術,因爲他們通常需要比隨機/蒙特卡羅技術少得多的功能評估。當你聽到蹄子的步驟時,認爲馬不是斑馬。從幾個不同的起點運行優化,除非你處理的是一個特別討厭的問題,否則最終應該大致相同。如果沒有,那麼你可能有斑馬,應該考慮使用全局優化方法。

+1

我像你的答案,但似乎不完整。你談到了演化算法是如何工作的,但沒有明確地討論它們最適合的問題。請更詳細地討論蒙特卡羅方法。 – Gili

+0

「人們似乎使用它(蒙特卡羅)的任何技術,使用隨機數字發生器」。這是一個有效的定義嗎?或者你是否暗示蒙特卡羅意味着別的什麼? – Gili

+4

@Gili爲了引用您所鏈接的維基百科文章,「蒙特卡洛方法(或蒙特卡羅實驗)是一類依賴重複隨機採樣計算其結果的計算算法。」我的觀點很簡單,就是MC描述了一個CLASS算法。在全局優化的情況下,演化算法是許多蒙特卡洛(又名隨機)優化方法之一。 – Frank

3

我想蒙特卡洛方法是這些方法的總稱,其中 使用隨機數來解決優化問題。在這種方式下,即使進化算法是一種蒙特卡羅方法,如果他們使用隨機數(事實上他們這樣做)。

其它蒙特卡洛方法有:大都市,旺 - 朗道,並行退火等

OTOH,進化方法使用「技術」從自然界借用如 突變,交叉等

+0

+1好答案,但弗蘭克的更完整。 – Gili