遺傳演算法,genetic algorithm ,ga遺傳演算法也稱進化演算法、進化理論 ,是受達爾文的演化論的啟發,借鑑生物進化過程而提出的一種啟發式搜尋演算法。
用遺傳演算法實現的幾個例子
馬里奧
自動駕駛
微生物進化
我們都學過自然選擇理論,生物的繁殖進化過程,會發生基因交叉( crossover ) ,基因突變 ( mutation ) 。適應度( fitness )低的個體會被逐步淘汰,而適應度高的個體會越來越多。那麼經過n代的自然選擇後,儲存下來的個體都是適應度很高的,其中很可能包含史上產生的適應度最高的那個個體。
借鑑生物演化論,遺傳演算法將要解決的問題模擬成乙個生物進化的過程,通過複製、交叉、突變等操作產生下一代的解,並逐步淘汰掉適應度函式值低的解,增加適應度函式值高的解。這樣進化n代後就很有可能會進化出適應度函式值很高的個體。
舉個例子,使用遺傳演算法解決「0-1揹包問題」的思路:0-1揹包的解可以編碼為一串0-1字串(0:不取,1:取) ;首先,隨機產生m個0-1字串,然後評價這些0-1字串作為0-1揹包問題的解的優劣;然後,隨機選擇一些字串通過交叉、突變等操作產生下一代的m個字串,而且較優的解被選中的概率要比較高。這樣經過g代的進化後就可能會產生出0-1揹包問題的乙個「近似最優解」。
遺傳演算法有3個最基本的操作:選擇,交叉,變異
遺傳演算法中每一條染色體,對應著遺傳演算法的乙個解決方案,一般我們用適應性函式(fitness function)來衡量這個解決方案的優劣。所以從乙個基因組到其解的適應度形成乙個對映。可以把遺傳演算法的過程看作是乙個在多元函式裡面求最優解的過程。可以這樣想象,這個多維曲面裡面有數不清的「山峰」,而這些山峰所對應的就是區域性最優解。而其中也會有乙個「山峰」的海拔最高的,那麼這個就是全域性最優解。而遺傳演算法的任務就是盡量爬到最高峰,而不是陷落在一些小山峰。(另外,值得注意的是遺傳演算法不一定要找「最高的山峰」,如果問題的適應度評價越小越好的話,那麼全域性最優解就是函式的最小值,對應的,遺傳演算法所要找的就是「最深的谷底」)
用一句話來概括遺傳演算法:在程式裡生寶寶,殺死不乖的寶寶,讓乖寶寶繼續生寶寶
**實現可參考:
遺傳演算法(GA)
a,問題描述 已知100個城市的經緯度座標如下 儲存為city.txt 53.7121 15.3046 51.1758 0.032246.3253 28.2753 30.3313 6.9348 56.5432 21.4188 10.8198 16.252922.7891 23.1045 10.158...
遺傳演算法(GA)的matlab實現
一 task 二 實現過程 1.編碼與解碼 編碼 在編碼之前需要確定求解的精度,設定求解的精度為小數點後六位,即10 6。這樣可以將每個自變數x的解空間劃分為 1 0 10 6 1000000個等分。使n滿足 1 0 10 6 2 n 1,這裡n表示使上式成立的最小整數,即表示自變數x的基因串的長度...
遺傳演算法優化例子
遺傳演算法的手工模擬計算示例 為更好地理解遺傳演算法的運算過程,下面用手工計算來簡單地模擬遺傳演算法的各個主要執行步驟。例 求下述二元函式的最大值 1 個體編碼 遺傳演算法的運算物件是表示個體的符號串,所以必須把變數 x1,x2 編碼為一種 符號串。本題中,用無符號二進位制整數來表示。因 x1,x2...