關於啟發式演算法 元啟發式演算法以及超啟發式演算法的理解

2021-10-10 09:20:06 字數 1462 閱讀 9517

定義:啟發式演算法(heuristic algorithm)是相對於最優化演算法提出的。乙個問題的最優演算法求得該問題每個例項的最優解。啟發式演算法可以這樣定義:乙個基於直觀或經驗構造的演算法,在可接受的花費(指計算時間和空間)下給出待解決組合優化問題每乙個例項的乙個可行解,該可行解與最優解的偏離程度一般不能被預計。現階段,啟發式演算法以仿自然體演算法為主,主要有蟻群演算法、模擬退火法、神經網路等。

通俗解釋:針對某個特定(problem specific)的問題,由於這個問題的最優解不好求或者求不出,那麼就退而求其次,求次優解或者可行解,巧了,啟發式演算法就是來幹這個事的,即啟發式演算法用來求問題的可行解

定義:元啟發式演算法主要指一類通用型的啟發式演算法,這類演算法的優化機理不過分依賴於演算法的組織結構資訊,可以廣泛的應用到函式的組合優化和函式計算中

通俗解釋:說白了,元啟發式演算法是啟發式演算法的一種改進,它不依賴於特定問題,通常是乙個通用的啟發式策略(problem independent),因而能夠運用於更廣泛的方面

首先說相同點:(1)兩者都無法保證得到某優化問題的全域性最優解(2)二者目的相同,都是為了快速地求解那些不存在或者暫時未找到多項式時間內演算法的問題,比如tsp問題,flowshop問題。而像linear programming就不會用heuristics或者meta-heuristics去求解了

不同點:不同點在於:heuristics演算法中不會存在「隨機因素」。對於同樣乙個問題,只要給定了乙個輸入,那麼演算法執行的步驟就固定下來了,輸出也因此固定。但是meta-heuristics就不一樣了,裡面包括了「隨機因素」。就拿遺傳演算法來說,同樣乙個初始的種群(輸入一致),執行兩次(每次100代),得到的結果很可能是不同的。因為交叉、變異操作的物件是隨機選擇的。在比如模擬退火,按照metropolis準則跳出區域性最優解時也是隨機的,這也解釋了為神馬sa可能得到全域性最優解。總之,heuristics在固定的輸入下得到固定的輸出。meta-heuristics在固定的輸入下得到的輸出不固定。(ps:我有個疑問,看了網上很多資料,發現很多人把遺傳演算法、模擬退火、蟻群演算法等也稱作啟發式演算法,那它們到底是啟發式演算法還是元啟發式演算法?或者說根本沒必要去對它們分類?希望有大神給予解答)

定義:超啟發式演算法提供了某種高層策略(high-level strategy,hls),通過操縱或管理一組低層啟發式演算法(low-level heuristics, llh),以獲得新啟發式演算法。這些新啟發式演算法則被運用於求解各類np-難解問題。

通俗解釋:這個概念是近些年新興的,我只說下我自己的理解(沒有深入研究,肯定存在不足之處)。首先,二者共同點是超啟發式演算法與啟發式演算法均是為了求解問題例項而提出的;二者的不同點在於各自的搜尋空間構成不同:傳統啟發式演算法是工作在由問題例項的解構成的搜尋空間上;而超啟發式演算法執行在乙個由啟發式演算法構成的搜尋空間上。換句話說,就是超啟發方法先對一堆啟發式方法進行組合優化,之後拿著這一組方法再去對問題進行求解。

啟發式與元啟發式演算法

啟發式演算法 heuristic algorigthm 是一種基於直觀或經驗構造的演算法,在可接受的花費 指計算時間 計算空間等 給出待解決優化問題的每一例項的乙個可行解,該可行解與與最優解的偏離程度一般不可以事先預計。啟發式演算法是一種技術,這種演算法可以在可接受的計算費用內找到最好的解,但不一定...

啟發式演算法和元啟發式演算法

是一種基於直觀或經驗構造的演算法,在可接受的花費 指計算時間 計算空間等 給出待解決優化問題的每一例項的乙個可行解,該可行解與與最優解的偏離程度一般不可以事先預計。啟發式演算法是一種技術,這種演算法可以在可接受的計算費用內找到最好的解,但不一定能保證所得到解的可行性及最優性,甚至大多數情況下無法闡述...

啟發式演算法與元啟發式演算法

相對與精確演算法提出的。是一種群體智慧型演算法。平衡區域性最優解與全域性最優解。啟發式演算法可以這樣定義 乙個基於直觀或經驗構造的演算法,在可接受的花費 指計算時間和空間 下給出待解決組合優化問題每乙個例項的乙個可行解,該可行解與最優解的偏離程度一般不能被預計。許多啟發式演算法是相當特殊的,依賴於某...