對於複雜的問題,求解最優解比較麻煩,耗費大量時間,退而求其次,誕生了各種啟發式演算法來求解其次優解或近似最優解。區域性搜尋演算法是一種解決優化問題的一種啟發式演算法,是一種簡單的貪心搜尋演算法。
演算法思想:從乙個鄰居解開始,通過鄰域動作產生鄰居解,然後根據策略需求,對鄰居解進行選擇,一直重複上述操作,直到達到終止條件。
不同的區域性搜尋演算法之間的區別在於:領域動作的定義、對領域解進行選擇時的策略。
領域動作一般是乙個函式,通過該函式可以根據當前的解產生所對應的鄰居解的集合。
爬山演算法是一種簡單的貪心搜尋演算法,該演算法每次從當前解的臨近解空間中選擇乙個最優解作為當前解,直到達到乙個區域性最優解。這種演算法思想很單純,但是也存在乙個很大的缺陷。在搜尋選擇的過程中有可能會陷入區域性最優解,而這個區域性最優解不一定是全域性最優解。
爬山法是完完全全的貪心法。
2.1 背景
物理退火(材料中的原子原來會停留在使內能有區域性最小值的位置,加熱使能量變大,原子會離開原來位置,而隨機在其他位置中移動。退火冷卻時速度較慢,使得原子有較多可能可以找到內能比原先更低的位置。【簡言之:加熱的時候快速、隨機分散到各處;退火的時候,降溫(移動)】)
2.2 基本思想
模擬退火演算法原理也和物理上固體退火的原理近似,是一種全域性優化的貪心演算法,在貪心的時候一定概率接受乙個更差的解(從某一較高初溫出發,伴隨溫度引數的不斷下降,結合概率突跳特性在解空間中隨機尋找目標函式的全域性最優解),即在區域性最優解時能概率性地跳出並最終趨於全域性最優,具有很好的跳出區域性最優的能力,在演算法後期有良好的收斂性。
簡言之,模擬退火其實是一種貪心演算法,只不過與爬山法不同的是,模擬退火演算法在搜尋過程引入了隨機因素
。模擬退火演算法以一定的概率來接受乙個比當前解要差的解,因此有可能會跳出這個區域性的最優解,達到全域性的最優解。
2.3 演算法流程
上面提到該演算法比較核心的部分是以一定的概率來接受乙個比當前結果更差的乙個解,對於「一定的概率」的定義,根據熱力學的定義,在溫度為t的時候,出現能量差為de的降溫概率為p(de)=exp(de/(kt))
其中:de表示能量差,de<0(由於是降溫,溫度是變低的)
exp代表自然常數
k為乙個常數
結合指數函式的影象以及指數部分是負數的特性,可以知道p(de)的取值範圍為(0,1),如下圖紅色曲線所示:
(圖比較醜,用附件畫圖直接畫的,請見諒【鬼臉】)
隨著溫度的降低,p的值也逐漸降低,於是接受更差的解的概率也就越小,退火過程就趨於穩定。
偽**:
while(t>t_min)
模擬退火的整體思想是:接納一定的「不好」,可能最後得到的「更好」
迭代區域性搜尋屬於探索性區域性搜尋方法(explorative local search methods)的一種。它在區域性搜尋得到的區域性最優解上,加入了擾動,然後再重新進行區域性搜尋。
【ing,有機會會繼續補充】
A 演算法(啟發式搜尋)
a 演算法,a a star 演算法是一種靜態路網中求解最短路徑最有效的直接搜尋方法,也是解決許多搜尋問題的有效演算法。演算法中的距離估算值與實際值越接近,最終搜尋速度越快。別稱 啟發式搜尋 表示式 f n g n h n f n g n h n f n g n h n 公式表示為 f n g n ...
啟發式搜尋
啟發式搜尋 heuristically search 又稱為有資訊搜尋 informed search 它是利用問題擁有的啟發資訊來引導搜尋,達到減少搜尋範圍 降低問題複雜度的目的,這種利用啟發資訊的搜尋過程稱為啟發式搜尋。例題 八數碼問題 運用優先佇列,根據目前已經確定的位置算出目前的價值,並匯入...
啟發式搜尋
啟發式搜尋 啟發式搜尋就是在狀態空間中的搜尋對每乙個搜尋的位置進行評估,得到最好的位置,再從這個位置進行搜尋直到目標。這樣可以省略大量無謂的搜尋路徑,提高了效率。在啟發式搜尋中,對位置的估價是十分重要的。採用了不同的估價可以有不同的效果。在啟發式搜尋中,我們每次找到當前 最有希望是最短路徑 的狀態進...