遺傳演算法(genetic algorithm, ga)是模擬達爾文的遺傳選擇和自然淘汰的生物進化過程的計算模型,是一種通過模擬自然進化過程搜尋最優解的方法。遺傳演算法以一種群體中的所有個體為物件,並利用隨機化技術指導對乙個被編碼的引數空間進行高效搜尋。
遺傳演算法基本思想
核心是達爾文優勝劣汰適者生存的進化理論的思想。假設乙個種群,通過長時間的繁衍,種群的基因會向著更適應環境的趨勢進化,適應性強的個體基因被保留,後代越來越多,適應能力低個體的基因被淘汰,後代越來越少。經過幾代的繁衍進化,留下來的少數個體,就是相對能力最強的個體了。
1、初始化
先初始化一堆染色體,也就是一組編碼,常見的編碼方式有二進位制、浮點數編碼。
2、適應度函式
根據要達成的目標進行乙個適應度排序(比如求要求乙個函式的最小值,那麼染色體所代表的資料越小,適應度越高),適應度決定了下乙個階段--選擇中它們被使用的概率。
3、選擇
一種比較常見的選擇方法是使用輪盤選擇法,根據適應度算出每條染色體在輪盤上所佔的面積(百分比),根據這個比例隨機選取要操作的兩個親本染色體。
4、交叉
兩個染色體各選取長度相等的一部分進行交換,得到兩個新的染色體,當然交叉的發生是有一定概率的,這個概率是可以設定的。
5、變異
一條染色體的某一位發生變異,如0->1或1->0,變異的概率也是可以設定的。
6、對新生成的染色體和原有的染色體進行適應度評估,剔除適應度較小的染色體,如果不符合終止條件,則跳轉至步驟3,這裡的終止條件是達到了預定的遺傳次數, 也就是適應度達到了要求。
遺傳演算法的特點
1、ga是對問題引數的編碼組進行計算,而不是針對引數本身。
2、ga的搜尋是從問題解的編碼組開始搜素、而不是從單個解開始。
3、ga使用目標函式值(適應度)這一資訊進行搜尋,而不需導數等其他資訊。
4、ga演算法使用的選擇、交叉、變異這三個運算元都是隨機操作,而不是確定規則。
遺傳演算法的優點
1、與問題領域無關且快速隨機的全域性搜尋能力。
2、搜尋從群體出發,具有潛在的並行性,魯棒性高。
3、搜尋使用評價函式啟發,過程簡單。
4、使用概率機制進行迭代,具有隨機性。
5、具有可擴充套件性,容易與其他演算法結合。
6、具有極強的容錯能力。
遺傳演算法的缺點
遺傳演算法的程式設計實現比較複雜,對初始種群的選擇有一定的依賴性,且區域性搜尋能力較差,導致單純的遺傳演算法比較費時。在進化後期搜尋效率較低。在實際應用中,遺傳演算法容易產生過早收斂的問題,採用何種選擇方法既要使優良個體得以保留,又要維持群體的多樣性,一直是遺傳演算法中較難解決的問題。
遺傳演算法的應用
揹包問題(knapsack problem)是一種組合優化的np完全問題。問題可以描述為:給定一組物品,每種物品都有自己的重量和**,在限定的總重量內,我們如何選擇,才能使得物品的總**最高。問題的名稱**於如何選擇最合適的物品放置於給定揹包中。
C 遺傳學SFLA混合蛙跳演算法
蛙跳演算法 shuffled frog leading algorithm 是一種啟發式演算法,通過啟發式函式進行啟發式搜尋,從而找到組合最優問題的解。他結合了以遺傳為基礎的memetic演算法和以社會行為為基礎的粒子群優化演算法的優點。也可以說sfla sce pso 一 問題概念 蛙跳演算法的思...
模擬退huo演算法的特點 遺傳學演算法
遺傳演算法 genetic algorithm,ga 是模擬達爾文的遺傳選擇和自然淘汰的生物進化過程的計算模型,是一種通過模擬自然進化過程搜尋最優解的方法。遺傳演算法以一種群體中的所有個體為物件,並利用隨機化技術指導對乙個被編碼的引數空間進行高效搜尋。遺傳演算法基本思想 核心是達爾文優勝劣汰適者生存...
群體遺傳學 Fst指數
群體遺傳學中衡量群體間分化程度的指標有很多種,最常用的就是fst指數。fst指數,由f統計量演變而來。f統計量 fis,fif,fst 主要有三種。fst是針對一對等位基因,如果基因座上存在復等位基因,則需要用gst衡量,基因差異分化係數 gene differentiation coefficie...