遺傳演算法(二) 編碼

2021-09-27 11:32:40 字數 3560 閱讀 4881

在實現遺傳演算法時,首要遇到的關鍵問題就是編碼(encode)。編碼的方法直接影響到了遺傳演算法的交叉運算元、變異運算元等遺傳運算元的運算,因此很大程度上決定了遺傳進化的效率。

編譯碼過程圖示:

編碼原則:

下面主要總結一下最主流的一些編碼方法:

含義:

個體基因型使用二值符號集來構成,整個基因型是乙個二進位制編碼符號串。二進位制編碼符號串的長度與問題所要求的求解精度有關。

舉例1:

x是屬於[0,1023]的整數中的乙個,精度為1(因為是整數),m表示二進位制編碼串的長度,由於解空間的要求,1024≤2

(m−1

)1024≤2^

1024≤2

(m−1

),因此m最小為10。如:染色體0010101111就可以表示表現型為x=175的個體。

當然,如果精度要求到小數點後1位,那麼

舉例2:

個體的表現型包含兩個變數x1、

x2x_1、x_2

x1​、x2

​,且他們均為區間在[0,7]之間的整數,那麼可以用3位無符號二進位制整數來表示乙個變數,如:基因型101110對應的表現型為x1=

5,x2

=6x_1=5,x_2=6

x1​=5,

x2​=

6。優缺點:

優點:編譯碼簡單;交叉和變異等操作易於實現;符合最小字符集編碼原則;可以利用模式定理對演算法進行理論分析等。

缺點:對於一些連續函式的優化問題,由於其隨機性使其區域性搜尋能力差,當接近最優解時,由於變異後表現型變化很大,不連續,所以會遠離最優解。如上面舉例1中,加入0010101111的第2位發生了變異,那麼表現型則會從x=175變成了x=331,變異使得表現型變化很大,很不穩定。

含義:

格雷碼編碼是其連續的兩個整數所對應的編碼之間只有乙個碼位是不同的,其餘碼位完全相同。它是二進位制編碼方法的一種變形。

舉例3:

四位的二進位制和格雷碼轉換如下:

十進位制二進位制

格雷碼0

0000

0000

10001

0001

20010

0011

30011

0010

40100

0110

50101

0111

60110

0101

70111

0100

81000

0100

91001

0101

101010

1111

111011

1110

121100

1010

131101

1011

141110

1001

151111

1000

可以看出,格雷碼與標準的二進位制編碼之間的轉換公式有如下規則:

假設有乙個二進位制編碼b=b

mbm−

1…b2

b1b=b_mb_\dots b_2b_1

b=bm​b

m−1​

…b2​

b1​,其對應的格雷碼為g=g

mgm−

1…g2

g1g=g_mg_\dots g_2g_1

g=gm​g

m−1​

…g2​

g1​由二進位制編碼轉格雷碼的轉換公式為:

gm=

bmg_m = b_m

gm​=bm​gi

=(bi

+1)⊕

(bi)

,i=m

−1,m

−2,…

2,1g_i = (b_)⊕(bi), i=m-1,m-2,…2,1

gi​=(b

i+1​

)⊕(b

i),i

=m−1

,m−2

,…2,

1

由格雷碼轉二進位制的轉換公式為:

bm=

gmb_m = g_m

bm​=gm​bi

=(bi

+1)⊕

(gi)

,i=m

−1,m

−2,…

2,1b_i = (b_)⊕(g_i), i=m-1,m-2,…2,1

bi​=(b

i+1​

)⊕(g

i​),

i=m−

1,m−

2,…2

,1

從以上**可以看出,當乙個染色體變異後,它原來的表現現和現在的表現型是連續的。

優缺點:

優點:增強了遺傳演算法的區域性搜尋能力,便於連續函式的區域性空間搜尋

二進位制編碼(包括格雷碼)的劣勢:

雖然說二進位制編碼在交叉時產生新個體的可能性比浮點編碼要大,但面對一些多維、高精度要求的連續函式優化問題時會顯得非常不利,二進位制編碼存在著連續函式離散化時的對映誤差。二進位制串的長度短時,解可能達不到精度;二進位制串足夠長時,解的搜尋空間會急劇擴大(如舉例1中如果精度要求到小數點後兩位,那麼解空間擴大了100倍,串長m需要增加到17位)。因此這種情況下浮點數編碼會更適合。

含義:

浮點數編碼是指個體的每個基因值用某一範圍內的乙個浮點數來表示,而個體的編碼長度等於其決策變數的個數。因為這種編碼方法使用的決策變數的真實值,也稱之為真值編碼方法。

在浮點數編碼方法中,必須保證基因值在給定的區間限制範圍內,遺傳演算法中所使用的交叉、變異等遺傳運算元也必須保證其運算結果所產生的新個體的基因值也在這個區間限制範圍內。

優點:

含義:

符號編碼法是指個體染色體編碼串中的基因值取自乙個無數值含義、而只有**含義的符號集如{a,b,c…}。

優點:

含義:

排列編碼也叫序列編碼,是針對一些特殊問題的特定編碼方式。該編碼方式將有限集合內的元素進行排列。若集合內包含m個元素,則存在m!種排列方法,當m不大時,m!也不會太大,窮舉法就可以解決問題。當m比較大時,m!就會變得非常大,窮舉法失效,遺傳演算法在解決這類問題上具有優勢。

優點:

排序編碼使問題簡潔,易於理解。如需要解決上面說的排列問題(如解決tsp問題)時,用排列編碼自然、合理。

如複數編碼、dna編碼、多引數級聯編碼等等,不常用,在此不一一展開。

遺傳演算法入門(二)

一 遺傳演算法的特點 二 遺傳演算法的應用 諸如尋路問題,8數碼問題,囚犯困境,動作控制,找圓心問題 在乙個不規則的多邊形中,尋找乙個包含在該多邊形內的最大圓圈的圓心 tsp問題,生產排程問題,人工生命模擬等。問題的提出與解決方案 先考慮下面這個問題的解決辦法。已知一元函式 現在要求在既定的區間內找...

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

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

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

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