演算法總結(七)SA 模擬退火演算法

2021-09-07 23:27:59 字數 763 閱讀 3532

學習資料

對於模擬退火演算法,核心內容還是對於退火的理解,以及以下這個公式

在溫度為t時,出現能量差為de的降溫的概率為p(de),表示為:p(de) = exp( de/(kt) )。其中k是乙個常數,exp表示自然指數,且de<0。所以p和t正相關。這條公式就表示:溫度越高,出現一次能量差為de的降溫的概率就越大;溫度越低,則出現降溫的概率就越小。又由於de總是小於0(因為退火的過程是溫度逐漸下降的過程),因此de/kt < 0 ,所以p(de)的函式取值範圍是(0,1) 。隨著溫度t的降低,p(de)會逐漸降低。

我們將一次向較差解的移動看做一次溫度跳變過程,我們以概率p(de)來接受這樣的移動。也就是說,在用固體退火模擬組合優化問題,將內能e模擬為目標函式值 f,溫度t演化成控制引數 t,即得到解組合優化問題的模擬退火演演算法:由初始解 i 和控制引數初值 t 開始,對當前解重複「產生新解→計算目標函式差→接受或丟棄」的迭代,並逐步衰減 t 值,演算法終止時的當前解即為所得近似最優解,這是基於蒙特卡羅迭代求解法的一種啟發式隨機搜尋過程。退火過程由冷卻進度表(cooling schedule)控制,包括控制引數的初值 t 及其衰減因子δt 、每個 t 值時的迭代次數l和停止條件s。

有些細節,

為了能夠在概率減小的時候確定是否跳動時,需要生成乙個隨機數與現在的概率做對比

需要對t進行衰減

需要有函式f表示能量變化

具體的**參考這個部落格

模擬退火演算法(SA)

介紹模擬退火前,先介紹爬山演算法。爬山演算法是一種簡單的貪心搜尋演算法,該演算法每次從當前解的臨近解空間中選擇乙個最優解作為當前解,直到達到乙個區域性最優解。爬山演算法實現很簡單,其主要缺點是會陷入區域性最優解,而不一定能搜尋到全域性最優解。如圖1所示 假設c點為當前解,爬山演算法搜尋到a點這個區域...

模擬退火(SA)模板

退役很久了,今天看一篇 用sa演算法代替隨機梯度優化神經網路,故學習一波sa演算法。因為網上的資料很多,所以這裡就不多說啦。詳情可以看 高中生太強啦 這裡放乙個模板 如圖 有n個重物,每個重物繫在一條足夠長的繩子上。每條繩子自上而下穿過桌面上的洞,然後繫在一起。圖中x處就是公共的繩結。假設繩子是完全...

演算法 模擬退火演算法

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