演算法筆記 模擬退火

2021-08-25 11:32:17 字數 1093 閱讀 7286

模擬退火是一種隨機化演算法,常用於求函式極值。當乙個問題的方案數量極大(甚至是無窮的),我們一般有兩個選擇。

爬山演算法每次在當前找到的最優方案

x x

附近尋找乙個新方案(一般隨機差值)。如果這個新的解 x′

' role="presentation">x′x

′更優,那麼轉移到 x′

x

′否則不變。

這種演算法對於單峰函式顯然可行(你都知道是單峰函式了為什麼不三分呢)

但是對於多數需要求解的函式中,爬山演算法很容易進入乙個區域性最優解,如下圖(最優解為

⇑ ⇑

,而爬山演算法可能找到的最優解為

根據爬山演算法的過程,我們發現:對於乙個當前最優解附近的非最優解,爬山演算法直接捨去了這個解。而很多情況下,我們需要去接受這個非最優解從而跳出這個區域性最優解,即為模擬退火演算法。

由於退火的規律引入了更多隨機因素,那麼我們得到最優解的概率會大大增加。於是我們可以去模擬這個過程,將目標函式作為能量函式。

模擬退火演算法描述

我們定義當前溫度為

t t

,新狀態與已知狀態(由已知狀態通過隨機的方式得到)之間的能量(值)差為 δe

' role="presentation">δeδ

e(δe

⩾0δ e⩾

0),則發生狀態轉移(修改最優解)的概率為 p(

δe)=

double calc(double xx,double yy)

if(resreturn res;

}void simulateanneal()

for(int i=1;i<=1000;++i)

}int main()

ansx/=n,ansy/=n,dis=calc(ansx,ansy);

simulateanneal();

printf("%.3lf %.3lf\n",ansx,ansy);

return

0;}

模擬退火演算法

w 模擬退火演算法的基本思想 將乙個優化問題比擬成乙個金屬物體,將優化問題的目標函式比擬成物體的能量,問題的解比擬成物體的狀態,問題的最優解比擬成能量最低的狀態,然後模擬金屬物體的退火過程,從乙個足夠高的溫度開始,逐漸降低溫度,使物體分子從高能量狀態緩慢的過渡到低能量狀態,直至獲得能量最小的理想狀態...

模擬退火演算法

一些求解極值的問題不能通過函式特性直接求解,只能暴力列舉,但是單純的列舉效率不高,通過模擬退火演算法可以高效的找到答案。學習好博文 最小圓覆蓋 hdu 3007 buried memory 大意 給出一些點,求出能覆蓋他們的最小的圓。輸出圓心和半徑 include include include i...

模擬退火演算法

1.模擬退火演算法認識 爬山演算法也是乙個用來求解最優化問題的演算法,每次都向著當前上公升最快的方向往上爬,但是初始化不同可能 會得到不同的區域性最優值,模擬退火演算法就可能跳出這種區域性最優解的限制。模擬退火演算法是模擬熱力學系統 中的退火過程。在退火過程中是將目標函式作為能量函式。大致過程如下 ...