遗传算法(GA)中的编码方式-二进制编码、格雷编码、实数编码

名称对应:样本->种群; 单条样本->种群个体(染色体);基因->单个特征;染色体(个体)-> 特征的组合。

如何将样本特征(基因)转换成编码,是GA算法中的第一步。

(1)二进制编码

汉明悬崖问题

(2)格雷编码

 (3)实数编码


(1)二进制编码

假设变量 x 的定义域为[a, b] ,其精度要求为10^{-5},则我们需要将[a,b]划分成(b-a)*10^{5}份等长区间,每个区间都用二进制串来表示,此时,任何一个二进制串<s_{l-1},s_{l-2},..,s_0>选都对应[a,b]中的一个点,这就是变量由实数空间向二进制位串空间的转化。

上述二进制串<s_{l-1},s_{l-2},..,s_0>,需要解码过程:

首先,将二进制串转成十进制整数:

                                                                      x^{'}=\sum_{i=0}^{l-1}s_{i}*2^i

然后,按照下面等式计算对应的变量x:

 

                                                                     x=a+x^{'} \frac{b-a}{2^l-1}      

举个例子:特征变量X,取值均处于0-1范围内[用归一化的方法解决此问题]。l 就是区间个数,也就是精度。

将其划分为10等份,所以区间就变成了[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]

那么0.2这个点,用字符串表示就是 0100000000。 ->二进制编码 

转换的话就是:x^{'} = 2^8x= 0+ 2^{8} * \frac{1}{2^{10}-1} \approx 0.25。那么转换后 0.25-0.2=0.05。精度在0.1的范围内。

二进制编码缺点:需要频繁的编码和解码, 计算量大, 而且只能产生有限的离散点阵, 还可能产生额外的最优点。且存在汉明悬崖问题

汉明悬崖问题

(一)汉明距离定义:在一个码组集合中,任意两个码字之间对应位上码元取值不同的位的数目定义为这两个码字之间的汉明距离。在一个码组集合中,任意两个编码之间汉明距离的最小值称为这个码组的最小汉明距离。最小汉明距离越大,码组越具有抗干扰能力。

举例: 码字A为 10001001    码字B为 10110001  那么不同的字符数为3,汉明距离就是3。

计算公式: d(x,y) = \sum x_i \bigoplus y_i   i=0,1,…n-1,x,y都是n位的编码,⊕表示异或。

(二)原因:为什么这个问题会影响二进制编码?

因为会导致在某些相邻整数的二进制代码之间有很大的汉明距离,使得遗传算法的交叉和突变都难以跨越。

举例 : 8的二进制:1000,7的二进制:0111。相邻整数汉明距离:4。这种情况,交叉和突变都难以处理。

(2)格雷编码

格雷编码以二进制编码为基础,其具体原理如下:

二进制串<s_{l-1},s_{l-2},..,s_0>对应的格雷串为<a_{l-1},a_{l-2},..,a_0>,则二进制编码转化为格雷编码的数学变换为:

                                                                     a_i = \left\{\begin{matrix} b_1 & i=1 \\ b_{i-1}\bigoplus b_{i} & i>1 \end{matrix}\right.

其中,运算符⊕表示模 2 加法

而格雷串转化为二进制串的数学变换为

                                                                          s_i= \sum_{j=1}^{i} a_j(mod2) 

 

 (3)实数编码

进行如下线性变换:

                                                      x(j)=a(j)+y(j)[b(j)-a(j)],j=1,...,n

n为样本中的影响因素个数,即把初始区间的第j 个优化变量x(j)对应到[0-1] 区间上的实数 y(j)。

 

参考文献:

[1]https://blog.csdn.net/zxwsbg/article/details/89461800

[2]王志海. 基于GA-BP模型的北京市二手房成交价格预测[D].河北工程大学,2019.

[3]金菊良,杨晓华,丁晶.基于实数编码的加速遗传算法[J].四川大学学报(工程科学版),2000(04):20-24.

  • 17
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Foneone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值