初識禁忌搜索算法


  一周前和實驗室師弟一起探討的,在我的影響下他開始去坐畢設了...嘖嘖;現在等我同學過來找我,把那次的討論內容回憶一下。

  寫一寫個人理解,語句比較混亂,只一個入門,我並沒有深入研究過。

  這是一個啟發式搜索算法。

  以解決TSP問題為例,假設ABCDE五個城市,各個城市間距離的無向圖。

  1.假設以A開頭,ABCDE,這個假設是隨意的,因為TSP是環,沒有開頭,計算距離的時候需要加上環.

  2.BCDE兩兩交換,注意是相鄰交換,不是A(n,2),是BC,CD,DE交換,算出所有的TSP距離,注意ABCDE距離需要加上EA的距離,假設算出的最短距離的序列為Seq1。

  3.將Seq1加入禁忌表中,包括序號1,表示第一個序列,序列,以及長度。

  4.取Seq1,ABCDE,相鄰交換BCDE,這肯定和上一次有重復,但是不會完全重復,取最短路徑對應的序列加入禁忌表,成為Seq2.

  5.重復k次,禁忌表的長度為k,為什么禁忌表中要保存k次,不選k次中最小的一次,因為即便最小的一次可能是局部最優,其他的非局部最優通過相鄰交換可能得到全局最優。

  禁忌表的長度和禁忌長度不是一個概念,都是為了保證算法多樣性。

  for 禁忌表的長度

    for 禁忌長度

      對每個序列,重復禁忌長度的次數,比如說禁忌長度為3,選擇3次中最小的替換禁忌表中的新東西。

  完全是個人理解,不一定正確,我還沒有研究禁忌搜索,只是做一個記錄,請各位看官去其糟粕,取其精華。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM