學習總結:局部搜索(轉)


通常考察一個算法的性能通常用局部搜索能力和全局收斂能力這兩個指標。局部搜索是指能夠無窮接近最優解的能力,而全局收斂能力是指找到全局最優解所在大致位置的能力。局部搜索能力和全局搜索能力,缺一不可。向最優解的導向,對於任何智能算法的性能都是很重要的。 

    局部最優問題(或叫局部峰值局部陷井):現實問題中,f在D上往往有多個局部的極值點。一般的局部搜索算法一旦陷入局部極值點,算法就在該點處結束,這時得到的可能是一個糟糕的結果。解決的方法就,目標函數差的點,被選中的概率小。考慮歸一化問題,使得鄰域內所有點被選中的概率和為1。總的來說,局部搜索的方法,就是依賴於對解空間進行按鄰域搜索。

    起始點問題:一般的局部搜索算法是否能找到全局最優解,與初始點的位置有很大的依賴關系。解決的方法就是隨機生成一些初始點,從每個初始點出發進行搜索,找到各自的最優解。再從這些最優解中選擇一個最好的結果作為最終的結果。

    學習的重要性:
        1、直接用於無約束的實際問題;
        2、其基本思想和邏輯結構可以推廣到約束問題;
        3、約束問題可以轉化成無約束問題求解。

    方法分類:
        1、間接法:對簡單問題,求解必要條件或充分條件;
        2、迭代算法:
                 零階法:只需計算函數值 f(x) (直接法)
                 一階法:需計算 ▽f(x)       (梯度法)
                 二階法:需計算 ▽2f(x)      (梯度法)

    直接搜索法優點:計算不太復雜;易於實施與快速調試;所需的准備時間較少
一、單純形搜索法:

1962年由Spendley, Hext和Himsworth提出,80年代得到證明。單純形搜索法是一種無約束最優化的直接方法。單純形法是求解非線性多元函數、無約束最小化問題的有效方法之一。在許多技術領域內,都取得了有效的成果。

所謂的單純形是指n維空間E^n中具有n+1個頂點的凸多面體。比如一維空間中的線段,二維空間中的三角形,三維空間中的四面體等,均為相應空間中的單純形。單純形搜索法與其它直接方法相比,基本思想有所不同,在這種方法中,給定維空間E^n中一個單純形后,求出n+1個頂點上的函數值,確定出有最大函數值的點(稱為最高點)和最小函數值的點(稱為最低點),然后通過反射、擴展、壓縮等方法(幾種方法不一定同時使用)求出一個較好點,用它取代最高點,構成新的單純形,或者通過向最低點收縮形成新的單純形,用這樣的方法逼近極小點。
    單純形搜索法的基本思想是:先找出一個基本可行解,對它進行鑒別,看是否是最優解;若不是,則按照一定法則轉換到另一改進的基本可行解,再鑒別;若仍不是,則再轉換,按此重復進行。因基本可行解的個數有限,故經有限次轉換必能得出問題的最優解。

一般解題步驟可歸納如下:

①把線性規划問題的約束方程組表達成典范型方程組,找出基本可行解作為初始基本可行解。

②若基本可行解不存在,即約束條件有矛盾,則問題無解。

③若基本可行解存在,從初始基本可行解作為起點,根據最優性條件和可行性條件,引入非基變量取代某一基變量,找出目標函數值更優的另一基本可行解。

④按步驟3進行迭代,直到對應檢驗數滿足最優性條件(這時目標函數值不能再改善),即得到問題的最優解。

⑤若迭代過程中發現問題的目標函數值無界,則終止迭代。 

二、Powell共軛方向法(方向加速法)

1964年由Powell提出,后經Zangwoll(1967年)和Brent(1973年)改進。該算法有效地利用了迭代過程中的歷史信息,建立起能加速收斂的方向。

理論基礎:以二次對稱函數為模型進行研究。

在非線性目標函數中,最簡單的是二次函數,故任何對一般函數有效的方法首先應對二次函數有效;在最優點附近,非線性函數可用一個二次函數作近似,故對二次函數使用良好的方法,通常對一般函數也有效;很多實際問題的目標函數是二次函數。

設A是n×n階對稱正定矩陣,p(0), p(1)為兩個n維向量,若 成立p(0)T A p(1) = 0,則稱向量p(0)與p(1)為A共軛或A正交,稱該兩向量的方向為A共軛方向。 

特點:Powell法本質上是以正定二次函數為背景,以共軛方向為基礎的一種方法。不同於其他的直接法, Powell法有一套完整的理論體系,故其計算效率高於其他直接法。若每次迭代的前n 個搜索方向都線性無關時,則原始Powell法具有二次終止性 Powell法使用一維搜索,而不是跳躍的探測步。Powell法的搜索方向不一定為下降方向。

不足:在原始Powell法中,必須保持每次迭代中前n個搜索方向線性無關,否則將永遠得不到問題的最優解。

為了避免出現搜索方向組線性相關的現象,Powell及其他人對原始Powell法進行修正:

三、梯度法

    又名最速下降法,求解無約束多元函數極值的數值方法,早在1847年就已由柯西(Cauchy))提出。它是導出其他更為實用、更為有效的優化方法的理論基礎。因此,梯度法是無約束優化方法中最基本的方法之一。該方法選取搜索方向Pκ的出發點是:怎樣選取Pk可使ƒ(X)下降得最快?或者說使ƒ(Xκ+λΡκ)-ƒ(Χκ)<0且不等式左式的絕對值盡量大。 

目標:求出平穩點(滿足Ñf(x)=0的x * )。對給定的解,按負梯度方向搜索其鄰域解,若鄰域中有更優的解(根據給定的評估函數評定),則移動至該鄰域解,繼續尋找,直至找不到為止。此時,就找到了局部最優解。方法非常簡單,但是缺陷也很明顯,即陷入到局部最優解之后無法跳出。

注意:最速下降法的搜索路徑呈直角鋸齒形,相鄰兩個搜索方向是正交的。

 

1、優點:計算簡單,需記憶的容量小;對初始點要求低,穩定性高;遠離極小點時收斂快,常作為其它方法的第一步。

2、缺點:收斂速度較慢(線性或不高於線性),原因是最速下降方向只有在該點附近有意義。直線搜索可能會產生一些問題,可能會“之字型”地下降。尤其當目標函數等值面是很扁的橢圓、橢球或類似圖形時,收斂更慢。

四、Newton法

由最速下降法可知,從全局角度來看,負梯度方向一般不是一個特別好的方向,有沒有更好的方向?

基本思想:利用目標函數f(x)在x(k)處的二階Taylor展開式去近似目標函數,用二次函數的極小點去逼近目標函數的極小點。

   或  

1、Newton法的最大優點是:Newton法是局部收斂的,當初始點選得合適時收斂很快,具有二階收斂速度,是目前算法中最快的一種。 對初始點要求高,一般要求初始點離極小點較近,否則不收斂。有時即使是收斂的,但因初始點離極大點或鞍點較近,會收斂於極大點或鞍點。

2、Newton法的搜索方向-H (x)-1 g(x),稱為Newton方向,是一個好方向,對二次函數此方向直指平穩點。如果H(x(k))是正定的,則H(x(k))-1必存在,從而算法是可行的,並且保證求得的平穩點是極小點。但在迭代過程中要求H(x(k))是正定的這一條件不一定能保證,因而它不一定是下降方向。一般在極小點附近的Hesse矩陣容易為正定的。所以基本Newton法在極小點附近才比較有效。

五、共軛梯度法

共軛梯度法最早是又Hestenes和Stiefle(1952)提出來的,用於解正定系數矩陣的線性方程組,在這個基礎上,Fletcher和Reeves (1964)首先提出了解非線性最優化問題的共軛梯度法。由於共軛梯度法不需要矩陣存儲,且有較快的收斂速度和二次終止性等優點,現在共軛梯度法已經廣泛地應用與實際問題中。

共軛梯度法(Conjugate Gradient)是介於最速下降法與牛頓法之間的一個方法,它僅需利用一階導數信息,但克服了最速下降法收斂慢的缺點,又避免了牛頓法需要存儲和計算Hesse矩陣並求逆的缺點,共軛梯度法不僅是解決大型線性方程組最有用的方法之一,也是解大型非線性最優化最有效的算法之一。 

共軛梯度法是一個典型的共軛方向法,它的每一個搜索方向是互相共軛的,而這些搜索方向d僅僅是負梯度方向與上一次迭代的搜索方向的組合。在各種優化算法中,共軛梯度法是非常重要的一種。其優點是所需存儲量小,具有步收斂性,穩定性高,而且不需要任何外來參數。

1、共軛梯度法不需要預先估計任何參數就可以計算,每次迭代所需的計算,主要是向量之間的運算,便於並行化。程序簡單,對大規模問題很有吸引力。對一般函數為超線性收斂。

2、共軛梯度法的收斂速度比最速下降法要快得多,同時也避免了要求海塞矩陣的計算。收斂速度依賴於一維搜索的精確性及Hesse矩陣的特征值的分布。

 

 

 

 

    局部領域搜索是基於貪婪思想持續地在當前解的領域中進行搜索,雖然算法通用易實現,且容易理解,但其搜索性能完全依賴於領域結構和初解,尤其窺陷入局部極小而無法保證全局優化性。針對局部領域搜索,為了實現全局優化,可嘗試的途徑有:以可控性概率接受劣解來逃逸局部極小,如模擬退火算法;確定性的局部極小突跳策略,如禁忌策略;擴大領域搜索結構,如TSP的2opt擴展到k-opt;多點並行搜索,如進化計算;變結構領域搜索( Mladenovic et al,1997)等等。

一、爬山法(Hill-Climbing)

爬山算法是一種簡單的貪心搜索算法,該算法每次從當前解的臨近解空間中選擇一個最優解作為當前解,直到達到一個局部最優解。爬山算法實現很簡單,其主要缺點是會陷入局部最優解,而不一定能搜索到全局最優解。如下圖所示:假設C點為當前解,爬山算法搜索到A點這個局部最優解就會停止搜索,因為在A點無論向那個方向小幅度移動都不能得到更優的解。

爬山法是向值增加的方向持續移動到簡單循環過程,算法在到達一個“峰頂”時終止,此時相鄰狀態中沒有比該“峰頂”更高的值。爬山法不維護搜索樹,當前節點只需要記錄當前狀態及其目標函數值;爬山法不會前瞻與當前狀態不直接相鄰的狀態的值——“就像健忘的人在大霧中試圖登頂珠峰一樣”。爬山法從來不會“下山”,只會向值比當前節點好的方向搜索,因而肯定不完備,很容易停留在局部極值上。
function HillClimbing(problem) return 一個局部最優狀態
    輸入:problem
    局部變量:current, 一個節點
              neighbor,一個節點
    current= MakeNode(Initial-State(problem));
    loop do
        neighbor= a highest-valued successor of current ;
        if VALUE[neighbor] <= VALUE[current] then return STATE[current];
        current= neighbor ;
    爬山法又稱貪婪局部搜索,只是選擇相鄰狀態中最好的一個。盡管貪婪是七宗罪之一,但是貪婪算法往往能夠獲得很好的效果。當然,爬山法會遇到以下問題:

(1)局部極值

(2)山脊:造成一系列的局部極值

(3)高原:平坦的局部極值區域——解決辦法:繼續側向移動
    隨機爬山法:在上山移動中,隨機選擇下一步,選擇的概率隨着上山移動到陡峭程度而變化。

首選爬山法:隨機地生成后繼節點直到生成一個優於當前節點的后繼。

隨機重新開始的爬山法:“如果一開始沒有成功,那么嘗試,繼續嘗試”算法通過隨機生成的初始狀態來進行一系列的爬山法搜索,找到目標時停止搜索。該算法以概率1接近於完備:因為算法最終會生成一個目標狀態作為初始狀態。如果每次爬山搜索成功的概率為p,則需要重新開始搜索的期望次數為 1/p。

二、模擬退火算法(Simulated Annealing)

“模擬退火”算法是源於對熱力學中退火過程的模擬,在某一給定初溫下,通過緩慢下降溫度參數,使算法能夠在多項式時間內給出一個近似最優解。

    爬山法是完完全全的貪心法,每次都鼠目寸光的選擇一個當前最優解,因此只能搜索到局部的最優值。模擬退火其實也是一種貪心算法,但是它的搜索過程引入了隨機因素。模擬退火算法與爬山法類似,但是它沒有選擇最佳的移動,而是選擇隨機的移動。如果該移動使情況得到改善,那么接受該移動;否則,算法以某個概率接受該移動。因此有可能會跳出這個局部的最優解,達到全局的最優解。以上圖為例,模擬退火算法在搜索到局部最優解A后,會以一定的概率接受到E的移動。也許經過幾次這樣的不是局部最優的移動后會到達D點,於是就跳出了局部最大值A。

模擬退火的原理:我們將熱力學的理論套用到統計學上,將搜尋空間內每一點想像成空氣內的分子;分子的能量,就是它本身的動能;而搜尋空間內的每一點,也像空氣分子一樣帶有“能量”,以表示該點對命題的合適程度。算法先以搜尋空間內一個任意點作起始:每一步先選擇一個“鄰居”,然后再計算從現有位置到達“鄰居”的概率。可以證明,模擬退火算法所得解依概率收斂到全局最優解。

當陷入局部最優之后,模擬退火算法要求概率根據算法進行過程中,逐步降低(逐漸降低才能趨向穩定)其跳出局部最優的概率,使其越來越趨於穩定。這一特性增加也同樣存在缺陷,即對於全局最優解,也存在一定概率跳出,從而使得求解過程不穩定。

隨着鄰域的范圍的增大,跳出局部極小區域,最終進入全局極小區域的概率越來越大,但是代價是總的迭代次數增加。但是隨着鄰域范圍的增大,會出現所謂的在極值附近來回”振盪”而無法落入極值點的現象。可以推測,隨着鄰域范圍的進一步增大及其隨機特性,模擬退火算法將退化到隨機尋找極值並進行記錄極值的算法。當然這種算法也存在問題,即對於某些情況下,也不易達到全局最優。例如,解空間中僅有兩個局部最優,其中一個是全局最優,那么模擬退火似乎並不一定總能進入到全局最優解當中。

Create initial solution S

repeat

for i=1 to iteration-length do

Generate a random transition from S to Si

If ( C(S) <= C(Si) ) then

S=Si

else if( exp(C(S)-C(Si))/kt > random[0,1) ) then

S=Si

Reduce Temperature t

until ( no change in C(S) )

C(S): Cost or Loss function of Solution S.

1、在其他參數合適的情況下,初始解的位置與鄰域結構是2個重要因素。

2、初始解的位置與鄰域結構的設計之間對於找到最優解的問題而言存在依賴關系。隨着鄰域的范圍的增大,跳出局部極小區域,最終進入全局極小區域的概率越來越大,同時也可能會產生振盪,無法落入極值區域。

3、模擬退火本質上也是一種 暴力搜索,只不過是利用隨機的性質和局部極值區域連續(也取決於求解問題中鄰域的結構)的特性避免了大量計算,進而在較短時間內從某種概率上逼近局部最優值和全局最優值。

三、禁忌搜索(Tabu Search或Taboo Search,TS)

禁忌搜索(Tabu Search或Taboo Search,簡稱TS)的思想最早由Glover(1986)提出,它是對局部領域搜索的一種擴展,是一種全局逐步尋優算法,是對人類智力過程的一種模擬。TS算法通過引入一個靈活的存儲結構和相應的禁忌准則來避免迂回搜索,並通過藐視准則來赦免一些被禁忌的優良狀態,進而保證多樣化的有效探索以最終實現全局優化。相對於模擬退火和遺傳算法,TS是又一種搜索特點不同的meta-heuristic算法。

禁忌搜索是人工智能的一種體現,是局部領域搜索的一種擴展。禁忌搜索最重要的思想是標記對應已搜索的局部最優解的一些對象,並在進一步的迭代搜索中盡量避開這些對象(而不是絕對禁止循環),從而保證對不同的有效搜索途徑的探索。禁忌搜索涉及到領域(neighborhood)、禁忌表(tabu list)、禁忌長度(tabu 1ength)、候選解(candidate)、藐視准則(candidate)等概念。

簡單TS算法的基本思想描述如下:

(1)給定算法參數,隨機產生初始解x,置禁忌表為空。

(2)判斷算法終止條件是否滿足?若是,則結束算法並輸出優化結果;否則,繼續以下步驟。

(3)利用當前解的鄰域函數產生其所有(或若干)鄰域解,並從中確定若干候選解。

(4)對候選解判斷特赦准則是否滿足?若成立,則用滿足特赦准則的最佳狀態y替代x成為新的當前解,即x=y,並用與y對應的禁忌對象替換最早進入禁忌表的禁忌對象,同時用y替換“best so far”狀態,然后轉步驟6;否則,繼續以下步驟。

(5)判斷候選解對應的各對象的禁忌屬性,選擇候選解集中非禁忌對象對應的最佳狀態為新的當前解,同時用與之對應的禁忌對象替換最早進入禁忌表的禁忌對象元素。

(6)轉步驟(2)。

 

 

局部搜索,模擬退火,遺傳算法,禁忌搜索的形象比喻:為了找出地球上最高的山,一群有志氣的兔子們開始想辦法。
    1、兔子朝着比現在高的地方跳去。他們找到了不遠處的最高山峰。但是這座山不一定是珠穆朗瑪峰。這就是局部搜索,它不能保證局部最優值就是全局最優值。
    2、兔子喝醉了。他隨機地跳了很長時間。這期間,它可能走向高處,也可能踏入平地。但是,他漸漸清醒了並朝最高方向跳去。這就是模擬退火。
    3、兔子們吃了失憶葯片,並被發射到太空,然后隨機落到了地球上的某些地方。他們不知道自己的使命是什么。但是,如果你過幾年就殺死一部分海拔低的兔子,多產的兔子們自己就會找到珠穆朗瑪峰。這就是遺傳算法。
    4、兔子們知道一個兔的力量是渺小的。他們互相轉告着,哪里的山已經找過,並且找過的每一座山他們都留下一只兔子做記號。他們制定了下一步去哪里尋找的策略。這就是禁忌搜索。 

 

 

 

 



http://blog.sciencenet.cn/blog-628137-497041.html 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM