模擬退火原理
1.1 演算法簡介
模擬退火演算法得益於材料的統計力學的研究成果。統計力學表明材料中粒子的不
同結構對應於粒子的不同能量水平。在高溫條件下,粒子的能量較高,可以自由運動和
重新排列。在低溫條件下,粒子能量較低。如果從高溫開始,非常緩慢地降溫(這個過
程被稱為退火),粒子就可以在每個溫度下達到熱平衡。當系統完全被冷卻時,最終形
成處於低能狀態的晶體。
如果用粒子的能量定義材料的狀態,Metropolis演算法用一個簡單的數學模型描述了
退火過程。假設材料在狀態i之下的能量為 ) (i E ,那麼材料在溫度T時從狀態i進入狀
態j就遵循如下規律:
(1)如果 ) ( ) ( i E j E ≤ ,接受該狀態被轉換。
(2)如果 ) ( ) ( i E j E > ,則狀態轉換以如下概率被接受:
KT
j E i E
e
) ( ) ( −
其中K是物理學中的波爾茲曼常數,T是材料溫度。
在某一個特定溫度下,進行了充分的轉換之後,材料將達到熱平衡。這時材料處
於狀態i的概率滿足波爾茲曼分佈:
∑
∈
−
−
= =
S j
KT
j E
KT
i E
T
e
e
i x P
) (
) (
) (
其中x表示材料當前狀態的隨機變數,S表示狀態空間集合。
顯然
| |
1
lim
) (
) (
S
e
e
S j
KT
j E
KT
i E
T
=
∑
∈
−
−
∞ →
-272-其中 | | S 表示集合S中狀態的數量。這表明所有狀態在高溫下具有相同的概率。而當溫
度下降時,
∑ ∑ ∑
∉
−
−
∈
−
−
−
−
→
∈
−
−
−
−
→
+
=
min
min
min
min
min
min
min
) ( ) (
) (
0
) (
) (
0
lim lim
S j
KT
E j E
S j
KT
E j E
KT
E i E
T
S j
KT
E j E
KT
E i E
T
e e
e
e
e
⎪
⎩
⎪
⎨
⎧
∈
= =
∑
∈
−
−
−
−
→
其它
若
0
| |
1
lim
min
min ) (
) (
0
min
min
min
S i
S
e
e
S j
KT
E j E
KT
E i E
T
其中 ) ( min min
j E E
S j∈
= 且 } ) ( | {
min min E i E i S = = 。
上式表明當溫度降至很低時,材料會以很大概率進入最小能量狀態。
假定我們要解決的問題是一個尋找最小值的優化問題。將物理學中模擬退火的思
想應用於優化問題就可以得到模擬退火尋優方法。
考慮這樣一個組合優化問題:優化函式為
+ →R x f : ,其中 S x∈ ,它表示優化
問題的一個可行解, } 0 , | { > ∈ =
+
y R y y R ,S表示函式的定義域。 S x N ⊆ ) ( 表示x
的一個鄰域集合。
首先給定一個初始溫度0 T和該優化問題的一個初始解 ) 0 ( x ,並由 ) 0 ( x 生成下一個
解 )) 0 ( ( ' x N x∈ ,是否接受' x作為一個新解 ) 1 ( x 依賴於下面概率:
⎪
⎩
⎪
⎨
⎧ <
= → −
−
其它
若
)) 0 ( ( ) ' (
0
)) 0 ( ( ) ' ( 1
) ' ) 0 ( (
T
x f x f
e
x f x f
x x P
換句話說,如果生成的解' x的函式值比前一個解的函式值更小,則接受 ' ) 1 ( x x = 作為
一個新解。否則以概率 0
)) 0 ( ( ) ' (
T
x f x f
e
−
−
接受' x作為一個新解。
泛泛地說,對於某一個溫度i T和該優化問題的一個解 ) (k x ,可以生成' x。接受' x
作為下一個新解 ) 1 ( + k x 的概率為:
⎪
⎩
⎪
⎨
⎧ <
= → −
−
其它
若
)) ( ( ) ' (
0
)) ( ( ) ' ( 1
) ' ) ( (
T
k x f x f
e
k x f x f
x k x P (1)
在溫度i T下,經過很多次的轉移之後,降低溫度i T,得到 i i T T < +1 。在 1 + i T 下重複上述
過程。因此整個優化過程就是不斷尋找新解和緩慢降溫的交替過程。最終的解是對該問
題尋優的結果。
我們注意到,在每個i T下,所得到的一個新狀態 ) 1 ( + k x 完全依賴於前一個狀態
) (k x ,可以和前面的狀態 ) 1 ( , ), 0 ( − k x x L 無關,因此這是一個馬爾可夫過程。使用馬
爾可夫過程對上述模擬退火的步驟進行分析,結果表明:從任何一個狀態 ) (k x 生成' x的
概率,在 )) ( ( k x N 中是均勻分佈的,且新狀態' x被接受的概率滿足式(1),那麼經過
有限次的轉換,在溫度i T下的平衡態i
x的分佈由下式給出:
-273-∑
∈
−
−
=
S j
T
x f
T
x f
i i
i
i
i
e
e
T P
) (
) (
) ( (2)
當溫度T降為0時,i
x的分佈為:
⎪
⎩
⎪
⎨
⎧
∈
=
其它
若
0
| |
1
min
min
*
S x
S P
i
i
並且
1
min
*
= ∑
∈S x
i
i
P
這說明如果溫度下降十分緩慢,而在每個溫度都有足夠多次的狀態轉移,使之在每一個
溫度下達到熱平衡,則全域性最優解將以概率1被找到。因此可以說模擬退火演算法可以找
到全域性最優解。
在模擬退火演算法中應注意以下問題:
(1)理論上,降溫過程要足夠緩慢,要使得在每一溫度下達到熱平衡。但在計算
機實現中,如果降溫速度過緩,所得到的解的效能會較為令人滿意,但是演算法會太慢,
相對於簡單的搜尋演算法不具有明顯優勢。如果降溫速度過快,很可能最終得不到全域性最
優解。因此使用時要綜合考慮解的效能和演算法速度,在兩者之間採取一種折衷。
(2)要確定在每一溫度下狀態轉換的結束準則。實際操作可以考慮當連續m次的
轉換過程沒有使狀態發生變化時結束該溫度下的狀態轉換。最終溫度的確定可以提前定
為一個較小的值e T,或連續幾個溫度下轉換過程沒有使狀態發生變化演算法就結束。
(3)選擇初始溫度和確定某個可行解的鄰域的方法也要恰當
模擬退火演算法得益於材料的統計力學的研究成果。統計力學表明材料中粒子的不
同結構對應於粒子的不同能量水平。在高溫條件下,粒子的能量較高,可以自由運動和
重新排列。在低溫條件下,粒子能量較低。如果從高溫開始,非常緩慢地降溫(這個過
程被稱為退火),粒子就可以在每個溫度下達到熱平衡。當系統完全被冷卻時,最終形
成處於低能狀態的晶體。
如果用粒子的能量定義材料的狀態,Metropolis演算法用一個簡單的數學模型描述了
退火過程。假設材料在狀態i之下的能量為 ) (i E ,那麼材料在溫度T時從狀態i進入狀
態j就遵循如下規律:
(1)如果 ) ( ) ( i E j E ≤ ,接受該狀態被轉換。
(2)如果 ) ( ) ( i E j E > ,則狀態轉換以如下概率被接受:
KT
j E i E
e
) ( ) ( −
其中K是物理學中的波爾茲曼常數,T是材料溫度。
在某一個特定溫度下,進行了充分的轉換之後,材料將達到熱平衡。這時材料處
於狀態i的概率滿足波爾茲曼分佈:
∑
∈
−
−
= =
S j
KT
j E
KT
i E
T
e
e
i x P
) (
) (
) (
其中x表示材料當前狀態的隨機變數,S表示狀態空間集合。
顯然
| |
1
lim
) (
) (
S
e
e
S j
KT
j E
KT
i E
T
=
∑
∈
−
−
∞ →
-272-其中 | | S 表示集合S中狀態的數量。這表明所有狀態在高溫下具有相同的概率。而當溫
度下降時,
∑ ∑ ∑
∉
−
−
∈
−
−
−
−
→
∈
−
−
−
−
→
+
=
min
min
min
min
min
min
min
) ( ) (
) (
0
) (
) (
0
lim lim
S j
KT
E j E
S j
KT
E j E
KT
E i E
T
S j
KT
E j E
KT
E i E
T
e e
e
e
e
⎪
⎩
⎪
⎨
⎧
∈
= =
∑
∈
−
−
−
−
→
其它
若
0
| |
1
lim
min
min ) (
) (
0
min
min
min
S i
S
e
e
S j
KT
E j E
KT
E i E
T
其中 ) ( min min
j E E
S j∈
= 且 } ) ( | {
min min E i E i S = = 。
上式表明當溫度降至很低時,材料會以很大概率進入最小能量狀態。
假定我們要解決的問題是一個尋找最小值的優化問題。將物理學中模擬退火的思
想應用於優化問題就可以得到模擬退火尋優方法。
考慮這樣一個組合優化問題:優化函式為
+ →R x f : ,其中 S x∈ ,它表示優化
問題的一個可行解, } 0 , | { > ∈ =
+
y R y y R ,S表示函式的定義域。 S x N ⊆ ) ( 表示x
的一個鄰域集合。
首先給定一個初始溫度0 T和該優化問題的一個初始解 ) 0 ( x ,並由 ) 0 ( x 生成下一個
解 )) 0 ( ( ' x N x∈ ,是否接受' x作為一個新解 ) 1 ( x 依賴於下面概率:
⎪
⎩
⎪
⎨
⎧ <
= → −
−
其它
若
)) 0 ( ( ) ' (
0
)) 0 ( ( ) ' ( 1
) ' ) 0 ( (
T
x f x f
e
x f x f
x x P
換句話說,如果生成的解' x的函式值比前一個解的函式值更小,則接受 ' ) 1 ( x x = 作為
一個新解。否則以概率 0
)) 0 ( ( ) ' (
T
x f x f
e
−
−
接受' x作為一個新解。
泛泛地說,對於某一個溫度i T和該優化問題的一個解 ) (k x ,可以生成' x。接受' x
作為下一個新解 ) 1 ( + k x 的概率為:
⎪
⎩
⎪
⎨
⎧ <
= → −
−
其它
若
)) ( ( ) ' (
0
)) ( ( ) ' ( 1
) ' ) ( (
T
k x f x f
e
k x f x f
x k x P (1)
在溫度i T下,經過很多次的轉移之後,降低溫度i T,得到 i i T T < +1 。在 1 + i T 下重複上述
過程。因此整個優化過程就是不斷尋找新解和緩慢降溫的交替過程。最終的解是對該問
題尋優的結果。
我們注意到,在每個i T下,所得到的一個新狀態 ) 1 ( + k x 完全依賴於前一個狀態
) (k x ,可以和前面的狀態 ) 1 ( , ), 0 ( − k x x L 無關,因此這是一個馬爾可夫過程。使用馬
爾可夫過程對上述模擬退火的步驟進行分析,結果表明:從任何一個狀態 ) (k x 生成' x的
概率,在 )) ( ( k x N 中是均勻分佈的,且新狀態' x被接受的概率滿足式(1),那麼經過
有限次的轉換,在溫度i T下的平衡態i
x的分佈由下式給出:
-273-∑
∈
−
−
=
S j
T
x f
T
x f
i i
i
i
i
e
e
T P
) (
) (
) ( (2)
當溫度T降為0時,i
x的分佈為:
⎪
⎩
⎪
⎨
⎧
∈
=
其它
若
0
| |
1
min
min
*
S x
S P
i
i
並且
1
min
*
= ∑
∈S x
i
i
P
這說明如果溫度下降十分緩慢,而在每個溫度都有足夠多次的狀態轉移,使之在每一個
溫度下達到熱平衡,則全域性最優解將以概率1被找到。因此可以說模擬退火演算法可以找
到全域性最優解。
在模擬退火演算法中應注意以下問題:
(1)理論上,降溫過程要足夠緩慢,要使得在每一溫度下達到熱平衡。但在計算
機實現中,如果降溫速度過緩,所得到的解的效能會較為令人滿意,但是演算法會太慢,
相對於簡單的搜尋演算法不具有明顯優勢。如果降溫速度過快,很可能最終得不到全域性最
優解。因此使用時要綜合考慮解的效能和演算法速度,在兩者之間採取一種折衷。
(2)要確定在每一溫度下狀態轉換的結束準則。實際操作可以考慮當連續m次的
轉換過程沒有使狀態發生變化時結束該溫度下的狀態轉換。最終溫度的確定可以提前定
為一個較小的值e T,或連續幾個溫度下轉換過程沒有使狀態發生變化演算法就結束。
(3)選擇初始溫度和確定某個可行解的鄰域的方法也要恰當
相關文章
- 解析·玄學 模擬退火
- 模擬退火與爬山法
- 模擬退火 學習筆記筆記
- 模擬退火演算法解析演算法
- 模擬退火學習筆記筆記
- open ... 模擬退火演算法模板演算法
- 模擬退火演算法(1)Python 實現演算法Python
- c++實現的模擬退火演算法C++演算法
- 使用模擬退火演算法優化 Hash 函式演算法優化函式
- 模擬退火演算法舉例及其matlab實現演算法Matlab
- 自己用C語言寫的一個模擬退火演算法C語言演算法
- BZOJ2428 [HAOI2006]均分資料 模擬退火
- 模擬退火演算法Python程式設計(4)旅行商問題演算法Python程式設計
- myvue 模擬vue核心原理Vue
- CMRR的模擬(原理版)
- 模擬退火演算法Python程式設計(3)整數規劃問題演算法Python程式設計
- 模擬退火演算法Python程式設計(2)約束條件的處理演算法Python程式設計
- 帶約束條件的運籌規劃問題求解(模擬退火演算法實現)演算法
- Vue響應式原理與模擬實現Vue
- 梯度下降法原理與模擬分析||系列(1)梯度
- new&instanceof原理解析及模擬實現
- 積體電路模擬器(SPICE)的實現原理
- 模擬
- 深入小程式系列之一:小程式核心原理及模擬
- 【Tomcat】Tomcat工作原理及簡單模擬實現Tomcat
- 通過模擬vuex的核心原始碼快速掌握其原理Vue原始碼
- NVMe SSD的GC演算法與模擬原理解析GC演算法
- 10.6 模擬賽(NOIP 模擬賽 #9)
- 有限元模擬 有限體積模擬
- git 模擬Git
- 模擬題
- ACP模擬
- 模擬賽
- Keil的軟體模擬和硬體模擬
- 雷達原理--線性調頻訊號的MATLAB模擬Matlab
- 菜鳥學SSH(十五)——簡單模擬Hibernate實現原理
- 關於資料事實表彙總的模擬實現——原理
- Thinking in Java---多執行緒模擬:銀行出納員模擬+飯店模擬+汽車裝配工廠模擬ThinkingJava執行緒