Ⅰ 元啟發式演算法和啟發式演算法有什麼區別
啟發式演算法與元啟發式演算法對區別在於是否存在「隨機因素」。 對一個同樣的問題,啟發式演算法(heuristics)只要給定了一個輸入,那麼演算法執行的步驟就固定下來了,輸出也因此固定,多次運算結果保持一致。
而元啟發式演算法(meta-heuristics)裡麵包括了隨機因素,如GA中的交叉因子,模擬退火中的metropolis准則,這些隨機因素也使得演算法有一定概率跳出局部最優解而去嘗試全局最優解,因此元啟發式演算法在固定的輸入下,而輸出是不固定的。
啟發式演算法(Heuristic Algorigthm)是一種基於直觀或經驗構造的演算法,在可接受的花費(指計算時間、計算空間等)給出待解決優化問題的每一實例的一個可行解,該可行解與與最優解的偏離程度一般不可以事先預計。
啟發式演算法是一種技術,這種演算法可以在可接受的計算費用內找到最好的解,但不一定能保證所得到解的可行性及最優性,甚至大多數情況下無法闡述所得解與最優解之間的近似程度。
元啟發式演算法(MetaHeuristic Algorigthm)是啟發式演算法的改進,它是隨機演算法與局部搜索演算法相結合的產物,常見的啟發式演算法包括遺傳演算法、模擬退火演算法、禁忌搜索演算法及神經網路演算法等。
新興的元啟發式演算法有、粒子群優化演算法、差分進化演算法,蟻群優化演算法、螢火蟲演算法、布穀鳥演算法、和聲搜索演算法、差分進化演算法、隨機蛙跳演算法、細菌覓食演算法、蝙蝠演算法的演算法等。
Ⅱ 啟發式演算法
什麼是演算法?從枚舉到貪心再到啟發式(上)
目標 :要優化的東西
決策 :根據目標做出的決策
約束 :進行決策時必須遵循的條件
算例 :問題參數的具體化
枚舉法 :將問題所有的解一一枚舉出來,挨個去評價,選出最好的那個
1.枚舉法能夠找到問題的最優解
2.枚舉法求解時間隨問題規模增長而呈爆炸式增長
貪心法 :利用「構造」的方式生成解,速度相對而言會非常快,同時不會隨著問題規模的增長而大幅度增加,是平緩的線性增長
什麼是演算法?從枚舉到貪心再到啟發式(下)
啟發式演算法 :在一個合理的求解資源范圍內(合理的時間,合理的內存開銷等)求得一個較為滿意的解。目前主要包括鄰域搜索和群體仿生兩大類。
解空間 :所有該問題的解的集合,包括可行解和不可行解
局部搜索 :不完全遍歷解空間,只選擇一部分進行遍歷,進而大大降低搜索需要的資源。為了提高局部搜索的質量,大部分局部搜索演算法都會在搜索的時候不斷地抓取多個區域進行搜索,直到滿足演算法終止條件。
鄰域 :在鄰域結構定義下的解的集合,它是一個相對的概念,即鄰域肯定是基於某個解產生的
鄰居解 :鄰域內某個解的稱呼
鄰域結構 :定義了一個解的鄰域
鄰域結構的設計在啟發式演算法中非常重要,它直接決定了搜索的范圍,對最終的搜索結構有著重要的影響,直接決定了最終結果質量的好壞
搜索過程
不斷重復步驟2-步驟5,直到滿足終止條件,最後輸出全局最優解
所有的啟發式找到的都是滿意解,不能說是最優解(即便真的是),因為它遍歷的是解空間的局部。
一般情況下,啟發式演算法的時間是隨著問題規模增長而呈線性增長的
干貨 | 想學習優化演算法,不知從何學起?
鄰域搜索類
迭代局部搜索演算法
模擬退火演算法
變鄰域搜索演算法
禁忌搜索
自適應大鄰域搜索
群體仿生類
遺傳演算法
蟻群演算法
粒子群演算法
人工魚群演算法
演算法應用
禁忌搜索演算法求解帶時間窗的車輛路徑問題
基於樹表示法的變鄰域搜索演算法求解考慮後進先出的取派貨旅行商問題
變鄰域搜索演算法求解Max-Mean dispersion problem
遺傳演算法求解混合流水車間調度問題
Ⅲ 元啟發式演算法的演算法原理
1. 從一個或多個候選解開始作為初始值(pop(t))。
2. 根據初始值計算目標函數值
3. 基於已獲得的信息,通過個體變異、組合等方法不斷更新候選解域。
4. 新的候選解域進入下一輪迭代(pop(t+1))
如下圖:
例如它常能發現很不錯的解,但也沒辦法證明它不會得到較壞的解;它通常可在合理時間解出答案,但也沒辦法知道它是否每次都可以這樣的速度求解。有時候人們會發現在某些特殊情況下,啟發式演算法會得到很壞的答案或效率極差,然而造成那些特殊情況的數據結構,也許永遠不會在現實世界出現。因此現實世界中啟發式演算法常用來解決問題。啟發式演算法處理許多實際問題時通常可以在合理時間內得到不錯的答案。有一類的通用啟發式策略稱為元啟發式演算法(metaheuristic algorithm) ,通常使用亂數搜尋技巧。他們可以應用在非常廣泛的問題上,但不能保證效率。
Ⅳ 什麼是啟發式演算法
什麼是啟發式演算法
大自然是神奇的,它造就了很多巧妙的手段和運行機制。受大自然的啟發,人們從大自然的運行規律中找到了許多解決實際問題的方法。對於那些受大自然的運行規律或者面向具體問題的經驗、規則啟發出來的方法,人們常常稱之為啟發式演算法(HeuristicAlgorithm)。現在的啟發式演算法也不是全部來自然的規律,也有來自人類積累的工作經驗。駕駛汽車到達某人的家,寫成演算法是這樣的:沿167 號高速公路往南行至陽谷;從陽谷高速出口出來後往山上開4.5 英里;在一個雜物店旁邊的紅綠燈路口右轉,接著在第一個路口左轉;從左邊褐色大房子的車道進去,就是某人的家。啟發式方法來描述則可能是這樣:找出上一次我們寄給你的信,照著信上面的寄出地址開車到這個鎮;到了之後你問一下我們的房子在哪裡。這里每個人都認識我們—頂肯定有人會很願意幫助你的;如果你找不到人,那就找個公共電話亭給我們打電話,我們會出來接你。
什麼是啟發式演算法
建議你去了解下a*演算法吧
簡而言之就是會有一個評估函數進行評價以輔助選出最優接
經典的啟發式演算法包括哪些? 5分
蟻群,模擬退火,禁忌搜索,人工神經網路等。。。
推薦教材《現代優化計算方法》第二版 邢文訓,謝金星 清華大學出版社
另一本補充,《最優化理論與方法》 黃平 清華大學出版社
第一本教材網上有電子版,你自己搜下
對 啟發式演算法的理解
什麼是啟發式演算法轉自:p:blog.csdn/aris_zzy/archive/2006/05/27/757156.aspx引言:
解決實際的問題,要建模型,在求解。求解要選擇演算法,只有我們對各種演算法的優缺點都很熟悉後才能根據實際問題選出有效的演算法。但是對各種演算法都了如指掌是不現實的,但多知道一些,會使你的選擇集更大,找出最好演算法的概率越大。現在研一,要開題了些點文獻綜述,願與大家分享。大自然是神奇的,它造就了很多巧妙的手段和運行機制。受大自然的啟發,人們從大自然的運行規律中找到了許多解決實際問題的方法。對於那些受大自然的運行規律或者面向具體問題的經驗、規則啟發出來的方法,人們常常稱之為啟發式演算法(Heuristic Algorithm)。現在的啟發式演算法也不是全部來自然的規律,也有來自人類積功的工作經驗。啟發式演算法的發展:
啟發式演算法的計算量都比較大,所以啟發式演算法伴隨著計算機技術的發展,取得了巨大的成就。
40年代:由於實際需要,提出了啟發式演算法(快速有效)。
50年代:逐步繁榮,其中 貪婪演算法和局部搜索 等到人們的關注。
60年代: 反思,發現以前提出的啟發式演算法速度很快,但是解得質量不能保證,而且對大規
模的問題仍然無能為力(收斂速度慢)。啟發式演算法的不足和如何解決方法:
(水平有限 僅僅提出6點)
啟發式演算法目前缺乏統一、完整的理論體系。
很難解決! 啟發式演算法的提出就是根據經驗提出,沒有什麼堅實的理論基礎。
由於NP理論,啟發式演算法就解得全局最優性無法保證。
等NP?=P有結果了再說吧,不知道這個世紀能不能行。
各種啟發式演算法都有個自優點如何,完美結合。
如果你沒有實際經驗,你就別去干這個,相結合就要做大量嘗試,或許會有意外的收獲。
啟發式演算法中的參數對演算法的效果起著至關重要的作用,如何有效設置參數。
還是那句話,這是經驗活但還要悟性,只有try again………..
啟發演算法缺乏有效的迭代停止條件。
還是經驗,迭代次數100不行,就200,還不行就1000…………
還不行估計就是演算法有問題,或者你把它用錯地方了………..
啟發式演算法收斂速度的研究等。
你會發現,沒有完美的東西,要快你就要付出代價,就是越快你得到的解也就遠差。其中(4)集中反映了超啟發式演算法的克服局部最優的能力。雖然人們研究對啟發式演算法的研究將近50年,但它還有很多不足:1.啟發式演算法目前缺乏統一、完整的理論體系。2.由於NP理論,各種啟發式演算法都不可避免的遭遇到局部最優的問題,如何判斷3.各種啟發式演算法都有個自優點如何,完美結合。4.啟發式演算法中的參數對演算法的效果起著至關重要的作用,如何有效設置參數。5.啟發演算法缺乏有效的迭代停止條件。6.啟發式演算法收斂速度的研究等。
70年代:計算復雜性理論的提出,NP問題。許多實際問題不可能在合理的時間范圍內找到全局最優解。發現貪婪演算法和局部搜索演算法速度快,但解不好的原因主要是他們只是在局部的區域內找解,等到的解沒有全局最優性。
由此必須引入新的搜索機制和策略………..
Holland的遺傳演算法出現了(Genetic Algorithm)再次引發了人們研究啟發式演算法的
興趣。
80年代以後:
模擬退火演算法(Simulated Annealing Algorithm),人工神經網路(Artificial Neural Network),禁忌搜索(Tab......
什麼是啟發式演算法(轉)
啟發式方法(試探法)是一種幫你尋求答案的技術,但它給出的答案是具有偶然性的(subjecttochance),因為啟發式方法僅僅告訴你該如何去找,而沒有告訴你要找什麼。它並不告訴你該如何直接從A點到達B點,它甚至可能連A點和B點在哪裡都不知道。實際上,啟發式方法是穿著小丑兒外套的演算法:它的結果不太好預測,也更有趣,但不會給你什麼30
天無效退款的保證。
駕駛汽車到達某人的家,寫成演算法是這樣的:沿167
號高速公路往南行至Puyallup;從SouthHillMall出口出來後往山上開4.5
英里;在一個雜物店旁邊的紅綠燈路口右轉,接著在第一個路口左轉;從左邊褐色大房子的車道進去,就是NorthCedar路714號。
用啟發式方法來描述則可能是這樣:找出上一次我們寄給你的信,照著信上面的寄出地址開車到這個鎮;到了之後你問一下我們的房子在哪裡。這里每個人都認識我們——肯定有人會很願意幫助你的;如果你找不到人,那就找個公共電話亭給我們打電話,我們會出來接你。
從上面的啟發式演算法的解釋可以看出,啟發式演算法的難點是建立符合實際問題的一系列啟發式規則。啟發式演算法的優點在於它比盲目型的搜索法要高效,一個經過仔細設計的啟發函數,往往在很快的時間內就可得到一個搜索問題的最優解,對於NP問題,亦可在多項式時間內得到一個較優解。
啟發式演算法的最短路徑
所謂的最短路徑問題有很多種意思, 在這里啟發式指的是一個在一個搜尋樹的節點上定義的函數h(n),用於評估從此節點到目標節點最便宜的路徑。啟發式通常用於資訊充分的搜尋演算法,例如最好優先貪婪演算法與A*。最好優先貪婪演算法會為啟發式函數選擇最低代價的節點;A*則會為g(n) + h(n)選擇最低代價的節點,此g(n)是從起始節點到目前節點的路徑的確實代價。如果h(n)是可接受的(admissible)意即h(n)未曾付出超過達到目標的代價,則A*一定會找出最佳解。最能感受到啟發式演算法好處的經典問題是n-puzzle。此問題在計算錯誤的拼圖圖形,與計算任兩塊拼圖的曼哈頓距離的總和以及它距離目的有多遠時,使用了本演算法。注意,上述兩條件都必須在可接受的范圍內。
什麼啟發式演算法可以短時間求到最優解
馬踏棋盤的問題很早就有人提出,且早在1823年,J.C.Warnsdorff就提出了一個有名的演算法。在每個結點對其子結點進行選取時,優先選擇『出口』最小的進行搜索,『出口』的意思是在這些子結點中它們的可行子結點的個數
啟發式演算法的新演算法
如何找到一個分叉率較少又通用的合理啟發式演算法,已被人工智慧社群深入探究過。 他們使用幾種常見技術:部分問題的解答的代價通常可以評估解決整個問題的代價,通常很合理。例如一個10-puzzle拼盤,解題的代價應該與將1到5的方塊移回正確位置的代價差不多。通常解題者會先建立一個儲存部份問題所需代價的模式資料庫(pattern database)以評估問題。 解決較易的近似問題通常可以拿來合理評估原先問題。例如曼哈頓距離是一個簡單版本的n-puzzle問題,因為我們假設可以獨立移動一個方塊到我們想要的位置,而暫不考慮會移到其他方塊的問題。 給我們一群合理的啟發式函式h1(n),h2(n),...,hi(n),而函式h(n) = max{h1(n),h2(n),...,hi(n)}則是個可預測這些函式的啟發式函式。 一個在1993年由A.E. Prieditis寫出的程式ABSOLVER就運用了這些技術,這程式可以自動為問題產生啟發式演算法。ABSOLVER為8-puzzle產生的啟發式演算法優於任何先前存在的!而且它也發現了第一個有用的解魔術方塊的啟發式程式。
啟發式演算法的概括內容
計算機科學的兩大基礎目標,就是發現可證明其執行效率良好且可得最佳解或次佳解的演算法。而啟發式演算法則試圖一次提供一或全部目標。 例如它常能發現很不錯的解,但也沒辦法證明它不會得到較壞的解;它通常可在合理時間解出答案,但也沒辦法知道它是否每次都可以這樣的速度求解。有時候人們會發現在某些特殊情況下,啟發式演算法會得到很壞的答案或效率極差,然而造成那些特殊情況的數據組合,也許永遠不會在現實世界出現。因此現實世界中啟發式演算法常用來解決問題。啟發式演算法處理許多實際問題時通常可以在合理時間內得到不錯的答案。有一類的通用啟發式策略稱為元啟發式演算法(metaheuristic),通常使用亂數搜尋技巧。他們可以應用在非常廣泛的問題上,但不能保證效率。近年來隨著智能計算領域的發展,出現了一類被稱為超啟發式演算法(Hyper-Heuristic Algorithm)的新演算法類型。最近幾年,智能計算領域的著名國際會議(GECCO 2009, CEC 2010,PPSN 2010)[1]分別舉辦了專門針對超啟發式演算法的workshop或session。從GECCO 2011開始,超啟發式演算法的相關研究正式成為該會議的一個領域(self* search-new frontier track)。國際智能計算領域的兩大著名期刊Journal of Heuristics和Evolutionary putation也在2010年和2012年分別安排了專刊,著重介紹與超啟發式演算法有關的研究進展。
什麼是啟發式
這兩天在看關於民航調度的文章,很多文章中都提到「啟發式」演算法,感覺和智能演算法類似,那到底演算法呢?我找到如下的一些我認為比較好的解釋:------------------------------------------------------------------------------------------------------------------------A heuristic (hyu-'ris-tik) is the art and science of discovery and invention. The word es from the same Greek root as "eureka" meaning "to find". A heuristic for a given problem is a way of directing your attention fruitfully to a solution. It is different from an algorithm in that a heuristic merely serves as a rule-of-thumb or guideline, as opposed to an invariant procere. Heuristics may not always achieve the desired oute, but can be extremely valuable to problem-solving processes. Good heuristics can dramatically rece the time required to solve a problem by eliminating the need to consider unlikely possibilities or irrelevant states. As such, it is particularly useful to those in the process of discovery and the are constantly rethinking their strategies in the face of a stubborn unknown.--------------------------------------------------------------------------------------------------------------------------啟發式方法(試探法)是一種幫你尋求答案的技術,但它給出的答案是具有偶然性的(subject to chance),因為啟發式方法僅僅告訴你該如何去找,而沒有告訴你要找什麼。它並不告訴你該如何直接從A 點到達B 點,它甚至可能連A點和B點在哪裡都不知道。實際上,啟發式方法是穿著小丑兒外套的演算法:它的結果不太好預測,也更有趣,但不會給你什麼30 天無效退款的保證。 駕駛汽車到達某人的家,寫成演算法是這樣的:沿167 號高速公路往南行至Puyallup;從South Hill Mall 出口出來後往山上開4.5 英里;在一個雜物店旁邊的紅綠燈路口右轉,接著在第一個路口左轉;從左邊褐色大房子的車道進去,就是North Cedar 路714 號。用啟發式方法來描述則可能是這樣:找出上一次我們......
Ⅳ 元啟發式演算法中針對問題的靈敏度分析是否有意義
都是人工智慧
Ⅵ 智能優化演算法:自私羊群優化演算法
@[toc]
摘要:自私羊群優化 (Selfish Herds optimization,SHO) 演算法是由 Fausto 於 2017 年提出的元啟發式演算法。該演算法主要模擬羊群受到捕食者攻擊時的自私行為(盡量聚集到牧群中心遠離捕食者),它具有易於理解和實施的特點。
SHO 演算法它主要基於漢密爾頓提出的自私群理論來模擬獵物與捕食者之間的狩獵關系。當群體中的個體受到捕食者的攻擊時,為了增加生存機會,群體中的個體產生聚集行為,個體更有可能移動到相對安
全的位置(群體的中心位置),並且群體的邊緣個體更容易受到攻擊,這也導致群體的邊緣個體逃離群體,以增加他們被捕食者攻擊時的生存機會。該方法假設整個平原是一個解空間,該演算法包含兩個不同的搜索因子:被狩獵群和狩獵群。每個搜索因子通過一組不同的進
化運算元指導演算法的計算,以便更好地模擬獵物與捕食者關系之間的關系。
假設自私羊群體優化演算法的群體集合是 ,它包含 個種群個體,種群中的每一個體被定義為 ,其代表個體在種群中的位置信息,n 代表解決方案的大小。整個種群組的初始化公式如下:
其中 和 分別表示解空間的下限和上限。演算法參數值的范圍: 和 。 表示隨機函數,生成值的范圍落在區間[0,1]內。
在自私羊群優化演算法中,整個種群 被分為兩個子群: 和 代表一群獵物, 代表一群捕食者。在自然界中,獵物的數量通常多於捕食者的數量。在 SHO 中,獵物 的數量占總個體的 70%~90% ( ) ,其餘的個體被認為是捕食者 ( ) 。 和 按以下公式計算:
其中, 表示一個隨機數,其值范圍為 0.7到 0.9, 表示將實數轉換為整數的函數。
在 SHO 中,為整個種群 ( ) 的每個體 ( ) 分配一個生存值 ( ) ,其代表個體的生存能力,有機會在攻擊中生存或成功殺死攻擊中的獵物。生存價值的數學公式定義如下:
其中, 代表目標函數, 和 分別代表目標函數的最佳值和最差值。對 70%~90%的獵物計算生存價值,生存價值最高的為獵物領袖,生存價值越低的為最容易被捕獲的獵物。
基於 SHO 的演算法的結構主要包括四個方面:① 獵物(被捕食者)領袖的運動;② 獵物追隨者的跟隨運動或逃脫運動;③ 捕食者的狩獵運動;④ 捕食階段和恢復階段。
獵物的領導者被定義為獵物種群中最大的生存價值。定義公式如下:
獵物領袖的位置更新如下:
代表區間[0,1]之間的隨機數, 越大,位置更新越快,捕獲的獵物越多; 越小,捕獲的獵物越少。 代表個體之間的吸引力, 代表獵物的相對危險位置, 與 定義如下:
在獵物種群中,獵物追隨者分為跟隨獵物 ( ) 和逃生獵物 ( ) ,跟隨獵物又分為優勢獵物 ( ) 和下屬獵物 ( ) 。其定義如下:
其中 代表獵物生存價值的平均值,定義如下:
跟隨獵物的位置更新公式如下:
其中, 表示區間[0,1]內的隨機數形式, 表示局部最優個體, 表示獵物的相對安全位置,其定義如下:
其中 代表獵物個體之間的歐幾里德距離。逃生獵物的位置更新公式如下:
其中, 表示全局最優位置, 和 表示在區間[0,1]內的隨機數, 表示距離獵物領袖位置, 越小,表示距離越近; 表示控制隨機偏移值的長短, 越小,表示偏移值越小。 表示空間解中的隨機方向。
在捕食者種群中,捕食者的位置更新公式如下:
其中, 代表區間[0,1]之間的隨機數, 值越大,位置更新越遠,越容易忽略獵物。 是基於捕食概率從獵物種群中隨機選擇的獵物,捕食概率 定義如下:
表示捕食者和獵物之間的吸引力,吸引力的數學公式定義如下:
其中 代表 和 之間的歐幾里德距離。
捕食階段:每個獵物都有一個危險的區域,如果它屬於這個領域,很可能被捕食者捕殺。危險域通常是一個圓,其半徑定義為:
危險區域的獵物收集定義如下:
獵物在危險區域被獵殺的概率定義如下:
恢復階段:在 SHO 中,被捕食者獵殺的所有獵物都將被新生的獵物所取代,新的獵物將通過交配操作產生,SHO通過交配概率選擇交配獵物,其定義如下:
其中 代表一群沒有被捕食者捕殺的獵物集,交配操作定義如下:
函數 用於從不同個體 中選擇維度組件。
演算法流程如下:
1.Input
2.Begin
3.利用公式初始化所有個體 S
4.定義羊群成員和捕食者的個數,利用公式(1)並將S 分為兩組:H 與 P
5.For entire S do
6.利用公式(3)計算生存值
7.End For
8.While(t <Max number of iterations)
9.執行自私羊群移動操作
[1] Fausto F,Cuevas E,Valdivia A,et al.A global optimization
algorithm inspired in the behavior of selfish herds[J].
BioSystems,2017,160:39-55.
[2] 朱惠娟,王永利,陳琳琳.面向三維模型輕量化的自私羊群優化演算法研究[J].計算機工程與應用,2020,56(03):42-48.
https://mianbaoo.com/o/bread/aJicmJ0=
Ⅶ 有關啟發式演算法(Heuristic Algorithm)的一些總結
節選自維基網路:
啟發法 ( heuristics ,源自古希臘語的εὑρίσκω,又譯作:策略法、助發現法、啟發力、捷思法)是指 依據有限的知識 (或「不完整的信息」)在短時間內找到問題解決方案的一種技術。
它是一種依據 關於系統的有限認知 和 假說 從而得到關於此系統的結論的分析行為。由此得到的解決方案有可能會偏離最佳方案。通過與最佳方案的對比,可以確保啟發法的質量。
計算機科學的兩大基礎目標,就是 發現可證明其運行效率良好 且可 得最佳解或次佳解 的演算法。
而啟發式演算法則 試圖一次提供一個或全部目標 。例如它常能發現很不錯的解, 但也沒辦法證明它不會得到較壞的解 ; 它通常可在合理時間解出答案,但也沒辦法知道它是否每次都可以這樣的速度求解。
有時候人們會發現在某些特殊情況下,啟發式演算法會得到很壞的答案或效率極差, 然而造成那些特殊情況的數據結構,也許永遠不會在現實世界出現 。
因此現實世界中啟發式演算法很常用來解決問題。啟發式演算法處理許多實際問題時通常可以在合理時間內得到不錯的答案。
有一類的 通用啟發式策略稱為元啟發式演算法(metaheuristic) ,通常使用隨機數搜索技巧。他們可以應用在非常廣泛的問題上,但不能保證效率。
節選自網路:
啟發式演算法可以這樣定義:一個 基於直觀或經驗構造 的演算法, 在 可接受的花費(指計算時間和空間)下給出待解決組合優化問題每一個實例的一個可行解 , 該可行解與最優解的偏離程度一般不能被預計。 現階段,啟發式演算法以仿自然體演算法為主,主要有蟻群演算法、模擬退火法、神經網路等。
目前比較通用的啟發式演算法一般有模擬退火演算法(SA)、遺傳演算法(GA)、蟻群演算法(ACO)。
模擬退火演算法(Simulated Annealing, SA)的思想借鑒於固體的退火原理,當固體的溫度很高的時候,內能比較大,固體的內部粒子處於快速無序運動,當溫度慢慢降低的過程中,固體的內能減小,粒子的慢慢趨於有序,最終,當固體處於常溫時,內能達到最小,此時,粒子最為穩定。模擬退火演算法便是基於這樣的原理設計而成。
求解給定函數的最小值:其中,0<=x<=100,給定任意y的值,求解x為多少的時候,F(x)最小?
遺傳演算法(Genetic Algorithm, GA)起源於對生物系統所進行的計算機模擬研究。它是模仿自然界生物進化機制發展起來的隨機全局搜索和優化方法,借鑒了達爾文的進化論和孟德爾的遺傳學說。其本質是一種 高效、並行、全局搜索 的方法,能在搜索過程中自動獲取和積累有關搜索空間的知識,並 自適應 地控制搜索過程以求得最佳解。
給定一組五個基因,每一個基因可以保存一個二進制值 0 或 1。這里的適應度是基因組中 1 的數量。如果基因組內共有五個 1,則該個體適應度達到最大值。如果基因組內沒有 1,那麼個體的適應度達到最小值。該遺傳演算法希望 最大化適應度 ,並提供適應度達到最大的個體所組成的群體。
想像有一隻螞蟻找到了食物,那麼它就需要將這個食物待會螞蟻穴。對於這只螞蟻來說,它並不知道應該怎麼回到螞蟻穴。
這只螞蟻有可能會隨機選擇一條路線,這條路可能路程比較遠,但是這只螞蟻在這條路上留下了記號(一種化學物質,信息素)。如果這只螞蟻繼續不停地搬運食物的時候,有其它許多螞蟻一起搬運的話,它們總會有運氣好的時候走到更快返回螞蟻穴的路線。當螞蟻選擇的路線越優,相同時間內螞蟻往返的次數就會越多,這樣就在這條路上留下了更多的信息素。
這時候,螞蟻們就會選擇一些路徑上信息素越濃的,這些路徑就是較優的路徑。當螞蟻們不斷重復這個過程,螞蟻們就會更多地向更濃的信息素的路徑上偏移,這樣最終會確定一條路徑,這條路徑就是最優路徑。