遺傳演算法概述

2022-06-26 10:42:15 字數 2063 閱讀 1900

遺傳演算法模擬自然界的進化過程,選擇(selection),交叉(crossover),變異(mutation)。每次迭代過程,都保留部分上一組的個體,經過許多次這樣的迭代,就能求得最優解的近似解

遺傳演算法在函式優化、模式識別、生產排程等方面有許多應用。

編碼編碼有兩種,一種是實數編碼,一種是二進位制編碼:

解空間:二進位制編碼之前,最原始的實數解 的空間。

編碼空間:對實數解進行二進位制編碼,編碼之後的解 的空間。

編碼空間實際是對原來解的另一種角度的解讀。

f(x) = sin(x)+sin(7*x)+8x
比如,求解[0,4]最大值定義域上的解,要求解保留4位小數。

那麼解空間就有 \([4-0]~*~10000 = 40000,40000<2^=65536\) ,所以編碼之後的解空間可以用16bit來表示所有的實數解,還有冗餘。

乙個解的編碼就是乙個16位的二進位制串。

但是一開始這些二進位制串是隨機生成的,由於編碼冗餘的原因,注意隨機生成二進位制串不一定都在實數解空間裡。

這樣的一條二進位制串,就是乙個解,在遺傳演算法中也被叫做一條染色體。

解碼對於這種染色體,如何解碼到[0,4]中對應的實數解??

我們可以用如下公式:

x = 0+decimal(chromosome)✖️ (4-0)/(2^16-1)
一般化解碼公式:

\[\begin

f(x),\in[lowwer\_bound,upper\_bound]

\end

\]\[x = lower_bound+decimal(chromosome)✖️(upper\_bound-lower\_bound)/(2^- 1)

\]通過上述公式,我們就可以成功把二進位制染色體翻譯成十進位制實數解。

個體個體就是承載一條染色體的載體,而染色體又能表示某種特徵。對於求解本例函式求極值問題,每乙個實數解就是一條染色體,或者稱其為乙個個體。許多個個體組成了種群

適應度函式

適應度函式通常是我們需要求解的特定函式來描述乙個個體的好壞,然後通過適應度函式值進行個體篩選。本問題由於求解最大值點,適應度函式就可以選擇問題本身對應函式。

對於求解最大值來說,最大值越大,解的質量就越好。

適應度函式就是遺傳演算法類問題的"遺傳規則",也是核心。具體的選用通常要根據實際問題選擇。

遺傳運算元

遺傳運算元的作用,通過幾個方法(運算元)達到將初始總群進化到比較優秀的種群的目的。因為初始種群是隨機的,肯定剛開始解的質量非常差,通過用適應度函式不斷地進化到比較優秀的解,但是也要注意:必須設立閾值點,不能一味的接近最優點,計算能力頂不住。

進化時每一次都保留原始種群中比較優秀的部分,差的部分被淘汰,代替的是優秀個體通過遺傳運算元得到的比較優秀的子代。

進化能力一般講的就是遺傳運算元的設計:

遺傳運算元包含以下幾個運算元:

選擇是在上一代種群中 選擇多對優秀個體,一對優秀個體就叫做一對父母,每一對父母可以產生乙個優秀後代。

選擇之前把種群中所有的個體按照適應度從小到大排列。採用一些方法(通常是輪盤賭選擇法:各個個體被選擇概率與其適應度值大小成正比)。

還有別的方法,比如精英機制:直接選擇前代最好的兩個個體,因為輪盤賭選擇法具有隨機性,這一點確實很好的模擬了自然界基因的隨機性,但是也得明白,選擇的隨機性比較容易丟掉最好的兩個優秀個體。

根據選擇運算元找出的比較優秀的兩個個體,根據交叉運算元的交叉概率按照某種方式交換某段基因。

方法有單點交叉、多點交叉等等

交叉完之後,染色體按照某種變異概率進行染色體變異、

變異方法有:單點變異、多點變異

一些經驗:

交叉概率我們選擇的一般比較大,變異概率選擇的比較小。具體問題具體分析。求解函式極值的問題,交叉概率通常選擇0.6,變異概率通常選擇0.01。

上圖是適應度最大值隨著遺傳代數增加的影象,可以發現在大概第20次左右得到了收斂,適應度最大值大概在24左右。

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

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

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

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

遺傳演算法歸納

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