模擬退火演算法
1.概念
介紹模擬退火前,請先了解爬山演算法。
因為模擬退火演算法是爬山演算法的改進版,
它在爬山演算法的基礎上引入了隨機化。
爬山演算法是完完全全的貪心法,
有可能只能搜尋到區域性的最優值。
模擬退火其實也是一種貪心演算法,
但是它的搜尋過程引入了隨機因素。
模擬退火演算法以一定的概率來接受一個比當前解要差的解,
因此有可能會跳出這個區域性的最優解,達到全域性的最優解。
2.主要思想
模擬退火演算法來源於固體退火原理,
將固體加溫至充分高,再讓其徐徐冷卻,
加溫時,固體內部粒子隨溫升變為無序狀,內能增大,
而徐徐冷卻時粒子漸趨有序,在每個溫度都達到平衡態,
最後在常溫時達到基態,內能減為最小。
從描述上看退火能夠使固體獲得內能的最小值,
這裡用模擬退火演算法來解決問題時,
該演算法通過模擬固體的退火過程,
目的是期望獲得問題的最小值作為最優解,
如果期望獲得是最大值,
等價為將目標函式乘以-1後再求解最小值,
得到的最小值乘以-1即為所求最大值。
所以模擬退火演算法和爬山演算法一樣都可以獲得問題的最優解,
而且求解問題的最大值或者最小值其實是等價的。
3.演算法步驟
- 隨機選擇一個退火的狀態作為起點S;
- 每次拿相鄰點N與當前點S進行比對;
- 如果N<S,則取N作為退火的當前狀態;
- 如果N>S,則以一定的概率P(dE)接受該狀態;
- 重複第2、3步或者第2、4步,直至概率P(dE)隨著時間推移逐漸降低,最後變為0;
- 重複第2、3步(由於P(dE)=0不可能進入第4步),直至該點的鄰近點中不再有比其小的點;
- 選擇該點作為退火的最終狀態,認為其內能最小,作為該演算法獲得的最優解。
概率P(dE)就是模擬退火演算法的核心,
其物理原理如下:
根據熱力學的原理,在溫度為T時,
出現能量差為dE的降溫的概率為P(dE),表示為:
P(dE) = exp( dE/(kT) )
其中k是一個常數,exp表示自然指數,且dE<0。
公式解讀:
溫度越高,出現一次能量差為dE的降溫的概率就越大;
溫度越低,則出現降溫的概率就越小。
又由於dE總是小於0(退火過程能量下降),
因此dE/kT < 0 ,所以P(dE)的函式取值範圍是(0,1) 。
總之隨著溫度T的降低,P(dE)會逐漸降低。
4.特點
模擬退火演算法具有跳出區域性最優陷阱的能力,
很好的解決了爬山演算法的侷限性。
大量的模擬實驗表明,在有限的時間和處理效能內,
模擬退火演算法在求解這些問題時能產生令人滿意的近似最優解。