1.遺傳演算法(genetic algorithms,ga)
基於自然選擇和自然遺傳機制的搜尋演算法,它是一種有效的解決最優化問題的方法,進化演算法的一種。最早由美國michigan大學的john holland和他的同事及學生提出的。類似於自然界演化的基本法則,「適者生存」是遺傳演算法的核心機制:複製(reproduce)、雜交(crossover)、變異(mutation)等自然界的生物演化規則在遺傳演算法中都得到類似的體現。
2. 基本概念
遺傳(heredity)
是生物的普遍特徵,親代把生物資訊交給子代,子代按照所得資訊而發育、分化,因而子代總是和親代具有相同或者相似的性狀。生物有這個特徵,物種才能穩定存在。
變異(variation)
親代和子代之間,子代和子代的不同個體之間總有些差異,這種現象稱為變異,變異是隨機發生的,變異的選擇和積累是生命多樣性和進化的根源。
染色體,chromosome
是生物細胞中含有的一種微小的絲狀化合物,是遺傳物質的主要載體,由多個遺傳因子——基因組成。
遺傳因子,gene
dna長鏈結構中占有一定位置的基本遺傳單位,也稱基因。生物的基因根據物種的不同而多少不一。
個體,individual
指染色體帶有特徵的實體。
種群,population
染色體帶有特徵的個體的集合。
進化,evolution
生物在其延續生命的過程中,逐漸適應其生存環境使得其品質不斷得到改良,這種生命現象稱為進化。生物的進化是以種群的形式進行的。
適應度,fitness
度量某個物種對於生存環境的適應程度。
選擇,selection
指以一定的概率從種群中選擇若干個體的操作。
複製,reproduction
細胞在**時,遺傳物質dna通過複製而轉移到新產生的細胞中,新的細胞就整合了舊細胞的基因。
交叉,crossover
有性生殖生物在繁殖下一代時,兩個同源染色體之間通過交叉而重組,亦即在兩個染色體的某一相同位置處dna被截斷,其前後兩串分別交叉組合而形成兩個新的染色體。
變異,mutation
複製時很小的概率產生的某些複製差錯。
編碼,coding
dna中遺傳資訊在乙個長鏈上按一定的模式排列,也即進行了遺傳編碼。遺傳編碼可以看成是從表現型到遺傳子型的對映。
解碼,decoding
從遺傳子型到表現型的對映。
3.遺傳演算法原理
遺傳演算法是從代表問題可能潛在解集的乙個種群開始的。
初代種群產生之後,按照適者生存、優勝劣汰的原理,逐代進化產生出越來越好的近似種群在每一代中,根據問題域中個體適應度大小挑選個體,並借助自然遺傳學的遺傳運算元進行組合交叉和變異,產生出代表解的解集的種群。
這個過程將導致種群像自然進化一樣的後生代種群比前代更加適應於環境,末代種群中的最優個體經過解碼可以作為問題近似最優解。
4.遺傳演算法例項——求函式最大值
考慮一元函式求最大值的優化問題
為什麼選擇這個函式?看下函式曲線就知道了,這麼多波峰波谷,就看演算法能否找到某一範圍的極大值:
5.遺傳演算法求解詳細過程
(1)編碼
變數x作為實數,可以視為遺傳演算法的表現形式。從表現型到基因型的對映稱為編碼。二進位制編碼將某個變數值代表的個體表示為乙個[0,1]二進位制串(遺傳演算法最簡單、最經典的編碼方法)。
若設定求解精確到6位小數,由於區間長度為2-(-1)=3,必須將區間[-1,2]分為3*10^6等份。因為2097152=2^21<3*10^6<=2^22=4194304,所以編碼的二進位制串長至少需要22位。
(2)產生初始種群
個體由串長為22的隨機產生的二進位制串組成染色體的基因碼,產生一定數目的個體組成種群,種群的大小(規模)就是指種群中的個體數目。
(3)計算適應度
適應度大的個體其存活和被選中的概率大。適應度的計算就是對個體的計算,本例求函式最大值,目標函式值大的個體適應度大,所以直接引用目標函式作為適應度函式f(s)=f(x)。
例如x1=0.637197通過編碼得到的二進位制串是s1=[1000101110110101000111],這個串就是個體。此個體的適應度就是:
假設這裡選擇種群數量為3 ,每個個體為:
s1=[1000101110110101000111]
s2=[0000001110000000010000]
s3=[1110000000111111000101]
分別對應於數量值
x1=0.637197, x2=-0.958973, x3=1.627888
另兩個個體的適應度計算如下
(4)選擇
輪盤賭選擇法,最常用,最直觀
f(s1)=2.286345,f(s2)=1.078878,f(s3)=3.250650
把三個適應度依比例畫在輪盤上,轉動輪盤,最後停在**,就選擇誰,適應度大的被選中概率大:
選擇方法的實現:產生[0,1]間的隨機數,以隨機數落在那個範圍進行選擇:
[0,0.16)
[0.16,0.51)
[0.51,1]
(5)遺傳操作
n下面是經過選擇操作後的兩個個體:
s2=[00000 01110000000010000]
s3=[11100 00000111111000101]
首先執行單點交叉,隨機隨機選擇交叉點,將之後的串交叉
s2'=[00000 00000111111000101]
s3'=[11100 01110000000010000]
n這兩個個體的適應度分別為:
(6)變異操作
假定以一小概率選擇s3的第5個遺傳因子(第5位)變異,遺傳因子由原來的0變為1,產生新個體
s3'=[1110100000111111000101]
該個體適應度
個體的適應度比它的父個體的適應度減小了。
但如果選中第11個遺傳因子變異,產生新個體為
s3''= [11100000001111111000101]
適應度又發現s3''的適應度比其父個體的適應度改善了。這說明變異操作的「擾動」作用(全域性搜尋)。
6.例
python遺傳演算法 Python 遺傳演算法實現
關於遺傳演算法 遺傳演算法是仿照自然界中生物進化而產生的一類優化演算法。個人感覺遺傳演算法簡單粗暴,適應性廣。關於遺傳演算法的介紹網上有很多了,這裡按照我自己的理解簡單概括一下。編碼解碼,將待優化的引數編碼為dna序列,最簡單直接的為二進位制編碼 即有兩種鹼基的dna鏈 生成隨機初代 選擇,適應度 ...
遺傳演算法 python 簡書 遺傳演算法
優化的演算法有很多種,從最基本的梯度下降法到現在的一些啟發式演算法,如遺傳演算法 ga 差分演化演算法 de 粒子群演算法 pso 和人工蜂群演算法 abc 舉乙個例子,遺傳演算法和梯度下降 梯度下降和遺傳演算法都是優化演算法,而梯度下降只是其中最基礎的那乙個,它依靠梯度與方向導數的關係計算出最優值...
遺傳演算法歸納
遺傳演算法 genetic algorithm 是一類借鑑生物界的進化規律 適者生存 優勝劣汰遺傳機制 演化而來的隨機化搜尋方法。其主要特點是直接對結構物件進行操作,不存在求導和函式連續性的限定 具有內在的隱並行性和更好的全域性尋優能力 採用概率化的尋優方法,能自動獲取和指導優化的搜尋空間,自適應地...