優化演算法1 模擬退火演算法思想解析

2021-07-22 08:49:41 字數 2018 閱讀 5403

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.模擬退火思想最小值尋優問題

假設目標函式為mi

nf(x

1,x2

,...

,xn)

=∑i=

1mg(

x1,x

2,..

.,xn

) 要求得這個優化問題的最優解,必須:

給定乙個初始溫度t0

,並初始化乙個初始解x(0),並由x(0)生成下乙個解x′

,是否接受x′

作為乙個新解x(1)依賴於乙個概率密度函式(接受新解的概率),若新解大於舊解則以概率1接受新解,若新解小於舊解這個概率則以概率密度函式計算值(通常小於1)接受。

泛泛地說,對於某乙個溫度ti

和該優化問題的乙個解x(k),可以生成x′

。接受x′

作為下乙個新解x(k +1)為一定的概率。在溫度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,演算法結束,輸出當前狀態(即得到的最優解)。

優化演算法(二)模擬退火演算法

import numpy as np 隨機確定變化的方向 def direction2 if np.random.random 0.5 return 1 return 1 隨機確定是否接受較差的解 def direction3 delta,t chance np.exp 1 delta t if n...

智慧型優化演算法之模擬退火演算法

詳細的 解釋及背景,過幾天再進行補充 模擬退火演算法 問題背景是tsp問題,有100個旅遊景點。並且假設距離矩陣d已經給出。d已知 sum inf for j 1 1000 s 1,1 randperm 100 102 temp 0 for i 1 101 temp temp d s i s i 1...

演算法 模擬退火演算法

模擬退火演算法 一 簡單介紹 於固體退火原理,是一種基於概率的演算法。物理學解釋 將固體加溫至充分高,再讓其徐徐冷卻,加溫時,固體內部粒子隨 溫公升變為無序狀,內能增大,而徐徐冷卻時粒子漸趨有序,在每個溫度都達到 平衡態,最後在 常溫時達到基態,內能減為最小。模擬退火演算法從某一較高初溫出發,伴隨溫...