元啟發式算法
簡介:“優化是力量之源",利用各種有效的方法和技術對解決問題的方案做出最佳選擇稱為優化,在既有條件下達到最優。優化步驟:
(1)問題定制(formulation)
客觀清晰准確的描述所要解決的問題及其步驟,明確問題的目標以及各種影響因素。
(2)數學建模(modeling)
依據對問題的定制,運用數學的語言和方法建立可計算的數學模型,通常是對實際問題的簡化或近似。
(3)問題優化(optimization)
利用各種有效的方法和技術解決問題,所得方案可能是最優的,但多數情況下是近優的,有時僅僅是可行的。
(4)實施方案(implementation)
把優化方案用於實際問題進行驗證比較,找出差距並根據結果改進方案。
如圖所示:
優化問題與優化算法
1.1優化問題概述
1.1.1 問題定制
優化對象來自現實問題,首先需要對問題做出界定,即通過描述問題的外在表現和內在影響因素及其相互關系,抓住問題的本質。問題定制是數學建模的基礎,通常表現為文字上的描述以及數學符號的表達。我們把界定問題的過程稱為問題定制,這種定制最初可能是模糊的、不十分明確的,但會隨着對問題的深入認識和理解而逐漸得到完善,問題定制需要把握以下3點:
(1)明確解決問題的目的,進而確定所要達到的目標
(2)明確影響目標達成的各種因素,進而確定決策變量
(3)明確適用條件和范圍,進而確定約束條件
現實世界往往是復雜的,因此必要的時候需要簡化問題和把握重點,僅保留問題的主要目標、影響較大的關鍵因素及變量之間的主要關系。
例1-1 問題定制舉例:為自來水公司選擇管道鋪設路線
某自來水公司打算為四個小區V1-V4鋪設自來水供水管道,如圖1-2所示:V0是自來水公司的供水總閥所在地,V1-V4是四個小區的所在位置,連線標注了相互間的距離,管線要盡量沿道路鋪設以便於維護。問:如何選擇路徑以使得所鋪設管道最短?
(1)問題定制
目標:管道鋪設路線最短
影響因素:供水總閥門位置坐標、小區位置坐標、小區之間的距離
約束條件:盡量沿道路鋪設以便於維護
(2)建立數學模型
假設有n條邊(道路),各條邊的長度l(權重)代表了道路的長度,是影響管道長度的主要因素,
問題課歸納為在一個給定的無向圖G(V,E)中尋找一棵無回路支撐樹T,這棵樹擁有圖中所有頂點且滿足整棵樹的邊權之和最小,如圖1-2所示。
明確了目標是選擇最短路徑,影響因素是各條邊的長度,可建立一個最小化無回路支撐數學模型。其中,ET是支撐樹所有邊的集合,數學表達式為:
1.1.2 數學建模
通過假設、簡化、抽象等處理手段,把實際問題用數學表達式來表達,建立起包括優化目標、決策變量和約束條件的優化數學模型,以便於進一步運用各種優化方法和技術進行求解,這種從實際問題中抽象、提煉數學模型的過程稱為數學模型。
數學模型並非現實問題的直接翻版,建模過程即需要對現實問題深入的觀察和分析,去粗取精,去偽存真,又需要靈活地運用各種數學知識來量化表達問題,借助於數學符號描述目標、變量和約束之間的相互關系。
數學模型可以用普遍地用以下通用模板來表達:
式中,f(x)是目標函數,x= (x1,x2,...,xn)是n維決策變量,gi(x)和hi(x)分別是不等式約束和等式約束。
在該模型的基礎上可以衍生出各種不同類型問題的數學模型,例如,去掉所有的約束項就成為無約束優化模型;若目標函數和約束函數都是線性的,就成為線性規划模型;若目標函數是指數函數、冪函數等非線性函數,就是非線性規划模型;若目標函數和約束變量均為離散取值,就是組合優化問題模型等。
根據數據之間的相互關系,可以分為以下不同類型的數學模型:
(1)等量關系建立方程模型
(2)不等量關系建立不等式模型
(3)等量關系可建立函數模型
(4)數量關系可建立統計模型
(5)分類問題可建立分類模型
(6)圖形描述可建立幾何模型
根據目標函數受決策變量的影響情況,可以分為確定性模型、非確定性模型、動態模型和魯棒模型四種不同類型的數學模型。
(1)確定性模型(deterministic model)
一個完全確定的函數因果關系所決定的模型稱為確定性模型。目標函數值的確定性取決於輸入變量的值。
(2)非確定性模型(nondeterministic model)
非確定性模型也稱為隨機概率模型。現實世界中,不確定現象是普遍存在的,例如,粒子運動的軌跡,加工零件的誤差,拋硬幣出現反正面的情況等。隨機模型以概率和數理統計理論為基礎,其特點是模型參數、模擬對象是隨機變量,相互關系服從概率分布。
(3)動態模型(dynamic model)
影響問題的各種因素隨時間t的變化而變化的模型稱為動態模型。與非確定性模型不同,動態模型的目標在t時刻是確定的。例如,周期性動態模型表現為目標值和變量隨時間的變化而變化有規律的變化。
(4)魯棒模型(robust model)
某些優化模型所需要的變量環境和約束條件十分苛刻,變量取值范圍或者約束條件的些許變化就可可能導致模型的失效。現實中決策變量的擾動變化是難以避免的,決策變量值在一定范圍內變化而目標函數仍能維持的模型,稱為魯棒模型。魯棒優化的目的是對於可能出現的所有情況,約束條件均滿足,並且使得最壞情況下的目標函數值仍保持較優。
1.2 優化問題分類
1.按照解空間的性質
按照解空間的性質,優化問題可分為實值函數優化問題和組合優化問題
2.按照優化目標解的性質
可分為最小優化和最大優化
3.按照優化目標解的數量
可分為單目標優化和多目標優化
4.按照有無約束項
有約束優化和無約束優化
5.按照目標函數和約束條件的性質
線性優化問題和非線性優化問題
6.按照變量的形態
確定性優化問題和隨機性優化問題
1.3 優化算法及分類
按照優化問題的處理結果,可以把目前已知的各種優化算法大致分為兩大類:第一類是基於函數解析性質的確定性優化算法(deterministic optimization),也稱為精確優化算法(exact algorithm).例如,擬牛頓法、爬山法、分枝定界法、線性規划和非線性規划算法等。
精確優化算法難以適應實際工程的需要,發展出第二大類算法:基於隨機概率策略的非確定性優化算法(nondeterministic optimization),也稱為近似優化算法。此處的隨機概率策略是指算法中的組合值順序隨機產生。
1.3.1 精確算法和近似算法
精確算法能夠獲得問題的最優解並確保其最優性。近似算法不能保證獲得最優解,但能夠在合理的時間和空間下獲得近優解或可行解。按照優化問題處理的最終結果,優化方法分類如下圖:
圖1-3按照問題處理的結果分類優化算法
近似方法又可分為兩個子類:近似算法和啟發式算法。與通常在合理時間內找到好的解決方案的啟發式算法不同,近似算法能夠提供可證明的解決方案質量和可證明的運行時限,能夠保證所得解的邊界和全局最優性。啟發式算法可以分為兩個系列,即元啟發式算法和基於特定問題的啟發式算法。前者是指一類通用的啟發式算法,通常可用於解決任何優化問題。后者是針對具體的特定問題實例而定制和設計的適用范圍有限。根據每次搜索迭代過程中並行目標解的數量,元啟發式算法又可分為單解元啟發式算法和群解元啟發式算法。單解元啟發式算法,如模擬退火算法、禁忌搜索算法、鄰域搜索算法等,每輪搜索只從一個解出發;群解元啟發式算法則每輪搜索從相對獨立並行的一組解出發。二者均需按照規則保留滿足要求的最優解。
1.3.2 傳統優化算法和元啟發式優化算法
按照解決優化問題的過程,分為傳統優化算法和元啟發式優化算法,下表列出了部分目前較流行的這兩類優化算法。
傳統優化算法(左四) | 元啟發式優化算法(右4) |
---|
無約束優化 | 有約束優化 | 數學規划法 | 圖論算法 | 進化算法 | 群集智能算法 | 智能仿生優化算法 | 其他智能優化算法 |
---|---|---|---|---|---|---|---|
一維搜索法 | 罰函數法 | 線性規划 | 最短路徑法 | 遺傳算法 | 蟻群算法 | 布谷鳥搜索算法 | 模擬退火算法 |
基本下降法 | 可行方向法 | 動態規划 | 最小樹法 | 進化策略算法 | 粒子群算法 | 雞群優化算法 | 禁忌搜索算法 |
共軛方向法 | 二次逼近法 | 整數規划 | 網絡流算法 | 進化規划算法 | 人工蜂群算法 | 果蠅優化算法 | 量子遺傳算法 |
變尺度法 | 極大熵法 | 二次規划 | 最佳匹配算法 | 遺傳規划算法 | 人工魚群算法 | 野草入侵優化算法 | 人工免疫算法 |
直接搜索法 | 最小二乘法 | 多目標規划 | 最小費用算法 | 差分進化算法 | 細菌覓食算法 | 蝙蝠優化算法 | 人工螢火蟲算法 |
圖染色算法 | 分布估計算法 | 混合蛙跳算法 | 人工植物優化算法 | 文化算法 | |||
Memetic算法 | 獅群優化算法 | 化學反應優化算法 | 和聲搜索算法 | ||||
狼群優化算法 | 人工神經網絡優化 | 混沌優化算法 | |||||
... | 生物地理優化算法 | ||||||
元啟發式算法的提出或模擬某種自然現象和過程或通過觀察自然界生物生存行為而受到啟發。雖然多數情況下不一定求得問題的最優解,即使得到最優解也難以證明其最優性,但此類算法的效率高、時效性強且具有全局收斂性,在求解現實優化問題時往往有突出的表現。
1.4 元啟發式算法
“啟發式”(heuristic)一詞來源於古希臘語,意思是尋找解決問題的新方法的藝術。
1.4.1 元啟發式算法概述
1. 元啟發式算法的共性
基於進化(evolutionary)和基於群智能(swarm intelligence)策略的元啟發式算法是當前較為流行的兩大主流分支。
共性總結:
(1)元啟發式算法的主要特征(基本上)
1.與問題無關或不需要問題所提供的信息,如導數、梯度或Hessian矩陣等信息
2.受自然現象啟發,如模仿自然界的物理現象、生物或動物的群體生存行為等
3.利用隨機概率,優勝劣汰、擇優保留、循序漸進等原則。例如,遺傳算法中的選擇、交叉和變異;粒子群算法中群鳥速度和位置的變化;模擬退火算法中接受新狀態;蟻群算法中的螞蟻轉移概率等。
4.借助於計算機這一快速高效的計算工具
5.有保留最好解和接受劣解的策略
6.雖不能保證最優解,但時效性強,搜索效率高,基本上能滿足工程的需要
(2)一般流程框架
元啟發式算法多是基於迭代搜索策略的,是從一個或一組完整的初始解開始,使用預設步驟在每次更新迭代時對解進行更新變換,直到滿足終止條件為止。元啟發式優化算法的流程框架如下圖。其中,“基於既定更新策略更新當前解”是區別各種元啟發式算法的主要環節。
(3)多樣性搜索和強化搜索
(4)約束項的處理
(5)參數的處理
(6)編碼和解碼
(7)目標函數
1)自足目標函數,
2)引導目標函數
3)交互目標函數
4)相對和競爭目標函數
5)元建模目標函數
2.適用性
推薦場景:
1.規模較大、實時性較強的多項式類問題,如GPS定位
2.中等規模以上的NP難問題
3.無須獲得精確解的優化問題
4.中等規模以上的整數規划/混合整數規划問題
5.小型約束規划問題
6.非線性連續優化問題
7.黑盒優化問題
8.交互式優化問題
9.適用短期及時決策
1.4.2 基於單解的元啟發式算法
算法:單解元啟發式算法流程通用模板
Input:t = 0,初始解st = s0
REPEAT Until 滿足停止條件:
從st出發,生成一組不重復的鄰域解N(st);
按照規則從N(st)選擇一個解st+1 = Selected(N(st))作為下一步出發點;
t = t+1;
st = st+1;
END REPEAT
Output: 當前最好解st
1.4.3 基於群解的元啟發式算法
算法:群解元啟發式算法流程的通用模板
Input: t = 0,令初始解Pt = P0;
Repeat:
從種群Pt出發,生成一個新種群P't;
從(Pt U P't)選擇下一代種族,令Pt+1 = (Pt U P't);
t = t + 1;
st = st+1;
Until 滿足停止條件
Output: 當前最好解
1.5 元啟發式算法應用參考路線圖
最開始提到,優化方法解決問題的一般過程涉及問題定制、建模、優化和實現四個主要步驟。具體使用還有額外的技術細節,下圖提供了元啟發式算法解決優化問題的行動指南: