禁忌搜索算法(Tabu search)
對禁忌搜索算法TS的思想做一個歸納總結。
一、禁忌搜索算法的基礎:局部領域搜索
局部領域搜索,又稱爬山啓發式算法。從當前的節點開始,和周圍的鄰居節點的值進行比較。如果當前節點是最大的,那麼返回當前節點,作爲最大值(即山峯最高點);反之就用最高的鄰居節點替換當前節點,從而實現向山峯的高處攀爬的目的。
它是禁忌搜索的基礎,TS算法是在其上改進而來。
優點: 1、容易理解,容易實現,具有較強的通用性;
2、局部開發能力強,收斂速度很快。
缺點: 1、全局開發能力弱,只能搜索到局部最優解;
2、搜索結果完全依賴於初始解和鄰域的映射關係。
通過針對爬山法的分析,提出了TS搜索算法:
改進1:接受劣解。
改進2:引入禁忌表。
改進3:引入長期表和中期表。
二、TS算法的特點
1、基本思想——避免在搜索過程中的循環
2、只進不退的原則,通過禁忌表實現
3、不以局部最優作爲停止準則
4、鄰域選優的規則模擬了人類的記憶功能
三、TS算法構成要素
(1)編碼方式
將不相同的n件物品分爲m組,可以用的編碼:
a、帶分隔符的順序編碼
以自然數1~n分別代表n件物品,n個數加上n-1個分割符號混編在一起,隨機排列。
如:1-3-4-0-2-6-7-5-0-8-9
b、自然數編碼
編碼的每一位分別代表一件物品,而每一位的值代表該物品所在的分組。
如:1-2-1-1-2-2-2-3-3
(2)初始解的獲取
可以隨機給出初始解,也可以事先使用其他啓發式等算法給出一個較好的初始解。 (混合算法)
(3)移動鄰域
移動是從當前解產生新解的途徑,例如上述問題中用移動s產生新解s(x)。
從當前解可以進行的所有移動構成鄰域,也可以理解爲從當前解經過“一步”可以到達的區域。
(4)禁忌表
禁忌表的作用:防止搜索出現循環
(1)記錄前若干步走過的點、方向或目標值,禁止返回
(2)表是動態更新的
(3)表的長度稱爲Tabu-Size
禁忌表的主要指標(兩項指標)
禁忌對象:禁忌表中被禁的那些變化元素
禁忌長度:禁忌的步數
禁忌對象(三種變化)
以狀態本身或者狀態的變化作爲禁忌對象
以狀態分量以及分量的變化作爲禁忌對象
採用類似的等高線做法,以目標值變化作爲禁忌對象
禁忌長度:可以是一個固定的常數(T=c),也可以是動態變化的,可按照某種規則或公式在區間內變化。
禁忌長度過短,一旦陷入局部最優點,出現循環無法跳出;
禁忌長度過長,候選解全部被禁忌,造成計算時間較大,也可能造成計算無法繼續下去。
(5)渴望水平函數
A(x,s)一般爲歷史上曾經達到的最好目標值,若有C(s(x))<A(x,s)則S(x)是不受T表限制。即使s(x)∈T,仍可取 x=s(x)。A(x,s)稱爲渴望水平函數。
(6)停止準則
(1)給定最大迭代步數(最常用 )
(2)設定某個對象的最大禁忌頻率。
(3)設定適配值的偏離閾值。
四、TS算法流程圖
五、TS舉例
由7層不同的絕緣材料構成的一種絕緣體,應如何排列順序,可獲得最好的絕緣性能。
編碼方式:順序編碼
初始編碼:2-5-7-3-4-6-1
目標值:極大化目標值。
鄰域移動:兩兩交換
TabuSize:3 NG:5
參考鏈接:
[1]https://blog.csdn.net/zuochao_2013/article/details/72292466