之前做特征選擇,實現過基於群智能算法進行最優化的搜索,看過一些群智能優化算法的論文,在此做一下總結。
在生活或者工作中存在各種各樣的最優化問題,比如每個企業和個人都要考慮的一個問題“在一定成本下,如何使利潤最大化”等。最優化方法是一種數學方法,它是研究在給定約束之下如何尋求某些因素(的量),以使某一(或某些)指標達到最優的一些學科的總稱。
工程設計中最優化問題(optimalization problem)的一般提法是要選擇一組參數(變量),在滿足一系列有關的限制條件(約束)下,使設計指標(目標)達到最優值。因此,最優化問題通常可以表示為數學規划形式的問題。進行工程優化設計時,應將工程設計問題用上述形式表示成數學問題,再用最優化的方法求解。這項工作就是建立優化設計的數學模型。
最優化問題分為函數優化問題和組合優化問題兩大類,其中函數優化的對象是一定區間的連續變量,而組合優化的對象則是解空間中的離散狀態。其中典型的組合優化問題有旅行商(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)
參考:
- 最優化問題及其分類
- 遺傳算法
- 《MATLAB神經網絡30個案例分析》的13個案例中的GA優化SVM參數
- 手把手教你實現SVM算法(一)
- 遺傳算法學習筆記(一):常用的選擇策略
- 粒子群算法介紹(講解的很清晰,將PSO的算法原理、算法特點以及參數的設置)
- 群體智能簡介ppt(粒子群和人工蟻群優化)
- 優化算法分類