(一)遺傳演算法簡介
遺傳演算法的概念最早是由 bagley j.d 於2023年提出,後來michigan大學的 j.h.holland 教授於2023年開始對遺傳演算法的機理進行系統化的研究。遺傳演算法是受達爾文演化論啟發,借鑑生物進化過程而提出的一種啟發式搜尋演算法,它是對達爾文生物進化理論的簡單模擬,遵循「適者生存」、「優勝略汰」的原理。遺傳演算法(
genetic algorithm,ga
)又叫基因進化演算法,或進化演算法,它模擬乙個人工種群的進化過程,並且通過選擇、雜交以及變異等機制,種群經過若干代後總是達到最優(或近最優)的狀態。因此在介紹遺傳演算法前有必要簡單的介紹生物進化知識。
(二)演化論知識
作為遺傳演算法生物背景的介紹,下面內容了解即可: 種群
(population):生物的進化以群體的形式進行,這樣的乙個群體稱為種群。 個體
:組成種群的單個生物。 基因
(gene):乙個遺傳因子。
染色體(chromosome):包含一組的基因。
生存競爭,適者生存
:對環境適應度高的個體參與繁殖的機會比較多,後代就會越來越多。適應度低的個體參與繁殖 的機會比較少,後代就會越來越少。
遺傳與變異
:新個體會遺傳父母雙方各一部分的基因,同時有一定的概率發生基因變異。
簡單說來:繁殖過程會發生基因交叉(crossover)、基因突變(mutation),適應度(fitness)低的個體會被逐步淘汰,而適應度高的個體會越來越多。那麼經過n代的自然選擇後,儲存下來的個體都是適應度很高的,其中很可能包含史上產生的適應度最高的那個個體。
現代生物遺傳學中描述的生物進化理論:
遺傳物質的主要載體是染色體(chromsome),染色體主要由dna和蛋白質組成。其中dna為最主要的遺傳物質。基因(gene)是有遺傳效應的片斷,它儲存著遺傳資訊,可以準確地複製,也能發生突變,並可通過控制蛋白質的合成而控制生物的狀態。生物自身通過對基因的複製(reproduction)和交叉(crossover,即基因分離,基因組合和基因連鎖互換)的操作,使其性狀的遺傳得到選擇和控制。生物的遺傳特性使生物界的物種能保持相對的穩定;生物的變異特性使生物個體產生新的性狀,以至於形成新的物種(量變積累為質變),推動了生物的進化和發展。
(三)遺傳學基本概念與術語
基因型(genotype):性狀染色體的內部表現。
表現型(phenotype):染色體決定性狀的外部表現,或者說,根據基因型形成的個體。 進化
(evolution):逐漸適應生存環境,品質不斷得到改良。生物的進化是以種群的形式進行的。
適應度(fitness):度量某個物種對於生存環境的適應程度。 選擇
(selection):以一定的概率從種群中選擇若干個個體。一般,選擇過程是一種基於適應度的優勝劣汰的過程。 複製
(reproduction):細胞**時,遺傳物質dna通過複製而轉移到新產生的細胞中,新細胞就繼承了舊細胞的基因。
交叉(crossover):兩個染色體的某一相同位置處dna被切斷,前後兩串分別交叉組合形成兩個新的染色體。也稱基因重組或雜交。 變異
(mutation):複製時可能(很小的概率)產生某些複製差錯,變異產生新的染色體,表現出新的性狀。 編碼
(coding):dna中遺傳資訊在乙個長鏈上按一定的模式排列。遺傳編碼可看作從表現型到基因型的對映。 解碼
(decoding):基因型到表現型的對映。 個體
(individual):指染色體帶有特徵的實體。 種群
(population):個體的集合,該集合內個體數稱為種群的大小。
(四)遺傳演算法思想借鑑生物演化論,遺傳演算法將要解決的問題模擬成乙個生物進化的過程,通過複製、交叉、突變等操作產生下一代的解,並逐步淘汰掉適應度函式值低的解,增加適應度函式值高的解。這樣進化n代後就很有可能會進化出適應度函式值很高的個體。
舉個例子,使用遺傳演算法解決「0-1揹包」問題的思路:0-1揹包的解可以編碼為一串0-1字串(0:不取,1:取)。首先隨機產生m個0-1字串,然後評價這些0-1字串作為0-1揹包問題的解的優劣;然後隨機選擇一些字串通過交叉、突變等操作產生下一代的m個字串,而且較優的解被選中的概率要比較高。這樣經過g代的進化後就可能會產生出0-1揹包問題的乙個「近似最優解」。
編碼:需要將問題的解編碼成字串的形式才能使用遺傳演算法。最簡單的一種編碼方式是二進位制編碼,即將問題的解 編碼成二進位制位陣列的形式。例如,問題的解是整數,那麼可以將其編碼成二進位制位陣列的形式。將0-1字元 串作為0-1揹包問題的解就屬於二進位制編碼。
遺傳演算法有3個最基本的操作:選擇,交叉,變異。
選擇:選擇一些染色體來產生下一代。一種常用的選擇策略是「比例選擇」,也就是個體被選中的概率與其適應度函 數值成正比。假設群體的個體總數是m,那麼乙個個體xi被選中的概率為f(xi)/(f(x1)+f(x2)+…+ f(xn))。 比例選擇實現演算法就是所謂的「輪盤賭演算法」(roulette wheel selection)。
交叉
例如:
交叉前:
00000|
011100000000
|10000
11100|000001111110|00101
交叉後:
00000|000001111110|10000
11100|
011100000000
|00101
染色體交叉是以一定的概率發生的,這個概率記為pc。
變異:在繁殖過程,新產生的染色體中的基因會以一定的概率出錯,稱為變異。變異發生的概率記為pm 。例如:
變異前:
000001110000000010000
變異後:
000001110000100010000
適應度函式(fitness function)
:用於評價某個染色體的適應度,用f(x)表示。有時需要區分染色體的適應度函式與問題的目標函式。例如:0-1揹包問題的目標函式是所取的物品價值,但將物品價值作為染色體的適應度函式可能並不一定適合。適應度函式與目標函式是正相關的,可對目標函式作一些變形來得到適應度函式。
補充:輪盤賭選擇
具體操作如下:
(1)計算出群體中每個個體的適應度f(i=1,2,…,m),m為群體大小;
(2)計算出每個個體被遺傳到下一代群體中的概率;
(3)計算出每個個體的累積概率;
(q[i]稱為染色體x[i] (i=1, 2, …, n)的積累概率)
(4)在[0,1]區間內產生乙個均勻分布的偽隨機數r;
(5)若r
(6)重複(4)、(5)共m次
遺傳演算法入門
術語 1.基因 gene 是串中的元素 2.染色體 chromosome 是基因的集合,為乙個解 3.基因組 genome 也稱為個體 4.群體 population 是基因組的集合 5.適應度 fitness 表示個體對環境的適應程式 6.雜交率 crossover rate 用來確定兩個染色體進...
遺傳演算法入門(二)
一 遺傳演算法的特點 二 遺傳演算法的應用 諸如尋路問題,8數碼問題,囚犯困境,動作控制,找圓心問題 在乙個不規則的多邊形中,尋找乙個包含在該多邊形內的最大圓圈的圓心 tsp問題,生產排程問題,人工生命模擬等。問題的提出與解決方案 先考慮下面這個問題的解決辦法。已知一元函式 現在要求在既定的區間內找...
python遺傳演算法 Python 遺傳演算法實現
關於遺傳演算法 遺傳演算法是仿照自然界中生物進化而產生的一類優化演算法。個人感覺遺傳演算法簡單粗暴,適應性廣。關於遺傳演算法的介紹網上有很多了,這裡按照我自己的理解簡單概括一下。編碼解碼,將待優化的引數編碼為dna序列,最簡單直接的為二進位制編碼 即有兩種鹼基的dna鏈 生成隨機初代 選擇,適應度 ...