1.演算法簡介
模擬退火演算法得益於材料的統計力學的研究成果。統計力學表明材料中粒子的不同結構對應於粒子的不同能量水平。在高溫條件下,粒子的能量較高,可以自由運動和重新排列。在低溫條件下,粒子能量較低。如果從高溫開始,非常緩慢地降溫(這個過程被稱為退火),粒子就可以在每個溫度下達到熱平衡。當系統完全被冷卻時,最終形成處於低能狀態的晶體。

如果用粒子的能量定義材料的狀態,Metropolis 演算法用一個簡單的數學模型描述了退火過程。假設材料在狀態i之下的能量為E(i),那麼材料在溫度T 時從狀態i進入狀態j 就遵循如下規律:
(1)如果E( j) ≤ E(i),接受該狀態被轉換。
(2)如果E( j) > E(i),則狀態轉換以如下概率被接受:

eE(i)E(j)KT
其中 K 是物理學中的波爾茲曼常數,T 是材料溫度。
總結:
(1)在某一個特定溫度下,進行了充分的轉換之後,材料將達到熱平衡。
(2)當溫度降至很低時,材料會以很大概率進入最小能量狀態。

2.模擬退火思想最小值尋優問題
假設目標函式為

minf(x1,x2,...,xn)=i=1mg(x1,x2,...,xn)
要求得這個優化問題的最優解,必須:

給定一個初始溫度T0,並初始化一個初始解x(0),並由x(0)生成下一個解x,是否接受x作為一個新解x(1)依賴於一個概率密度函式(接受新解的概率),若新解大於舊解則以概率1接受新解,若新解小於舊解這個概率則以概率密度函式計算值(通常小於1)接受。

泛泛地說,對於某一個溫度Ti和該優化問題的一個解x(k),可以生成x。接受x作為下一個新解x(k +1)為一定的概率。在溫度Ti下,經過很多次的轉移之後,降低溫度Ti,得到 Ti<Ti+1 。在Ti+1 下重複上述過程。因此整個優化過程就是不斷尋找新解和緩慢降溫的交替過程。最終的解是對該問題尋優的結果。

我們注意到,在每個i T 下,所得到的一個新狀態x(k +1)完全依賴於前一個狀態x(k),可以和前面的狀態x(0),…, x(k −1)無關,因此這是一個馬爾可夫過程。
如果溫度下降十分緩慢,而在每個溫度都有足夠多次的狀態轉移,使之在每一個溫度下達到熱平衡,則全域性最優解將以概率1 被找到。因此可以說模擬退火演算法可以找到全域性最優解。

在模擬退火演算法中應注意以下問題:
(1)理論上,降溫過程要足夠緩慢,要使得在每一溫度下達到熱平衡。但在計算機實現中,如果降溫速度過緩,所得到的解的效能會較為令人滿意,但是演算法會太慢,相對於簡單的搜尋演算法不具有明顯優勢。如果降溫速度過快,很可能最終得不到全域性最優解。因此使用時要綜合考慮解的效能和演算法速度,在兩者之間採取一種折衷。
(2)要確定在每一溫度下狀態轉換的結束準則(實即接受概率計算方法)。實際操作可以考慮當連續m 次的轉換過程沒有使狀態發生變化時結束該溫度下的狀態轉換。最終溫度的確定可以提前定為一個較小的值Te,或連續幾個溫度下轉換過程沒有使狀態發生變化演算法就結束。
(3)選擇初始溫度和確定某個可行解的鄰域的方法也要恰當。

3.演算法步驟
(1)目標函式確定(即代價函式確定)
(2)尋找解空間,並給出一個較好的初始解(Monte Carlo方法),選擇初始溫度(通常選擇為1)
(3)新解的產生:2變換法或者3變換法
(4)代價函式差(新解與舊解之差)
(5)接受準則(接受新解的概率計演算法則)
(6)降溫:利用選定的降溫係數α 進行降溫即:T ←αT ,得到新的溫度,如取α =0.999
(7)結束條件:用選定的終止溫度e = 1030,判斷退火過程是否結束。若T < e,演算法結束,輸出當前狀態(即得到的最優解)。