當前位置:首頁 » 操作系統 » 位爬山演算法

位爬山演算法

發布時間: 2025-04-13 12:00:40

Ⅰ 爬山演算法(Hill Climbing)解決旅行商問題(TSP)

旅行商問題 TSP(Travelling Salesman Problem)是數學領域中著名問題之一。

TSP問題被證明是 NP完全問題 ,這類問題不者寬腔能用精確演算法實現,而需要使用相似演算法。

TSP問題分為兩類: 對稱TSP (Symmetric TSP)以及 非對稱TSP (Asymmetric TSP)

本文解決的是對稱TSP
假設:A表示城市A,B表示城市B,D(A->B)為城市A到城市B的距離,同理D(B->A)為城市B到城市A的距離
對稱TSP中,D(A->B) = D(B->A),城巧升市間形成無向圖
非對稱TSP中,D(A->B) ≠ D(B->A),城市間形成有向圖

現實生活中,可能出現單行線、交通事故、機票往返價格不同等情況,均可以打破對稱性。

爬山演算法是一種局部擇優的方法,採用啟發式方法。直觀的解釋如下圖:

爬山演算法,顧名思義就是 爬山 ,找到第一個山峰的時候就停止,作為演算法的輸出結果。所以,爬首衫山演算法容易把局部最優解A作為演算法的輸出,而我們的目的是找到全局最優解B。

如下圖所示,盡管在這個圖中的許多局部極大值,仍然可以使用 模擬退火演算法(Simulated Annealing) 發現全局最大值。

必要解釋詳見注釋

此處根據經緯度計算城市間距離的公式,請參考 Calculate distance between two latitude-longitude points? (Haversine formula)

此處初始化數據源可以使用 TSPLIB 中所提供的數據,此程序大致闡述爬山演算法的實現。

編寫於一個失眠夜

菜鳥一枚,歡迎評論區相互交流,加速你我成長•ᴗ•。

Ⅱ 為什麼先天遺傳比後天環境更重要總結

它是由美國的J.Holland教授1975年首先提出,其主要特點是直接對結構對象進行操作,不存在求導和函數連續性的限定;具有內在的隱並行性和更好的全局尋優能力;採用概率化的尋優方法,能自動獲取和指導優化的搜索空間,自適應地調整搜索方向,不需要確定的規則。遺傳演算法的這些性質,已被人們廣泛地應用於組合優化、機器學習、信號處理、自適應控制和人工生命等領域。它是現代有關智能計算中的關鍵技術。 對於一個求函數最大值的優化問題(求函數最小值也類同),一般可以描述為下列數學規劃模型: 式中為決策變數,為目標函數式,式2-2、2-3為約束條件,U是基本空間,R是U的子集。滿足約束條件的解X稱為可行解,集合R表示所有滿足約束條件的解所組成的集合,稱為可行解集合。 遺傳演算法的基本運算過程如下: a)初始化:設置進化代數計數器t=0,設置最大進化代數T,隨機生成M個個體作為初始群體P(0)。 b)個體評價:計算群體P(t)中各個個體的適應度。 c)選擇運算:將選擇運算元作用於群體。選擇的目的是把優化的個體直接遺傳到下一代或通過配對交叉產生新的個體再遺傳到下一代。選擇操作是建立在群體中個體的適應度評估基礎上的。 d)交叉運算;將交叉運算元作用於群體。所謂交叉是指把兩個父代個體的部分結構加以替換重組而生成新個體的操作。遺傳演算法中起核心作用的就是交叉運算元。 e)變異運算:將變異運算元作用於群體。即是對群體中的個體串的某些基因座上的基因值作變動。 群體P(t)經過選擇、交叉、變異運算之後得到下一代群體P(t 1)。 f)終止條件判斷:若tT,則以進化過程中所得到的具有最大適應度個體作為最優解輸出,終止計算。 遺傳是不可逆轉的,而後天是可以改變的。所以說遺傳比後天更重要。 進入90年代,遺傳演算法迎來了興盛發展時期,無論是理論研究還是應用研究都成了十分熱門的課題。尤其是遺傳演算法的應用研究顯得格外活躍,不但它的應用領域擴大,而且利用遺傳演算法進行優化和規則學習的能力也顯著提高,同時產業應用方面的研究也在摸索之中。此外一些新的理論和方法在應用研究中亦得到了迅速的發展,這些無疑均給遺傳演算法增添了新的活力。遺傳演算法的應用研究已從初期的組合優化求解擴展到了許多更新、更工程化的應用方面。 隨著應用領域的擴展,遺傳演算法的研究出現了幾個引人注目的新動向:一是基於遺傳演算法的機器學習,這一新的研究課題把遺傳演算法從歷來離散的搜索空間的優化搜索演算法擴展到具有獨特的規則生成功能的嶄新的機器學習演算法。這一新的學習機制對於解決人工智慧中知識獲取和知識優化精煉的瓶頸難題帶來了希望。二是遺傳演算法正日益和神經網路、模糊推理以及混沌理論等其它智能計算方法相互滲透和結合,這對開拓21世紀中新的智能計算技術將具有重要的意義。三是並行處理的遺傳演算法的研究十分活躍。這一研究不僅對遺傳演算法本身的發展,而且對於新一代智能計算機體系結構的研究都是十分重要的。四是遺傳演算法和另一個稱為人工生命的嶄新研究領域正不斷滲透。所謂人工生命即是用計算機模擬自然界豐富多彩的生命現象,其中生物的自適應、進化和免疫等現象是人工生命的重要研究對象,而遺傳演算法在這方面將會發揮一定的作用,五是遺傳演算法和進化規劃(Evolution Programming,EP)以及進化策略(Evolution Strategy,ES)等進化計算理論日益結合。EP和ES幾乎是和遺傳演算法同時獨立發展起來的,同遺傳演算法一樣,它們也是模擬自然界生物進化機制的只能計算方法,即同遺傳演算法具有相同之處,也有各自的特點。目前,這三者之間的比較研究和彼此結合的探討正形成熱點。 1991年D.Whitey在他的論文中提出了基於領域交叉的交叉運算元(Adjacency based crossover),這個運算元是特別針對用序號表示基因的個體的交叉,並將其應用到了TSP問題中,通過實驗對其進行了驗證。 D.H.Ackley等提出了隨即迭代遺傳爬山法(Stochastic Iterated Genetic Hill-climbing,SIGH)採用了一種復雜的概率選舉機制,此機制中由m個「投票者」來共同決定新個體的值(m表示群體的大小)。實驗結果表明,SIGH與單點交叉、均勻交叉的神經遺傳演算法相比,所測試的六個函數中有四個表現出更好的性能,而且總體來講,SIGH比現存的許多演算法在求解速度方面更有競爭力。 H.Bersini和G.Seront將遺傳演算法與單一方法(simplex method)結合起來,形成了一種叫單一操作的多親交叉運算元(simplex crossover),該運算元在根據兩個母體以及一個額外的個體產生新個體,事實上他的交叉結果與對三個個體用選舉交叉產生的結果一致。同時,文獻還將三者交叉運算元與點交叉、均勻交叉做了比較,結果表明,三者交叉運算元比其餘兩個有更好的性能。 國內也有不少的專家和學者對遺傳演算法的交叉運算元進行改進。2002年,戴曉明等應用多種群遺傳並行進化的思想,對不同種群基於不同的遺傳策略,如變異概率,不同的變異運算元等來搜索變數空間,並利用種群間遷移運算元來進行遺傳信息交流,以解決經典遺傳演算法的收斂到局部最優值問題 2004年,趙宏立等針對簡單遺傳演算法在較大規模組合優化問題上搜索效率不高的現象,提出了一種用基因塊編碼的並行遺傳演算法(Building-block Coded Parallel GA,BCPGA)。該方法以粗粒度並行遺傳演算法為基本框架,在染色體群體中識別出可能的基因塊,然後用基因塊作為新的基因單位對染色體重新編碼,產生長度較短的染色體,在用重新編碼的染色體群體作為下一輪以相同方式演化的初始群體。

Ⅲ 什麼是爬山演算法

我在網路上找的!~~
簡介
爬山演算法是一種局部擇優的方法,採用啟發式方法,是對深度優先搜索的一種改進,它利用反饋信息幫助生成解的決策。 屬於人工智慧演算法的一種。

演算法:
function HILL-CLIMBING(problem) returns a state that is a local maximum
inputs: problem, a problem
local variables: current, a node
neighbor, a node
current <- MAKE-NODE(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)、山脊:搜索可能會在山脊的兩面來回震盪,前進步伐很小。

其他相關演算法
stochastic hill climbing
First-choice hill climbing
Ramdom-restart hill climbing
Simulated annealing search
Local beam search

如果您認為本詞條還有待完善,需要補充新內容或修改錯誤內容,請 編輯詞條

Ⅳ 爬山演算法

爬山演算法是一種局部擇優的方法岩嫌罩,是一種局部貪心的最優演算法。
採用啟發式方法,是對深度優先搜索的一種改進,它利用反饋信息幫助生成解的決策。 該演算法每次從當前解的臨近解空間中選擇一個最優解作為當前解,
直到達到一個局部最優解,屬於人工智慧演算法的一種。

實現簡單,其主要缺點是會陷入局部最優者銀解,不一定能搜索到全局最優解。
如下圖所示:假設C點為當前解,爬山演算法搜索到A點這個局部最優解就會停止搜索,
因為在A點無論向那個方向小幅度移動都不能得到更優的解。

如果想進一步了解爬山演算法及其應用粗鬧,請參考:
基於爬山演算法求解TSP問題(JAVA實現)
機器學習優化演算法之爬山演算法小結

Ⅳ 爬山演算法

《混亂》

這本書提到了一個非常有效的演算法,

叫爬山演算法。

什麼叫爬山演算法?

(註:爬山演算法是人工智慧演算法的一種,

其原理是把你隨機地拋在地球上的一個點,拋在那個點以後,

你就近在最近的幾公里之內尋找最高點,然後找到最高點之後,

立刻站到這個最高點上去,再在最近的幾公里之內尋找最高點。)

用計算機模擬我們的人生,

我們的人生就是那個屏幕上,

現在屏幕中所有的坐標、高度都未知,

然後看看誰能用最快的方法找到這個屏幕上的最高點。

用什麼樣的方法找到最高點?

全球大量的計算機編程高手開始設計這套邏輯,

有的人沿著邊走,有的人直接到中心,有人用交叉、畫五角星法……

各種各樣的方法,到最後發現,

最優秀、最快能夠找到最高點的演算法只有一個,

這個演算法被稱作爬山演算法。

它的方法是什麼?

就是在整個屏幕上隨機一拋,

讓這個點落在任何一個地方,然後在能力范圍之內搜索,

在能力范圍之內盡量找到周圍最高的高度,找到最高的高度以後,

以這個最高的高度為圓心再找周圍最高的高度,然後依次循環(

找最高點周圍的下一個最高點),盡可能地找到最高的高點。

如果你今天特別倒霉,掉到一片沙漠中間,

這個沙漠周圍的高度都差不多,沒有特別高的高度,那該怎麼辦?

這時候需要重啟,告租拿起來隨機的一拋,

重啟到另外一個地方再找另外的高度。

爬山演算法裡面有兩個核心的點:

第一個點,

是你要接受隨機的一拋,

你要接受有不確定性的發生;

第二個點,

是無論命運把你拋到什麼地方,

你都要努力地展開搜索,

盡胡悶可能地做到最好,盡可能地找到最高的高點。

這就是爬山演算法的精髓。

使用爬山演算法探褲友彎索一片屏幕,到最後發現這種方法是最快的。

就是要學會擁抱不確定性。

人生所有的煩惱、痛苦,

都是來自於我們對不確定性的抗拒。

我們希望我們的孩子按照一個模式成長,

我們希望我們的工作按照一個模式發展,

我們希望我們創業做的公司,

能夠按照一個節奏安全一個模式發展,

是這些抗拒給我們帶來大量的煩惱。

但是實際上你唯一需要做的事,是擁抱不確定性。

當不確定性發生、命運將你隨機一拋的時候,

你能夠隨時隨地、立刻展開最好的努力,

而不是待在原地拚命地抱怨,

拚命地對標,拚命地去維權,

反而這些東西浪費了我們太多的時間。

作者  | 樊登

來源  | 筆記俠(ID:Notesman)

熱點內容
浪潮存儲厚積薄發圖片 發布:2025-04-13 22:37:54 瀏覽:492
sql新建作業 發布:2025-04-13 20:04:15 瀏覽:767
wp磁貼文件夾 發布:2025-04-13 19:49:06 瀏覽:495
桃子神社解壓碼 發布:2025-04-13 19:48:59 瀏覽:854
ubuntu配置nginxphp 發布:2025-04-13 19:30:02 瀏覽:822
小米解壓亂碼 發布:2025-04-13 19:04:57 瀏覽:769
sql2008技術內幕 發布:2025-04-13 19:04:52 瀏覽:500
python中單引號和雙引號 發布:2025-04-13 18:29:57 瀏覽:63
屏密碼怎麼取消 發布:2025-04-13 18:29:56 瀏覽:363
nc伺服器是什麼 發布:2025-04-13 18:14:55 瀏覽:109