1. 程式人生 > >最優化演算法——常見優化演算法分類及總結

最優化演算法——常見優化演算法分類及總結

之前做特徵選擇,實現過基於群智慧演算法進行最優化的搜尋,看過一些群智慧優化演算法的論文,在此做一下總結。

最優化問題

  在生活或者工作中存在各種各樣的最優化問題,比如每個企業和個人都要考慮的一個問題“在一定成本下,如何使利潤最大化”等。最優化方法是一種數學方法,它是研究在給定約束之下如何尋求某些因素(的量),以使某一(或某些)指標達到最優的一些學科的總稱。

  工程設計中最優化問題(optimalization problem)的一般提法是要選擇一組引數(變數),在滿足一系列有關的限制條件(約束)下,使設計指標(目標)達到最優值。因此,最優化問題通常可以表示為數學規劃形式的問題。進行工程優化設計時,應將工程設計問題用上述形式表示成數學問題,再用最優化的方法求解。這項工作就是建立優化設計的數學模型。

optimalization

     最優化問題分為函式優化問題和組合優化問題兩大類,其中函式優化的物件是一定區間的連續變數,而組合優化的物件則是解空間中的離散狀態。其中典型的組合優化問題有旅行商(Traveling salesman problem,TSP)問題、加工排程問題(Scheduling problem,如Flow-shop,Job-shop)、0-1揹包問題(Knapsack problem)、裝箱問題(Bin packing problem)、圖著色問題(Graph coloring problem)、聚類問題(Clustering problem)等。

最優化演算法

根據自己對最優化的理解,採用最優化演算法解決實際問題主要分為下列兩步:

  • 建立數學模型。對可行方案進行編碼(變數),約束條件以及目標函式的構造。
  • 最優值的搜尋策略。在可行解(約束條件下)搜尋最優解的方法,有窮舉、隨機和啟發式搜尋方法。

最優化演算法有三要素:變數(Decision Variable)、約束條件(Constraints)和目標函式(Objective function)。最優化演算法,其實就是一種搜尋過程或規則,它是基於某種思想和機制,通過一定的途徑或規則來得到滿足使用者要求的問題的解。

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

優化演算法

精確演算法(絕對最優解)

精確演算法包括線性規劃、動態規劃、整數規劃和分支定界法等運籌學中的傳統演算法,其演算法計算複雜性一般很大,只適合於求解小規模問題

,在工程中往往不實用。

啟發式演算法(近似演算法)

  啟發式方法指人在解決問題時所採取的一種根據經驗規則進行發現的方法。其特點是在解決問題時,利用過去的經驗,選擇已經行之有效的方法,而不是系統地、以確定的步驟去尋求答案。

領域搜尋演算法。從任一解出發,對其領域的不斷搜尋和當前解的替換來實現優化。根據搜尋行為,它又可分為區域性搜尋法和指導性搜尋法。

  • 區域性領域搜尋法(也稱爬山法)。以區域性優化策略在當前解的領域中貪婪搜尋,如只接受優於當前解的狀態作為下一當前解的爬山法;接受當前鄰域中的最好解作為下一當前解的最陡下降法等。

  • 指導性搜尋法。利用一些指導規則來指導整個解空間中優良解的探索,如SA、GA、EP、ES和TS等.

個體啟發(尋找相對最優)

特點:每次輸出的是相同的。從一個解開始,尋找最優,易陷入區域性最優。

爬山演算法

演算法思想:從當前的節點開始,和周圍的鄰居節點的值進行比較。如果當前節點是最大的,那麼返回當前節點,作為最大值(即山峰最高點);反之就用最高的鄰居節點替換當前節點,從而實現向山峰的高處攀爬的目的。

其實就是,在初始值的附近,找到最大的一個。

  • 優點

    • 容易理解,容易實現,具有較強的通用性;
    • 區域性開發能力強,收斂速度很快
  • 缺點

    • 全域性開發能力弱,只能搜尋到區域性最優解;
    • 搜尋結果完全依賴於初始解和鄰域的對映關係。

禁忌演算法(Tabu Search,TS)

基本思想:基於爬山演算法的改進,標記已經解得的區域性最優解或求解過程,並在進一步的迭代中避開這些區域性最優解或求解過程。區域性搜尋的缺點在於,太過於對某一區域性區域以及其鄰域的搜尋,導致一葉障目。為了找到全域性最優解,禁忌搜尋就是對於找到的一部分區域性最優解,有意識地避開它,從而或得更多的搜尋區域

  • 特點:

    • 避免在搜尋過程中的迴圈
    • 只進不退的原則,通過禁忌表實現
    • 不以區域性最優作為停止準則
    • 鄰域選優的規則模擬了人類的記憶功能
  • 禁忌表:用於防止搜尋出現迴圈

    • 記錄前若干步走過的點、方向或目標值,禁止返回
    • 表是動態更新的
    • 表的長度稱為Tabu-Size
  • 禁忌表的主要指標(兩項指標)

    • 禁忌物件:禁忌表中被禁的那些變化元素
    • 禁忌長度:禁忌的步數
  • 禁忌物件(三種變化)

    • 以狀態本身或者狀態的變化作為禁忌物件
    • 以狀態分量以及分量的變化作為禁忌物件
    • 採用類似的等高線做法,以目標值變化作為禁忌物件
  • 禁忌長度:可以是一個固定的常數(T=c),也可以是動態變化的,可按照某種規則或公式在區間內變化。

    • 禁忌長度過短,一旦陷入區域性最優點,出現迴圈無法跳出;
    • 禁忌長度過長,候選解全部被禁忌,造成計算時間較大,也可能造成計算無法繼續下去。

參考:

貪婪演算法

從問題的某一個初始解出發逐步逼近給定的目標,以儘可能快的地求得更好的解。當達到演算法中的某一步不能再繼續前進時,演算法停止。

基本都要先排序,從排序的開始那個依次判斷,符合就留下不符合就去掉。

模擬退火(simulated annealing,SA)

模擬退火演算法作為區域性搜尋演算法的擴充套件,在每一次修改模型的過程中,隨機產生一個新的狀態模型,然後以一定的概率選擇鄰域中能量值大的狀態.這種接受新模型的方式使其成為一種全域性最優演算法,並得到理論證明和實際應用的驗證.SA雖然在尋優能力上不容置疑,但它是以嚴密的退火計劃為保證的,具體地講,就是足夠高的初始溫度、緩慢的退火速度、大量的迭代次數及同一溫度下足夠的擾動次數。

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

其實就是,先用初始值進行隨機更新,記錄每次更新的值,最後取歷史記錄中最大的值。

群體智慧(全域性最優)

類別:

  • 粒子群演算法(PSO)
  • 蟻群演算法(ACO)
  • 人工蜂群演算法(ABC)
  • 人工魚群演算法(AFSA)
  • 混洗蛙跳演算法(SFLA)
  • 煙花演算法(FWA)
  • 細菌覓食優化(BFO)
  • 螢火蟲演算法(FA)

特點:

  • 全域性尋優
  • 每次的解都不同
  • 時間較長

智慧計算包括:

  • 進化演算法(EC),如遺傳演算法。
  • 模糊邏輯
  • 群智慧(SI)演算法
  • 人工免疫系統(AIS)
  • 人工神經網路(ANN)

參考: