1. 程式人生 > >2018-4-8模擬退火演算法

2018-4-8模擬退火演算法

閱讀資料來源:

《智慧優化演算法以及matlab實現》第七章

【圖文】智慧優化演算法_數學建模_王成章_模擬退火法_2011_百度文庫

https://wenku.baidu.com/view/335c56e94afe04a1b071de13.html

Metropolis 取樣與蒙特卡洛演算法 - CSDN部落格

模擬退火的理論

模擬退火演算法以優化問題求解過程與物理退火過程之間的相似性為基礎,優化的目標函式相當於金屬的內能,優化問題的自變數組合狀態空間,相當於金屬的內能狀態空間,問題的求解過程就是一個找組合狀態,使得目標函式值最小。利用Metopolis演算法適當的控制溫度的下降過程實現模擬退火,從而達到求解全域性優化問題的目的。


物理退火的過程

(1)加溫過程

目的是為了增加粒子的無序性,增強粒子的熱運動,使得粒子偏離平衡的位置。

(2)等溫過程

對於與周圍環境交換熱能而溫度不變的封閉系統,系統狀態的自發變化總是朝著自由能減小的方向發展,當自由能最小的時候系統達到平衡

(3)冷卻過程

目的使粒子的熱運動減弱並逐漸趨於有序,系統能量逐漸下降,達到最小晶體狀態


模擬退火演算法的基礎:

模擬退火的主要思想就是:搜素空間隨機遊走(也就是隨機選擇點,有levy flight 以及布朗運動)再利用Metopolis演算法抽樣準則,使得隨機遊走逐漸收斂於區域性最優解。在使用Metropolis演算法中溫度T,在不停的變化也就是溫度T的大小控制了隨機過程向區域性或全域性最優解移動的快慢(也就是步長的跨度)


Metopolis演算法的思想:(宣告原文連結:https://blog.csdn.net/lanchunhui/article/details/53100962)

Metropolis 是一種有效的重點抽樣的方法。它是模擬退火演算法的基礎,在早期的科學計算中蒙特卡洛方法(Monte Carlo)是對大量原子在給定溫度下的平衡態的隨機模擬,當蒙特卡洛演算法計算量偏大

1953 年,Metropolis 提出重要性取樣,即以概率來接受新狀態而不是使用完全確定的規則,稱為 Metropolis 準則,可以顯著減小計算量

假設前一狀態為 x(n)x(n),系統受到一定擾動,狀態變為 x(n+1)x(n+1),相應地,系統能量由 E

(n)E(n) 變為 E(n+1)E(n+1)。 定義系統由 x(n)x(n) 變為 x(n+1)x(n+1) 的接受概率為 pp(probability of acceptance):

p={1,exp(E(n+1)E(n)T),E(n+1)<E(n) 全然接受的狀態E(n+1)E(n) 依照概率的大小接受或是拒絕p={1,E(n+1)<E(n)exp⁡(−E(n+1)−E(n)T),E(n+1)≥E(n)

當狀態轉移之後,如果能量減小了,那麼這種轉移就被接受了(以概率 1 發生)。如果能量增大了,就說明系統偏離全域性最優位置(能量最低點,模擬退火演算法所要尋找的就是密度最高能量最低的位置)更遠了,此時演算法不會立即將其拋棄,而是進行概率判斷:首先在區間 [0,1][0,1] 產生一個均勻分佈的隨機數 εε(np.random.rand()),如果 ε<pε<ppp 是前面定義的接受概率),這種轉移也將被接受,否則拒絕轉移,進入下一步,如此迴圈。

這正是 Metropolis 演算法,其核心思想是當能量增加時以一定概率接收,而不是一味的拒絕;

分析T引數的對概率p的影響:

(1)之前處在一個運動比較劇烈的,溫度T比較大,這個時候P會比較小,可以接受相對對不好的解

(2)T逐漸的減小,只能接受較好的解

(3)最後T趨近於0的時候,P就接近於1,就不在接受任何的解


演算法的特點: