啟發式演算法之蟻群演算法 模擬退火演算法

2021-09-11 04:36:46 字數 946 閱讀 8092

啟發式演算法(heuristic algorithm)是相對於最優化演算法提出的。乙個問題的最優演算法求得該問題每個例項的最優解。啟發式演算法可以這樣定義:乙個基於直觀或經驗構造的演算法,在可接受的花費(指計算時間和空間)下給出待解決組合優化問題每乙個例項的乙個可行解,該可行解與最優解的偏離程度一般不能被預計。                                 

人話:最優化問題中,相對於暴力列舉的解決方法,通過一些大自然中發現的規律規則來進行「有經驗的、啟發式」的列舉求近似解,這就是啟發式演算法。

啟發式演算法的應用有很多,蟻群演算法(啟發於蟻群找食物)、模擬退火演算法(啟發於水加熱降溫)、人工神經網路(啟發於生物神經網路,雖然有人不承認……)

原因:螞蟻在尋覓食物的道路上會留下資訊素,而他們尋找食物的方向也是根據某個方向資訊素的多少而決定的。也就意味著,當乙個螞蟻在某條路徑上找到了食物,很快就會有其他螞蟻也踏上這條路,釋放更多的資訊素,而較短的路徑因為短,螞蟻來回的速度快,資訊素就會相對更多,聚集而來的螞蟻就會越來越多,最後幾乎所有的螞蟻全部被集中在這條已知最短路徑上。

模擬退火演算法與退火有什麼具體關係沒有查到太多,只知道一點——模擬演算法中使用了乙個概率公式,這個公式參考了金屬冶煉的退火過程。

原理:

目標:a點開始,尋找上圖中最低點c點。

how:一般的貪心演算法會a開始向下走,下一步比當前點更低,就更新為下一步。但是這種貪心演算法或導致直接收斂至b,無法到達全域性最優c。為了能夠找到全域性最優c,我們想辦法跳過b點c點之間的山谷,模擬退火法的思想是在到達b點時能夠繼續向右走一回(類似於小球從高處落下來帶有一定的能量,衝上高坡,甚至衝上山谷,判斷在當前點是否有能量能爬坡的公式即為之前提到的概率公式——δt=c(s′)-c(s),其中c(s)為評價函式)

模擬退火演算法詳細原理以及實現:

啟發式演算法 模擬退火演算法

爬山演算法 是一種簡單的貪心搜尋演算法,該演算法每次從當前解的臨近空間中選擇乙個最優解作為當前解,直到達到乙個區域性最優解。該演算法實現簡單,其主要缺點是會陷入區域性最優解。如,按箭頭的方向搜尋,當達到a點時,無論朝哪個方向小幅度移動都不能得到更優的解。模擬退火演算法 模擬退火演算法 於固體退火原理...

啟發式演算法 模擬退火演算法

執行環境 windows10,python3.7 1.問題模型 y x 7 x 2 x 6 x 9 s in x si n 0.5 x y x 7 x 2 x 6 x 9 sin x sin 0.5 x y x 7 x 2 x 6 x 9 sin x s in 0 5 x x 10 10 x in ...

現代啟發式演算法(二) 模擬退火演算法

繼續我們在遺傳演算法求解tsp問題中所說的,遺傳演算法具有很強的全域性搜尋能力,但由於 早熟 問題使得區域性搜尋能力不足,模擬退火演算法雖然全域性搜尋能力不強,但具有很強的區域性搜尋能力,混合使用遺傳演算法和模擬退火演算法可以解決很多np hard問題,即由遺傳演算法提供問題的較優解,然後由模擬退火...