日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

如何理解遗传算法中的编码与解码?以二进制编码为例

發(fā)布時(shí)間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何理解遗传算法中的编码与解码?以二进制编码为例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 前言
    • 編碼
    • 解碼
    • 補(bǔ)充

前言

遺傳算法的編碼方法各種各樣,但二進(jìn)制串編碼方式是最經(jīng)典的一種,那么它的編碼和解碼該如何進(jìn)行呢?或許本博客能給你一個(gè)具有參考價(jià)值的答案。


編碼

經(jīng)典遺傳算法中使用“染色體”來代指?jìng)€(gè)體,它由二進(jìn)制串組成,如下圖所示:

它的每一維稱為一個(gè)基因,取值為0或1。



下面用一個(gè)具體的優(yōu)化問題來解釋個(gè)體(染色體)的編碼和解碼:

maxmizef(x)=?x2+10cos?(2πx)+30,?5≤x≤5maxmize \ f(x)\ =\ -x^2+10\cos{(2\pi x)}+30,\ -5\le x \le 5maxmize?f(x)?=??x2+10cos(2πx)+30,??5x5

對(duì)于上述待優(yōu)化函數(shù),我們的編碼應(yīng)該設(shè)置多長(zhǎng)的二進(jìn)制串呢?

我們首先明確,編碼長(zhǎng)度取決于自變量的范圍(更準(zhǔn)確點(diǎn)應(yīng)該是決策變量的范圍)和搜索精度,所以圍繞它們來考慮如何編碼。

在本例,我們假設(shè)精度是0.01,記清楚了,是 0.01。

首先,我們可以確定自變量的范圍(更準(zhǔn)確點(diǎn)應(yīng)該是決策變量的范圍)是5-(-5)= 10.

另外,我們需要的精度是0.01,也就是說我們要能用我們的編碼把自變量范圍10以10.00表示,但二進(jìn)制串只能表示整數(shù)沒法表示小數(shù)(其實(shí)可以表示小數(shù)的,但我們不討論這種情況),所以我們換個(gè)思路,我們用1000來表示10.00,但請(qǐng)注意,二進(jìn)制串轉(zhuǎn)化為十進(jìn)制時(shí)不能剛好得到1000,而是得到 2n2^n2n,所以我們得找到一個(gè)最大值大于1000的二進(jìn)制串。

根據(jù)上圖,我們發(fā)現(xiàn)可以用長(zhǎng)度為10的二進(jìn)制串來“容納”上述的1000,為什么我用“容納”來表述呢?因?yàn)殚L(zhǎng)度為10的二進(jìn)制串可以表示 0~(210?1)0 \thicksim (2^{10}-1)0(210?1),也就是 0~10230 \thicksim 102301023,有 1023>10001023>10001023>1000;而 0~(29?1)0 \thicksim (2^{9}-1)0(29?1)0~5110 \thicksim 5110511, 有 511<1000511<1000511<1000 ,所以用1023來表示10.00,編碼時(shí)二進(jìn)制串長(zhǎng)度為10,而不是9。

由上圖公式,我們把初始群體的每個(gè)個(gè)體用一個(gè)長(zhǎng)度為10的二進(jìn)制串來表示,記為:
A10A9A8...A3A2A1A_{10}A_{9}A_{8}...A_{3}A_{2}A_{1}A10?A9?A8?...A3?A2?A1?

解碼

在上一小節(jié)我們用1023來表示10.00,那解碼的時(shí)候表示1023的二進(jìn)制串如何表示回10.00呢?

想想,我們編碼時(shí)把10.00放大成1023,那么解碼時(shí)縮小1023倍就行了!

這樣,我們解碼的時(shí)候做如下處理:

10.00 /1023 ≈ 0.009775,我們把解碼出來的十進(jìn)制數(shù)都乘以0.009775,就得到了最終結(jié)果。

于是有:

其中 Lx=?5L_x = -5Lx?=?5

xxx 就是解碼所得十進(jìn)制數(shù)。

補(bǔ)充

這里要稍微注意下,實(shí)際搜索精度與期望搜索精度之間是存在誤差的:

我們本想用1000來表示10.00的,但由于二進(jìn)制串只能表示 2n2^n2n,所以只好用1023來表示10.00,之后在

這里沒法除盡產(chǎn)生了誤差。







參考資料:
《人工智能及其應(yīng)用第五版》- 蔡自興

總結(jié)

以上是生活随笔為你收集整理的如何理解遗传算法中的编码与解码?以二进制编码为例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。