Machine Learning學習筆記(十二)禁忌搜索算法(Tabu Search)

禁忌搜索算法(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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章