什麼是遺傳演算法

2021-04-14 13:03:42 字數 1809 閱讀 9144

遺傳演算法是計算數學中用於解決最優化的搜尋演算法,是進化演算法的一種。進化演算法最初是借鑑了進化生物學中的一些現象而發展起來的,這些現象包括遺傳、突變、自然選擇以及雜交等。

遺傳演算法通常實現為一種計算機模擬。對於乙個最優化問題,一定數量的候選解(稱為個體)的抽象表示(稱為染色體)的種群向更好的解進化。傳統上,解用二進位制表示(即0和1的串),但也可以用其他表示方法。進化從完全隨機個體的種群開始,之後一代一代發生。在每一代中,整個種群的適應度被評價,從當前種群中隨機地選擇多個個體(基於它們的適應度),通過自然選擇和突變產生新的生命種群,該種群在演算法的下一次迭代中成為當前種群。

在遺傳演算法裡,優化問題的解被稱為個體,它表示為乙個引數列表,叫做染色體或者基因串。染色體一般被表達為簡單的字串或數字串,不過也有其他的表示方法適用。一開始,演算法隨機生成一定數量的個體,有時候操作者也可以對這個隨機產生過程進行干預,播下已經部分優化的種子。在每一代中,每乙個個體都被評價,並通過計算適應度函式得到乙個適應度數值。種群中的個體被按照適應度排序,適應度高的在前面。這裡的「高」是相對於初始的種群的低適應度來說的。

下一步是產生下一代個體並組成種群。這個過程是通過選擇和繁殖完成的,其中繁殖包括雜交和突變。選擇則是根據新個體的適應度進行的,適應度越高,被選擇的機會越高,而適應度低的,被選擇的機會就低。初始的資料可以通過這樣的選擇過程組成乙個相對優化的群體。之後,被選擇的個體進入雜交過程。一般的遺傳演算法都有乙個雜交率的引數,範圍一般是0.6~1,這個雜交率反映兩個被選中的個體進行雜交的概率。例如,雜交率為0.8,則80%的「夫妻」會生育後代。每兩個個體通過雜交產生兩個新個體,代替原來的「老」個體,而不雜交的個體則保持不變。雜交父母的染色體相互交錯,從而產生兩個新的染色體,第乙個個體前半段是父親的染色體,後半段是母親的,第二個個體則正好相反。不過這裡的半段不是真正的一半,這個位置叫做雜交點,也是隨機產生的,可以是染色體的任意位置。再下一步是突變,通過突變產生新的「子」個體。一般遺傳演算法都有乙個固定的突變常數,通常是0.01或者更小,這代表突變發生的概率。根據這個概率,新個體的染色體隨機的突變,通常就是改變染色體的乙個位元組(0變到1,或者1變到0)。

經過這一系列的過程(選擇、雜交和突變),產生的新一代個體不同於初始的一代,並一代一代向增加整體適應度的方向發展,因為最好的個體總是更多的被選擇去產生下一代,而適應度低的個體逐漸被淘汰掉。這樣的過程不斷的重複:每個個體被評價,計算出適應度,兩個個體雜交,然後突變,產生第三代。周而復始,直到終止條件滿足為止。一般終止條件有以下幾種:

最簡單的遺傳演算法將染色體表示為乙個數字串,數值變數也可以表示成整數,或者實數(浮點數)。演算法中的雜交和突變都是在位元組串上進行的,所以所謂的整數或者實數表示也一定要轉化為數字形式。例如乙個變數的形式是實數,其範圍是0~1,而要求的精度是0.001,那麼可以用10個數字表示:0000000000表示0,1111111111表示1。那麼0110001110就代表0.389。

在遺傳演算法裡,精英選擇是一種非常成功的產生新個體的策略,它是把最好的若干個個體作為精英直接帶入下一代個體中,而不經過任何改變。

通過平行計算實現遺傳演算法一般有兩種,一種是所謂粗糙並行遺傳演算法,即乙個計算單元包含乙個種群;而另一種是所謂精細並行遺傳演算法,每乙個計算單元處理乙個染色體個體。

遺傳演算法有時候還引入其他變數,例如在實時優化問題中,可以在適應度函式中引入時間相關性和干擾。

遺傳演算法擅長解決的問題是全域性最優化問題,例如,解決時間表安排問題就是它的乙個特長,很多安排時間表的軟體都使用遺傳演算法,遺傳演算法還經常被用於解決實際工程問題。

跟傳統的爬山演算法相比,遺傳演算法能夠跳出區域性最優而找到全域性最優點。而且遺傳演算法允許使用非常複雜的適應度函式(或者叫做目標函式),並對變數的變化範圍可以加以限制。而如果是傳統的爬山演算法,對變數範圍進行限制意味著複雜的多的解決過程,這方面的介紹可以參看受限優化問題和非受限優化問題。

python遺傳演算法 Python 遺傳演算法實現

關於遺傳演算法 遺傳演算法是仿照自然界中生物進化而產生的一類優化演算法。個人感覺遺傳演算法簡單粗暴,適應性廣。關於遺傳演算法的介紹網上有很多了,這裡按照我自己的理解簡單概括一下。編碼解碼,將待優化的引數編碼為dna序列,最簡單直接的為二進位制編碼 即有兩種鹼基的dna鏈 生成隨機初代 選擇,適應度 ...

遺傳演算法 python 簡書 遺傳演算法

優化的演算法有很多種,從最基本的梯度下降法到現在的一些啟發式演算法,如遺傳演算法 ga 差分演化演算法 de 粒子群演算法 pso 和人工蜂群演算法 abc 舉乙個例子,遺傳演算法和梯度下降 梯度下降和遺傳演算法都是優化演算法,而梯度下降只是其中最基礎的那乙個,它依靠梯度與方向導數的關係計算出最優值...

遺傳演算法歸納

遺傳演算法 genetic algorithm 是一類借鑑生物界的進化規律 適者生存 優勝劣汰遺傳機制 演化而來的隨機化搜尋方法。其主要特點是直接對結構物件進行操作,不存在求導和函式連續性的限定 具有內在的隱並行性和更好的全域性尋優能力 採用概率化的尋優方法,能自動獲取和指導優化的搜尋空間,自適應地...