禁忌搜尋演算法

2022-01-14 15:14:01 字數 2469 閱讀 6130

對於優化問題相關演算法有如下分類:

禁忌搜尋是由區域性搜尋演算法發展而來,爬山法是從通用區域性搜尋演算法改進而來。在介紹禁忌搜尋之前先來熟悉下爬山法和區域性搜尋演算法。

在搜尋過程中,始終選擇當前點的鄰居中與離目標最近者的方向搜尋。

(1)隨機選擇乙個初始的可能解x0 ∈d,xb=x0,p=n(xb);

//d是問題的定義域, xb用於記錄到目標位置的最優解,p為xb的鄰域。

(2)如果不滿足結束條件,則:

//結束條件為迴圈次數或p為空等

(3)begin;

(4)選擇p的乙個子集p'

,xn為p』的最優解 ;

//p』可根據問題特點,選擇適當大小的子集。可按概率選擇

(5)如果f(xn)2

);

//重新計算p,f(x)為指標函式

(6)否則p=p-p'

,轉(2);

(7)end;(8

)輸出計算結果;

(9)結束 ;

view code

將搜尋過程比作爬山過程,在沒有任何有關山頂的其他資訊的情況下,沿著高度增加的方向爬。如果相鄰狀態沒有比當前值更高,則演算法停止,認為當前值即為頂峰。

(1) 設定初始狀態n=s0為當前狀態;(2

) 如果當前狀態已達標,演算法結束,搜尋成功;

(3)獲取當前狀態n的若干個臨近狀態m,計算這些h(m), nextn=min;

(4) if h(n)

then n:=nextn;

else 取當前狀態為最佳狀態並退出;

(5) goto (2)步;

view code

該演算法在單峰的條件下,必能達到山頂。

顯而易見爬山法對於複雜情況的求解會遇到以下問題:

(1)區域性極值

(2)山脊:造成一系列的區域性極值

(3)高原:平坦的區域性極值區域——解決辦法:繼續側向移動

目前有些改進的爬山法,比如隨機爬山法、首選爬山法等等不再細說。

(1)給定乙個禁忌表(tabu list)h=null

,並選定乙個初始解x_now.

(2)如果滿足停止規則,則停止計算,輸出結果;否則,在x_now的領域中選出滿足不受禁忌的候選集n(x_now).在n(x_now)中選擇乙個評價值最賤的解x_next,x_next:=x_now;更新歷史記錄h, 重複步驟(2).

禁忌長度

控制其他變數,單就禁忌長度的選擇而言,禁忌長度越短,機器記憶體占用越少,解禁範圍更大(搜尋範圍上限越大),但很容易造成搜尋迴圈(實際去搜尋的範圍卻很小),過早陷入區域性最優。禁忌長度過長又會導致計算時間過長。

特赦規則

通俗定義:對於在禁忌的物件,如果出現以下情況,不論現在物件的禁忌長度如何,均設為0

(1)基於評價值的規則,若出現乙個解的目標值好於前面任何乙個最佳候選解,可特赦;

(2)基於最小錯誤的規則,若所有物件都被禁忌,特赦乙個評價值最小的解;

(3)基於影響力的規則,可以特赦對目標值影響大的物件。

候選集候選集的大小,過大增加計算記憶體和計算時間,過小過早陷入區域性最優。候選集的選擇一般由鄰域中的鄰居組成,可以選擇所有鄰居,也可以選擇表現較好的鄰居,還可以隨機選擇幾個鄰居。

評價函式

評價函式分為直接評價函式和間接評價函式。

直接評價函式:上述例子,均直接使用目標值作為評價函式。

間接評價函式:反映目標函式特性的函式(會比目標函式的計算更為簡便,用以減少計算時間等)。

終止規則

禁忌演算法是乙個啟發式演算法,我們不可能讓搜尋過程無窮進行,所以一些直觀的終止規則就出現了

(1)確定步數終止,無法保證解的效果,應記錄當前最優解;

(2)頻率控制原則,當某乙個解、目標值或元素序列的頻率超過乙個給定值時,終止計算;

(3)目標控制原則,如果在乙個給定步數內,當前最優值沒有變化,可終止計算。

為了找出地球上最高的山,一群有志氣的兔子們開始想辦法。

(1)兔子朝著比現在高的地方跳去。他們找到了不遠處的最高山峰。但是這座山不一定是珠穆朗瑪峰。這就是爬山法,它不能保證區域性最優值就是全域性最優值。

(2)兔子喝醉了。他隨機地跳了很長時間。這期間,它可能走向高處,也可能踏入平地。但是,他漸漸清醒了並朝他踏過的最高方向跳去。這就是模擬退火。

(3)兔子們知道乙個兔的力量是渺小的。他們互相轉告著,**的山已經找過,並且找過的每一座山他們都留下乙隻兔子做記號。他們制定了下一步去**尋找的策略。這就是禁忌搜尋。

(4)兔子們吃了失憶藥片,並被發射到太空,然後隨機落到了地球上的某些地方。他們不知道自己的使命是什麼。但是,如果你過幾年就殺死一部分海拔低的兔子,多產的兔子們自己就會找到珠穆朗瑪峰。這就是遺傳演算法。

1.爬山法 。

2.區域性搜尋案例與求解方法。

3.《群體智慧型優化演算法及其應用》雷秀娟 著。

4.

禁忌搜尋演算法

禁忌搜尋 tabu search 演算法是一種亞啟發式 meta heuristic 隨機搜尋演算法,它從乙個初始可行解出發,選擇一系列的特定搜尋方向 移動 作為試探,選擇實現讓特定的目標函式值變化最多的移動。為了避免陷入區域性最優解,ts採用了一種靈活的 記憶 技術,對已經進行的優化過程進行記錄和...

初識禁忌搜尋演算法

一周前和實驗室師弟一起 的,在我的影響下他開始去坐畢設了.嘖嘖 現在等我同學過來找我,把那次的討論內容回憶一下。寫一寫個人理解,語句比較混亂,只乙個入門,我並沒有深入研究過。這是乙個啟發式搜尋演算法。以解決tsp問題為例,假設abcde五個城市,各個城市間距離的無向圖。1.假設以a開頭,abcde,...

禁忌搜尋演算法求解TSP

本文的禁忌搜尋演算法是最經典禁忌搜尋演算法,可以在此基礎上進行修改和擴充套件 主函式 author chauncy xu date 2020年4月1日 clc clear all close all len side,city city num city size city,1 城市數目 gen 1...