工程領域內存在大量的優化問題,這些優化問題難以求解的原因:
搜尋空間的可能解數目太多以至於無法採用窮舉搜尋法尋找最優解;
簡化模型得到的結果往往是沒有實際意義的;(脫離眾多現實因素)
階被嚴格限制,以至於找到乙個可行解都很難,遑論最優解;
很多時候採用自然界最樸素的策略來應對這些問題,反而能夠得到不錯的結果。
優化演算法主要分為啟發式演算法和智慧型隨機演算法。
思想原則:自然選擇,適者生存
概括地說,遺傳演算法就是在特定環境下,模擬種族中個體的選擇、交叉繁殖、變異,反覆執行,個體逐漸優化;
用求二元函式的最大值作為例子:
取x1∈
x1∈,
s.t. max (f(x1,x2) = x1^2 + x2 ^2)
分為以下幾個步驟:
個體編碼
遺傳演算法的物件是表示個體的符號串,故而要將變數x1,x2編碼為一種符號串。這裡由無符號二進位制整數表示;
如6表示為110,3表示為011,故而乙個解,當x1=6,x2=3時,可以表示成;
個體的基因型會對映為特定的表現型,表現型這裡狹義的可以理解為每乙個解物件所對應的適應度。
初始群體的產生,產生若干隨機的個體即可;
適應度計算
遺傳演算法用適應度作為評定個體的優劣程度的標準,從而決定遺傳機會的大小。這裡可以直接將解對應的函式值作為適應度。
選擇運算(複製運算)交叉運算
遺傳演算法產生新個體的主要操作是交叉運算,即以某一概率相互交換某兩個個體之間的部分染色體;
比如採用單點交叉的方法:對群體進行隨機配對,並隨機設定交叉點的位置,最後相互交換配對染色體之間的部分基因;
變異運算
對個體的某乙個或一些基因上值按某乙個較小的概率進行改變,這也是一種產生新個體的一種操作方法;
比如基本位變異:首先確定各個個體的基因變異位置,而後依照某一概率將變異點原有基因值取反;
如此一來,再進行一輪選擇、交叉、變異運算之後即可由原代群體p(n)得到新一代群體p(n+1)
經過多輪進化之後,所有適應度中,最大值和平均值都將得到明顯改進;
ts演算法通過模擬人類智慧型的記憶機制,採用禁忌策略限制搜尋過程陷入區域性最優來避免迂迴搜尋,同時引入特赦(破禁)準則來釋放一些被禁忌的優良狀態,保證搜尋過程的有效和多樣性;可以克服搜尋過程易於早熟收斂的缺陷而達到全域性優化。
禁忌搜尋演算法是一種亞啟發式隨機搜尋演算法,從乙個初始可行解觸發,選擇一系列的特定搜尋方向作為試探,選擇實現讓特定的目標函式值變化最多的移動。同時採用一種靈活的記憶技術,對已經進行的優化過程進行記錄和選擇,知道下一步搜尋方向;
首先按照隨機方法產生初始解作為當前解,然後在當前解的領域中搜尋若干個解,取其中的最優解作為新的當前解。為了避免陷入區域性最優解,這種優化方法允許一定的下山操作(使解的質量變差)。
為了避免對已搜尋過的區域性最優解的重複,禁忌搜尋演算法使用禁忌表記錄已搜尋的區域性最優解的歷史資訊,這可在一定程度上使搜尋過程避開區域性極值點,從而開闢新的搜尋區域。
如圖所示:
禁忌搜尋的環節可以分為:
禁忌搜尋對初始解的依賴較大,不同的初始解,在搜尋 過程中耗費時間和資源往往不同,同一鄰域結構,不同的初始點會得到不同的計算結果,好的初始解往往會提高最終的優化效果。乙個直觀的結論就是:如果初始點選擇的足夠好,總可以計算出全域性最優解。初始解通常基於問題特徵資訊,借助啟發式方法產生,以此保證初始解的效能;
領域移動是從乙個解到另乙個解的途徑。 它是保證產生好的解和演算法搜尋速度的最重要因素之一。
鄰域移動定義的方法很多,對於不同的問題應採用不同的定義方法。 通過移動,目標函式值將產生變化,移動前後的目標函式值之差, 稱之為移動值。如果移動值是非負的,則稱此移動為改進移動;否 則稱作非改進移動。最好的移動不一定是改進移動,也可能是非改進移動,這一點就保證搜尋陷入區域性最優時,禁忌搜尋演算法能自動把它跳出區域性最優。
鄰域移動的涉及策略既要保證變化的有效性,還要保證變化的平滑性,即產生的鄰域解和當前解有不同, 又不能差異太大。不同會使搜尋過程向前進行,不能差異太大保 證搜尋是有序而非隨機的搜尋。
說區域性搜尋並不需要在每次迭代中評價鄰域中所有解,而只是其中乙個 子集,這個子集就是候選集。
禁忌搜尋被認為是從鄰域的解中做出了「明智」 的選擇。一種可能加速鄰域評價的方法是減小鄰域的大小,而這種縮減鄰域的做法可能包含有指導搜尋的目的。
為了減少鄰域中有資格作為候選集的數量,一些學者採取了從鄰域中隨機選取小部分的策略。當鄰域是由移動的靜態集合組成時,可以考慮把這個靜態集合分割成很多子集,在每次迭代中,只對其中乙個子集進行評價。通過這種方式, 可以對部分鄰域進行迴圈評價,這將有利於更快的選擇移動,同時,也可能使解的質量變壞,因為在一次迭代中並沒有考慮評價所有的移動。但是從全域性上講,這種在解空間中的有限搜尋不會對解的質量有太壞的影響。
禁忌表是用來存放禁忌物件的乙個容器,放入禁忌表中 的禁忌物件在解禁之前不能被再次搜尋。
禁忌表可以使用陣列、佇列、棧、鍊錶等順序結構實現。禁忌表是禁忌搜尋演算法的核心,禁忌表的大小在很大程 度上影響著搜尋速度和解的質量。如果選擇的好,可有 助於識別出曾搜尋過的區域。
禁忌長度就是每個禁忌物件在禁忌表中的生存時間,也成為禁忌物件的任期;每乙個禁忌物件加 入禁忌表的時候,設定任期為禁忌長度值,搜尋過程每迭代一次,禁忌表中的各個禁忌物件的任期自動減一,當某一禁忌物件任期為0時,將其 從禁忌表中刪除;任期不為0的禁忌物件處於禁忌狀態,不能被搜尋過程選為新解。
如果沒有禁忌表,在解空間中的搜尋可能陷入迴圈:
如果加入長度為3的禁忌表,規定不得接受與禁忌表中相同的解。重複上圖的迴圈,當進行到4時,原本4的鄰域中最優解為1,應當選擇1,但1在禁忌表中,故選擇次優的5。
選擇策略即擇優規則,是對當前的鄰域移動選擇乙個移動而採用的準則。
擇優規則可以採用多種策略,不同的策略對演算法的效能影響不同。 乙個好的選擇策略應該是既保證解的質量又保證計算速度。當前採用最廣泛的兩類策略是最好解優先策略和第乙個改進解優先策略。
破禁策略,相關文獻亦稱藐視準側、特赦準則、釋放準側等;破禁策略通常指渴望水平(aspiration)函式選擇。
當乙個禁忌移動在隨後t次的迭代內再度出現時,如果它能把搜尋帶到乙個從未搜尋過的區域, 則應該接受該移動即破禁,不受禁忌表的限制。 衡量標準就是定義乙個渴望水平函式,渴望水平函式通常選取當前迭代之前所獲得的最好解的目標值或此移動禁忌時的目標值作為渴望水平函式。
破禁準則保證了搜尋過程在全部候選解被禁或者是有優於當前最優解的候選解被禁時,能夠釋放特定的解,從而實現全域性優化搜 索。
停止規則亦稱終止準則,即演算法在何種條件下停止搜尋過程;在禁忌搜尋中停止規則通常有如下四種:
把最大迭代數作為停止演算法的標準,而不以全域性最優為停 止規則;
在給定數目的迭代內所發現的最好解無法改進或無法離開 它時,演算法停止;
最優解的目標函式值小於指定誤差;
最優解的禁忌頻率達到指定值。
在實際應用中,無法使用禁忌長度充分大的條件實現狀態空間的遍歷這一理論收斂條件。
演算法設計與分析課堂筆記(2)攤還分析
核分析勢能分析 總結當我們在設計乙個資料結構時,評估乙個資料結構操作的複雜度可能會成為乙個問題 考慮這樣一種情況 資料結構中特定操作的複雜性很高,但是實際用到的機會不多,所以和其他操作的複雜性 平攤 一下,從整體上講該資料結構使用起來複雜性就降低了。因為資料結構上的操作相互之間可能是有關聯的。不考慮...
演算法分析與設計學習筆記1
下面哪乙個不是演算法的特性?同乙個數學模型使用不同的資料結構會有不同的演算法,有效性有很大差別 計算此偽 表示的演算法中加法的執行次數 答案 2t 1 1 解析 此類問題適合初學者進行練習,初學者接觸此類問題最好找從頭到尾梳理一遍,將題中所給資料帶入所給偽 中進行計算來梳理思路。運算過程 n最開始為...
演算法設計與分析課堂筆記(3)搜尋優化策略
best first法 分支界限法 a 法總結 我們最常見的bfs和dfs是搜尋演算法的基礎,bfs是以廣度方向不斷延伸邊界進行擴充套件,而dfs則是沿深度方向直指最終結果。二者分別有著特定的生長規律,使得遍歷能夠有序的進行,但是在延伸時還是缺少一些啟發式的選擇。二者因此也可以被認作是一種暴力窮舉,...