複製鏈接
請複製以下鏈接發送給好友

模擬退火算法

鎖定
模擬退火算法來源於固體退火原理,是一種基於概率的算法,將固體加温至充分高,再讓其徐徐冷卻,加温時,固體內部粒子温升變為無序狀,內能增大,而徐徐冷卻時粒子漸趨有序,在每個温度都達到平衡態,最後在常温時達到基態,內能減為最小。
中文名
模擬退火算法
外文名
Simulated annealing algorithm
源    於
固體退火原理
原    因
粒子温升變為無序狀
簡    稱
SAA

目錄

模擬退火算法算法簡介

模擬退火算法(Simulated Annealing,SA)最早的思想是由N. Metropolis [1]  等人於1953年提出。1983 年,S. Kirkpatrick 等成功地將退火思想引入到組合優化領域。它是基於Monte-Carlo迭代求解策略的一種隨機尋優算法,其出發點是基於物理中固體物質的退火過程與一般組合優化問題之間的相似性。模擬退火算法從某一較高初温出發,伴隨温度參數的不斷下降,結合概率突跳特性在解空間中隨機尋找目標函數的全局最優解,即在局部最優解能概率性地跳出並最終趨於全局最優。模擬退火算法是一種通用的優化算法,理論上算法具有概率的全局優化性能,目前已在工程中得到了廣泛應用,諸如VLSI、生產調度、控制工程、機器學習、神經網絡、信號處理等領域。
模擬退火算法是通過賦予搜索過程一種時變且最終趨於零的概率突跳性,從而可有效避免陷入局部極小並最終趨於全局最優的串行結構的優化算法。

模擬退火算法原理

模擬退火算法來源於固體退火原理,將固體加温至充分高,再讓其徐徐冷卻,加温時,固體內部粒子隨温升變為無序狀,內能增大,而徐徐冷卻時粒子漸趨有序,在每個温度都達到平衡態,最後在常温時達到基態,內能減為最小。根據Metropolis準則,粒子在温度T時趨於平衡的概率為e(-ΔE/(kT)),其中E為温度T時的內能,ΔE為其改變量,k為Boltzmann常數。用固體退火模擬組合優化問題,將內能E模擬為目標函數值f,温度T演化成控制參數t,即得到解組合優化問題的模擬退火算法:由初始解i和控制參數初值t開始,對當前解重複“產生新解→計算目標函數差→接受或捨棄”的迭代,並逐步衰減t值,算法終止時的當前解即為所得近似最優解,這是基於蒙特卡羅迭代求解法的一種啓發式隨機搜索過程。退火過程由冷卻進度表(Cooling Schedule)控制,包括控制參數的初值t及其衰減因子Δt、每個t值時的迭代次數L和停止條件S。
模擬退火算法的模型
1模擬退火算法可以分解為解空間目標函數和初始解三部分。
2模擬退火的基本思想:
(1) 初始化:初始温度T(充分大),初始解狀態S(是算法迭代的起點),每個T值的迭代次數L
(2) 對k=1, …, L做第(3)至第6步:
(3) 產生新解S′
(4) 計算增量ΔT=C(S′)-C(S),其中C(S)為評價函數
(5) 若ΔT<0則接受S′作為新的當前解,否則以概率exp(-ΔT/T)接受S′作為新的當前解.
(6) 如果滿足終止條件則輸出當前解作為最優解,結束程序。
終止條件通常取為連續若干個新解都沒有被接受時終止算法。
(7) T逐漸減少,且T->0,然後轉第2步。
模擬退火算法的步驟
模擬退火算法新解的產生和接受可分為如下四個步驟:
第一步是由一個產生函數從當前解產生一個位於解空間的新解;為便於後續的計算和接受,減少算法耗時,通常選擇由當前新解經過簡單地變換即可產生新解的方法,如對構成新解的全部或部分元素進行置換、互換等,注意到產生新解的變換方法決定了當前新解的鄰域結構,因而對冷卻進度表的選取有一定的影響。
第二步是計算與新解所對應的目標函數差。因為目標函數差僅由變換部分產生,所以目標函數差的計算最好按增量計算。事實表明,對大多數應用而言,這是計算目標函數差的最快方法。
第三步是判斷新解是否被接受,判斷的依據是一個接受準則,最常用的接受準則是Metropolis準則: 若ΔT<0則接受S′作為新的當前解S,否則以概率exp(-ΔT/T)接受S′作為新的當前解S。
第四步是當新解被確定接受時,用新解代替當前解,這隻需將當前解中對應於產生新解時的變換部分予以實現,同時修正目標函數值即可。此時,當前解實現了一次迭代。可在此基礎上開始下一輪試驗。而當新解被判定為捨棄時,則在原當前解的基礎上繼續下一輪試驗。
模擬退火算法與初始值無關,算法求得的解與初始解狀態S(是算法迭代的起點)無關;模擬退火算法具有漸近收斂性,已在理論上被證明是一種以概率l 收斂於全局最優解的全局優化算法;模擬退火算法具有並行性。

模擬退火算法應用

模擬退火算法作為一種通用的隨機搜索算法,現已廣泛用於VLSI設計、圖像識別和神經網計算機的研究。模擬退火算法的應用如下: [2] 
1、模擬退火算法在VLSI設計中的應用 [2] 
利用模擬退火算法進行VLSI的最優設計,是目前模擬退火算法最成功的應用實例之一。用模擬退火算法幾乎可以很好地完成所有優化的VLSI設計工作。如全局佈線、布板、佈局和邏輯最小化等等。
2、模擬退火算法在神經網計算機中的應用 [2] 
模擬退火算法具有跳出局部最優陷阱的能力。在Boltzmann機中,即使系統落入了局部最優的陷阱,經過一段時間後,它還能再跳出來,再系統最終將往全局最優值的方向收斂。
3、模擬退火算法在圖像處理中的應用 [2] 
模擬退火算法可用來進行圖像恢復等工作,即把一幅被污染的圖像重新恢復成清晰的原圖,濾掉其中被畸變的部分。因此它在圖像處理方面的應用前景是廣闊的。
4、模擬退火算法的其他應用 [2] 
除了上述應用外,模擬退火算法還用於其它各種組合優化問題,如TSP和Knapsack問題等。大量的模擬實驗表明,模擬退火算法在求解這些問題時能產生令人滿意的近似最優解,而且所用的時間也不很長。
模擬退火算法 偽代碼
s:=s0;e:=E(s)//設定目前狀態為s0,其能量E(s0)
k:=0//評估次數k
while k<kmax and e>emax//若還有時間(評估次數k還不到kmax)且結果還不夠好(能量e不夠低)則:
sn:=neighbour(s)//隨機選取一臨近狀態sn
en:=E(sn)//sn的能量為E(sn)
if random()<P(e,en,temp(k/kmax)) then//決定是否移至臨近狀態sn
s:=sn; e:=en//移至臨近狀態sn
k:=k+1//評估完成,次數k加一
returns//迴轉狀態s


參考資料
  • 1.    Steinbrunn M ,Moerkotte G, Kemper A. Heuristic and Randomized Optimization for the Join Ordering Problem[J ] . The VLDB Journal , 1997 , 6 (3) :8 - 17.
  • 2.    姚新, 陳國良. 模擬退火算法及其應用[J]. 計算機研究與發展, 1990(7):1-6.