570 likes | 987 Views
通用啟發法 Metaheuristics. 大綱. 前言 專有名詞 模擬退火法 (Simulated Annealing ; SA) 禁忌搜尋法 (Tabu Search ; TS) 基因演算法 (Genetic Algorithms ; GA) 粒子群最佳化演算法 (Particle Swarm Optimization; PSO) 蟻群最佳化演算法 (Ant Colony Optimization ; ACO). 前言.
E N D
通用啟發法 Metaheuristics 通用啟發法
大綱 前言 專有名詞 模擬退火法(Simulated Annealing;SA) 禁忌搜尋法(Tabu Search;TS) 基因演算法(Genetic Algorithms;GA) 粒子群最佳化演算法(Particle Swarm Optimization; PSO) 蟻群最佳化演算法(Ant Colony Optimization;ACO) 通用啟發法
前言 通用啟發法(metaheuristic)一般用以求解組合最佳化(combinatorial optimization)問題,以在合理時間求得近似最佳解 Metaheuristic是由兩個希臘字而來;meta是指超越更高階,而heuristic來自heuriskein,代表發現 通用啟發法的概念經常是由觀察自然界所獲得的想法 五種常用的通用啟發法 模擬退火法(simulated annealing;SA) 禁忌搜尋法(tabu search;TS) 基因演算法(genetic algorithms;GA) 粒子群最佳化演算法(particle swarm optimization;PSO) 蟻群最佳化演算法(ant colony optimization;ACO) 通用啟發法
通用啟發法的優點 可對不同問題,設計適合的演算法,因此其所能求解的問題十分廣泛 均有跳脫區域最佳解的機制,經常可找到近似最佳解,甚至全域最佳解 對於問題複雜度較高、問題規模較大時,經常可獲得良好的求解品質及求解效率 即使對問題特性不十分瞭解,仍可使用,因此經常是最佳化方法或特定演算法的有效替代方案。 通用啟發法
通用啟發法的缺點 因經常需針對問題而設計,較少現有套裝軟體,因此使用時需具有一定的程式撰寫能力 僅能求得近似最佳解,而無法保證為最佳解。 僅是一種廣義的啟發法,相較最佳化方法,較缺乏理論基礎 對於相同的問題,可設計不同的通用啟發法;即使同一種通用啟發法(如GA),亦可發展不同的演算程序 必須設定一些(有時相當多)所需要的參數值 通用啟發法
專有名詞 1/2 組合最佳化(combinatorial optimization):由一個以上的離散變數組合為極大化或極小化的問題(NP complete) 例如, Min 4x+5y ,x[-10, 10] ,y[-10, 10] ,x,y整數,共有2121=441種解 搜尋空間(search space):在搜尋最佳解的過程中,決策變數所能搜尋的範圍或數值 可行解(feasible solution):符合所有限制式的解 不可行解(infeasible solution):違反任何一個限制式的解 最佳解(optimal solution):具最佳目標函數值的可行解 近似最佳解(near-optimal solution):具接近最佳目標函數值的可行解 區域最佳解(local optimum):鄰近可行解中的最佳解 通用啟發法
專有名詞 2/2 全域最佳解(global optimum):所有可行解中的最佳解 初始解(initial solution):可隨機產生或以特定演算法產生 移步(move):從一個可行解移至另一個新的可行解 鄰近搜尋(neighborhood search) 又稱區域搜尋(local search) 移步法則一般使用插入(insert)、任意兩點交換(interchange)或相鄰兩點交換(adjacent interchange)等 常用的鄰近解選擇方式:改善目標值的鄰近解、部份鄰近解中最佳者、全部鄰近解中最佳者。 停止條件(termination condition):常用的有 最大搜尋次數(迭代次數)或 連續未改善的次數(收斂) 通用啟發法
常用變數的定義 通用啟發法
模擬退火法 模擬退火法(simulated annealing;SA)最早於1953年由N. Metropolis等學者所提出 基本概念是模擬物理界熱處理的退火(annealing)過程;當固體加熱至一定的溫度並熔化成液態後,再緩慢降溫凝結成固態的情形,此時分子便可重新排列呈預期的穩定狀態 1983年Kirkpatrick等學者將此演算法應用於網路組合最佳化問題,始引起學術界的重視 SA使用最陡坡降法(steepest descent method),使最終解收斂於一個區域最佳解,並使用隨機過程法將其跳脫區域最佳解 通用啟發法
模擬退火法步驟(極小化問題) 通用啟發法
SA演算法的說明及特性 SA演算法的說明: 以上演算法每次迭代僅執行一次移步。也可在每次迭代中執行數次移步(即鄰近搜尋) 可接受較現行解差的解,接受的機率則由接受函數決定。因Tn隨著n增加而降低,因此接受機率逐漸降低;極差解(Δ很大)的接受機率非常低(解越差,接受機率越低) 可用最大搜尋次數或連續未改善次數為停止條件,亦可用溫度小於預設值為停止條件 SA的特性: 允許接受較現行解差的鄰近可行解,以跳脫區域最佳解 以機率方式決定是否接受較差的解 接受函數由溫度(控制參數)決定,因溫度隨著迭代次數增加而降低,因此接受機率會逐漸降低 通用啟發法
SA應用於旅行推銷員問題(traveling-salesman problem;TSP)1 從城市1出發,必須拜訪每個城市且僅能拜訪一次,然後再回到城市1,最佳路徑為何? 6 1 4 2 3 5 7 8 註:(n-1)!個解 ∴共有7!=5040個解 通用啟發法
SA應用於旅行推銷員問題(TSP)2 從城市1出發,必須拜訪每個城市且僅能拜訪一次,然後再回到城市1,最佳路徑為何? 通用啟發法
SA應用於旅行推銷員問題(TSP) Sol: 通用啟發法
SA應用於旅行推銷員問題(TSP) Sol: 通用啟發法
禁忌搜尋法 禁忌搜尋法(tabu search;TS)亦稱塔布搜尋法,最早是由Fred Glover於1989年所提出。 兩種記憶方式 短期記憶將最近的移步(move)記錄於禁忌名單(tabu list;TL)中,避免重覆搜尋而落入區域最佳解,並加入免禁準則(aspiration level),讓較佳移步不受TL限制 長期記憶一方面使用加強性(intensification)策略,專注於較佳的區域中,另一方面使用分散性(diversification)策略,以探索新的求解空間 通用啟發法
禁忌搜尋法 TS求解極小化問題的執行步驟(僅含短期記憶) 通用啟發法
TS應用於旅行推銷員問題 使用效果較佳的插入法產生初始解: 由節點(城市)1開始,選擇與節點1最近的節點i。由節點1與節點形成迴路(即1i1)R。 任取迴路R以外的節點,將該節點插入R中,並選擇插入後之迴路路徑最短者,將此新的迴路取代原來的R。 重覆執行步驟2,直到迴路R包含所有的節點為止。 通用啟發法
TS應用於旅行推銷員問題 Sol: 通用啟發法
TS應用於旅行推銷員問題 Sol: 通用啟發法
基因演算法 基因演算法(genetic algorithms;GA) 最早是由John Holland於1975年提出 主要想法源自於達爾文「物競天擇,適者生存」的進化論 作法簡介 一個染色體代表一個解,由一連串的基因(gene)所組成 各染色體的基因值由0或1表示(二元編碼),並以合適度函數(fitness function)評估染色體模擬問題的適合度 接著將現階段的染色體運用選取(selection)、交配(crossover)及突變(mutation)三種運算,模仿自然界的生物演化過程,以產生新染色體 現階段的染色體為母代(parents),下階段的新染色體為子代(children),每一個世代(generation)染色體的集合為族群(population) 通用啟發法
基因演算法步驟 通用啟發法
基因演算法說明 編碼:一般採用兩種方法:二元編碼法和順序編碼法(符號編碼) 合適度函數:用以評估每個染色體的優劣。若為極大化問題,可直接作為合適度函數;若為極小化問題,則可轉換:合適度函數值=max-目標函數值,其中max值一般選擇目前母代染色體中最大的目標函數值,若為多目標問題則須進行正規化 選取:上述演算法僅以簡單的方式選取最好的兩個染色體。一般常用的方法有:輪盤法(roulette wheel selection)和餘數抽樣法(remainder stochastic sampling without replacement)。 通用啟發法
基因演算法說明(續) 交配:上述演算法直接將最好的二個染色體進行交配。一般常會先依交配率計算母代要進行交換之解的個數。常用方式有: 單點交配(one-point crossover) 兩點交配(two-point crossover) 位置交配(position based crossover) 突變:藉由引進新的基因樣式,跳脫區域最佳解。一般會先依突變率(mutation rate)計算母代要進行突變之解的個數。常用方式有: 相鄰兩點突變(adjacent two-point mutation) 任意兩點突變(arbitrary two-point mutation) 任意三點突變(arbitrary three-point mutation) 移動(shift) 通用啟發法
基因演算法的特性 每次搜尋是多點方式,而非單點搜尋。 交配及突變的運算加入了機率機制,而非確定性法則。 根據問題的特性編碼,以編碼的結果執行。 合適度函數對於演算法的速度和效果均很重要。 特別適合於多目標、非線性、甚至無法確定有可行解的問題。(NP hard) 具有高度的問題獨立性,即使對問題的特性不是十分瞭解,也可直接以GA求解。 通用啟發法
GA應用於旅行推銷員問題 使用順序編碼法定義每個染色體。隨機產生5個初始解作為第一代的族群,並評估各染色體之合適度函數值(路徑長度): 選取:選取合適度值最大的兩個解:第2個及第5個染色體。 交配:使用單點交配方式隨機產生一點,從母代重新組合基因,以繁衍產生兩個新的子代,如下圖所示。 通用啟發法
GA應用於旅行推銷員問題 編號2之染色體 1 2 4 8 5 3 7 6 1 1 2 4 8 5 7 3 6 1 子代染色體1 編號5之染色體 1 7 3 6 5 8 2 4 1 編號5之染色體 1 7 3 6 5 8 2 4 1 1 7 3 6 5 2 4 8 1 子代染色體2 編號2之染色體 1 2 4 8 5 3 7 6 1 通用啟發法
GA應用於旅行推銷員問題 突變:假設依突變率,子代染色體2需進行突變。使用任意兩點改變法進行突變,如下圖所示: 替代:將新的二個子代解,取代母代第3與4個染色體(最差的兩個解),取代後新的族群如下表所示: 上述僅完成一個世代。本例繼續執行到第4世代時,所有的染色體皆為 ,其路徑長度為906.9,表示收斂。但GA仍繼續做到n=100為止。 1 7 3 6 5 2 4 8 1 子代染色體2 新子代染色體2 1 2 3 6 5 7 4 8 1 通用啟發法
粒子群最佳化演算法 粒子群最佳化演算法(Particle Swarm Optimization; PSO) 由J. Kennedy 與 R. C. Eberhart於1995年所提出的一種演化式演算法(evolutionary algorithm;EA) 基於模擬鳥群覓食的行為 鳥群在搜尋食物過程,會記憶自己過去最好的經驗並分享給同伴 當每次決定下一個搜尋的位置時,每隻鳥會考量自己過去最好之經驗及其他同伴給予的最好經驗,調整飛行速度,飛到下一個位置 每隻鳥即稱為粒子(particle),粒子1在決定下一個搜尋的位置時,它會依自己過去學習的經驗,考慮朝向過去走過的路徑中距離食物最近的位置前進,但它也會藉由群體(swarm)同伴分享的資訊,考慮朝向同伴中最好經驗的位置前進 因此,粒子1會綜合「學習的經驗」與「群體的資訊」,朝向虛線箭頭前進到下一個位置。透過每個粒子一次一次的學習並分享給予其他粒子,PSO得以尋找到相當不錯的解 通用啟發法
粒子群最佳化演算法 粒子群最佳化演算法的圖示 通用啟發法
PSO演算法之步驟 通用啟發法
PSO演算法的說明與特性 演算法說明 特性 所需的參數設定較少。 屬多點(群體)搜尋,而非單點搜尋。 具有記憶性,應用記憶過去表現及群體最佳的解,互相交換正向資訊。 以機率性法則更新速度,而非確定性法則。 較適合連續型最佳化問題,但亦可用於離散型最佳化問題。 通用啟發法
PSO演算法求解範例 通用啟發法
PSO演算法求解範例 通用啟發法
PSO演算法求解範例 通用啟發法
PSO演算法求解範例 通用啟發法
蟻群最佳化演算法 蟻群最佳化演算法(ant colony optimization;ACO) 於1992年由Dorigo模擬蟻群實際行為而來 基本概念 針對蟻群如何溝通,以及建立食物源與巢穴之間最短的路線進行研究。當螞蟻在覓食時,所走過的路徑會留下一種稱之為費洛蒙(pheromone)的化學物質,讓蟻群藉由費洛蒙的濃度來判斷應該行進的路線。 當費洛蒙濃度愈強,該路線被螞蟻選擇的機率也愈大;若一段時間不再有螞蟻經過該路徑並貢獻費洛蒙時,其費洛蒙濃度便會降低。 最終所有螞蟻會因費落蒙的引導,均選擇行進較短的路徑。 通用啟發法
蟻群最佳化演算法(極大化問題) 通用啟發法
蟻群最佳化演算法(極大化問題) 通用啟發法
ACO演算法之說明1 參數設定:包括螞蟻個數、費洛蒙蒸發比例、費洛蒙量(pheromone trails)與貪婪法則(greedy heuristic)之相對重要性參數,以及控制「開發」與「探索」之相對比例的參數q0。 狀態轉移法則:狀態轉移法則在開發(exploitation)和探索(exploration)之間提供了一個平衡機制。所謂「開發」(q<=q0)是螞蟻參考過去所經歷的較佳路徑,以獲得更好的解;「探索」(q>q0)則是欲發現未曾嘗試過的解,以避免陷入區域最佳解。 貪婪法則:ACO的螞蟻不同於真實螞蟻之處,在於其並非全盲;除了擁有費落蒙引導外,亦可經由貪婪法則給予一個較為適當的搜尋方向。 通用啟發法
ACO演算法之說明2 區域費洛蒙更新:當某螞蟻完成一個可行解後,ACO會依據此螞蟻的路徑即時更新其費洛蒙濃度,避免其他螞蟻陷入區域最佳解。 全域費洛蒙更新:此部分僅記錄該迭代蟻群中表現最好的螞蟻,並對其解進行費洛蒙更新,增加其行經路徑的費洛蒙濃度,以給未來蟻群適當引導。 區域搜尋:當一個迭代中每隻螞蟻分別建構完其完整的解後,此時可對該解進行區域搜尋,找尋更好的可行解以取代原先建構的解。 p.41/47 通用啟發法 作業研究 二版 Ch.14 通用啟發法
ACO演算法之特性 ACO與PSO的想法皆來自生物界個體與群集生活之社交行為 屬多點(多隻螞蟻)搜尋,而非單點搜尋 擁有正向回饋,對表現較好的解增加其費洛蒙濃度;擁有負項回饋,對表現較差的解降低其費洛蒙濃度 傾向於選擇費洛蒙濃度較高的路徑,能透過費落蒙傳達訊息 同時藉由費洛蒙量及經驗法則,引導下一迭代蟻群搜尋方向 通用啟發法
ACO演算法之特性 ACO與PSO的想法皆來自生物界個體與群集生活之社交行為 屬多點(多隻螞蟻)搜尋,而非單點搜尋 擁有正向回饋,對表現較好的解增加其費洛蒙濃度;擁有負項回饋,對表現較差的解降低其費洛蒙濃度 傾向於選擇費洛蒙濃度較高的路徑,能透過費落蒙傳達訊息 同時藉由費洛蒙量及經驗法則,引導下一迭代蟻群搜尋方向 通用啟發法
ACO應用於旅行推銷員問題 通用啟發法
ACO應用於旅行推銷員問題 通用啟發法
ACO應用於旅行推銷員問題 通用啟發法
ACO應用於旅行推銷員問題 通用啟發法
ACO應用於旅行推銷員問題 通用啟發法
ACO應用於旅行推銷員問題 通用啟發法