啟發式演算法(heuristic algorithm)是相對於最優化演算法提出的。乙個問題的最優演算法求得該問題每個例項的最優解。啟發式演算法可以這樣定義:乙個基於直觀或經驗構造的演算法,在可接受的花費(指計算時間和空間)下給出待解決組合優化問題每乙個例項的乙個可行解,該可行解與最優解的偏離程度一般不能被預計。現階段,啟發式演算法以仿自然體演算法為主,主要有蟻群演算法、模擬退火法、神經網路等。
為了解決貪心演算法容易陷入區域性最優解的困境,受材料的統計力學的研究成果的啟發。通過模擬材料退火過程求解最優解。通概率接受比現有解更差的解,試圖跳出區域性最優解。具體過程如下:
給定初始溫度和初始解;
在解的鄰域裡隨機產生乙個解計算函式值與原來的函式值相比較計算δ
fδf;
若δf<0,則接受該解,反之則計算以概率f(δf)=exp(-δf/tk)接受該解,其中tk=[ln((k/t)+1)]^-1;
溫度下降並再次迴圈;
結束條件:溫度下降到約定值或連續幾個溫度解不變。
但是模擬退火演算法由於隨機的原因效率不確定,也不一定有效(即可能跳不出區域性最優)。而且理論上,降溫過程要足夠緩慢,要使得在每一溫度下達到熱平衡。但在計算 機實現中,如果降溫速度過緩,所得到的解的效能會較為令人滿意,但是演算法會太慢, 相對於簡單的搜尋演算法不具有明顯優勢。如果降溫速度過快,很可能最終得不到全域性最 優解。因此使用時要綜合考慮解的效能和演算法速度,在兩者之間採取一種折衷。
通過模仿自然界生物進化的過程對問題進行優化。
具體過程如下:
編碼個體:將各個解進行編碼構成染色體(編碼規則因情景而異)
多個染色體組成種群,選擇初始種群;
計算適應度(適應度計算方法因情景而異);
選擇運算,通過產生隨機數淘汰適應度低的,同時提高適應度高的染色體的出現概率;
交換,變異,交換染色體的部分片段,並對一小部分的基因變異;
重複3-5;
結束條件:連續數代適應值沒有改變或達到迴圈上限。
演算法的思想**於模擬自然界螞蟻群覓食找尋路徑,假設你的蟻群有n只螞蟻,你想知道從a地點到b地點最近的路徑,現在通過讓這些螞蟻不斷地去從a走到b,並且在它走過的路徑的每一步中留下資訊,使得之後的螞蟻在選擇路徑提供資訊,例如:這裡你希望螞蟻找到的路徑是長度最短的,那麼就可以設定,螞蟻每次完成從a到b行走的路徑長度越短,每一步中留下的資訊量越多;而螞蟻每一次選擇下一步的路徑時,留下資訊量多的路徑,就更可能被選中,那麼這樣不斷地讓螞蟻選擇從a到b的路徑過程中,長度越短的下一步路徑,就越來越容易被之後的螞蟻選中;這樣經過若干輪的螞蟻重複試驗,記錄試驗中最佳的目標,便得到乙個不錯的解。但是蟻群演算法收斂慢、容易出現停滯現象、演算法的運算時間長的缺點。δf
<
0
啟發式與元啟發式演算法
啟發式演算法 heuristic algorigthm 是一種基於直觀或經驗構造的演算法,在可接受的花費 指計算時間 計算空間等 給出待解決優化問題的每一例項的乙個可行解,該可行解與與最優解的偏離程度一般不可以事先預計。啟發式演算法是一種技術,這種演算法可以在可接受的計算費用內找到最好的解,但不一定...
啟發式演算法和元啟發式演算法
是一種基於直觀或經驗構造的演算法,在可接受的花費 指計算時間 計算空間等 給出待解決優化問題的每一例項的乙個可行解,該可行解與與最優解的偏離程度一般不可以事先預計。啟發式演算法是一種技術,這種演算法可以在可接受的計算費用內找到最好的解,但不一定能保證所得到解的可行性及最優性,甚至大多數情況下無法闡述...
啟發式演算法與元啟發式演算法
相對與精確演算法提出的。是一種群體智慧型演算法。平衡區域性最優解與全域性最優解。啟發式演算法可以這樣定義 乙個基於直觀或經驗構造的演算法,在可接受的花費 指計算時間和空間 下給出待解決組合優化問題每乙個例項的乙個可行解,該可行解與最優解的偏離程度一般不能被預計。許多啟發式演算法是相當特殊的,依賴於某...