遗传算法(二)——编码

在实现遗传算法时,首要遇到的关键问题就是编码(encode)。编码的方法直接影响到了遗传算法的交叉算子、变异算子等遗传算子的运算,因此很大程度上决定了遗传进化的效率。

编解码过程图示:
在这里插入图片描述
编码原则:

  • 完备性(completeness):问题空间的所有解都能表示为所设计的基因型
  • 健全性(soundness):任何一个基因型都对应于一个可能解
  • 非冗余性(non-redundancy):问题空间(表现型)和表达空间(基因型)一一对应

下面主要总结一下最主流的一些编码方法:

二进制编码

含义:
个体基因型使用二值符号集{0,1}来构成,整个基因型是一个二进制编码符号串。二进制编码符号串的长度与问题所要求的求解精度有关。

举例1:
x是属于[0,1023]的整数中的一个,精度为1(因为是整数),m表示二进制编码串的长度,由于解空间的要求, 1024 ≤ 2 ( m − 1 ) 1024≤2^{(m-1)} 10242(m1),因此m最小为10。如:染色体0010101111就可以表示表现型为x=175的个体。
当然,如果精度要求到小数点后1位,那么

举例2:
个体的表现型包含两个变量 x 1 、 x 2 x_1、x_2 x1x2,且他们均为区间在[0,7]之间的整数,那么可以用3位无符号二进制整数来表示一个变量,如:基因型101110对应的表现型为 x 1 = 5 , x 2 = 6 x_1=5,x_2=6 x1=5,x2=6

优缺点:
优点:编解码简单;交叉和变异等操作易于实现;符合最小字符集编码原则;可以利用模式定理对算法进行理论分析等。
缺点:对于一些连续函数的优化问题,由于其随机性使其局部搜索能力差,当接近最优解时,由于变异后表现型变化很大,不连续,所以会远离最优解。如上面举例1中,加入0010101111的第2位发生了变异,那么表现型则会从x=175变成了x=331,变异使得表现型变化很大,很不稳定。

格雷码

含义:
格雷码编码是其连续的两个整数所对应的编码之间只有一个码位是不同的,其余码位完全相同。它是二进制编码方法的一种变形。

举例3:
四位的二进制和格雷码转换如下:

十进制二进制格雷码
000000000
100010001
200100011
300110010
401000110
501010111
601100101
701110100
810000100
910010101
1010101111
1110111110
1211001010
1311011011
1411101001
1511111000

可以看出,格雷码与标准的二进制编码之间的转换公式有如下规则:
假设有一个二进制编码 B = b m b m − 1 … b 2 b 1 B=b_mb_{m-1}\dots b_2b_1 B=bmbm1b2b1,其对应的格雷码为 G = g m g m − 1 … g 2 g 1 G=g_mg_{m-1}\dots g_2g_1 G=gmgm1g2g1
由二进制编码转格雷码的转换公式为:

g m = b m g_m = b_m gm=bm
g i = ( b i + 1 ) ⊕ ( b i ) , i = m − 1 , m − 2 , … 2 , 1 g_i = (b_{i+1})⊕(bi), i=m-1,m-2,…2,1 gi=(bi+1)(bi),i=m1,m2,2,1

由格雷码转二进制的转换公式为:

b m = g m b_m = g_m bm=gm
b i = ( b i + 1 ) ⊕ ( g i ) , i = m − 1 , m − 2 , … 2 , 1 b_i = (b_{i+1})⊕(g_i), i=m-1,m-2,…2,1 bi=(bi+1)(gi),i=m1,m2,2,1

从以上表格可以看出,当一个染色体变异后,它原来的表现现和现在的表现型是连续的。

优缺点:
优点:增强了遗传算法的局部搜索能力,便于连续函数的局部空间搜索

二进制编码(包括格雷码)的劣势:
虽然说二进制编码在交叉时产生新个体的可能性比浮点编码要大,但面对一些多维、高精度要求的连续函数优化问题时会显得非常不利,二进制编码存在着连续函数离散化时的映射误差。二进制串的长度短时,解可能达不到精度;二进制串足够长时,解的搜索空间会急剧扩大(如举例1中如果精度要求到小数点后两位,那么解空间扩大了100倍,串长m需要增加到17位)。因此这种情况下浮点数编码会更适合。

浮点数编码/实数编码

含义:
浮点数编码是指个体的每个基因值用某一范围内的一个浮点数来表示,而个体的编码长度等于其决策变量的个数。因为这种编码方法使用的决策变量的真实值,也称之为真值编码方法。
在浮点数编码方法中,必须保证基因值在给定的区间限制范围内,遗传算法中所使用的交叉、变异等遗传算子也必须保证其运算结果所产生的新个体的基因值也在这个区间限制范围内。

优点:

  • 适用于在遗传算法中表示范围较大的数
  • 适用于精度要求较高的遗传算法
  • 便于较大空间的遗传搜索
  • 改善了遗传算法的计算复杂性,提高了运算交率
  • 便于遗传算法与经典优化方法的混合使用
  • 便于设计针对问题的专门知识的知识型遗传算子
  • 便于处理复杂的决策变量约束条件
  • 在连续参数优化、连续渐变问题方面具有优势

符号编码法

含义:
符号编码法是指个体染色体编码串中的基因值取自一个无数值含义、而只有代码含义的符号集如{A,B,C…}。

优点:

  • 符合有意义积术块编码原则
  • 便于在遗传算法中利用所求解问题的专门知识
  • 便于遗传算法与相关近似算法之间的混合使用。

排列编码法

含义:
排列编码也叫序列编码,是针对一些特殊问题的特定编码方式。该编码方式将有限集合内的元素进行排列。若集合内包含m个元素,则存在m!种排列方法,当m不大时,m!也不会太大,穷举法就可以解决问题。当m比较大时,m!就会变得非常大,穷举法失效,遗传算法在解决这类问题上具有优势。
优点:
排序编码使问题简洁,易于理解。如需要解决上面说的排列问题(如解决TSP问题)时,用排列编码自然、合理。

其他编码方式

如复数编码、DNA编码、多参数级联编码等等,不常用,在此不一一展开。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值