遗传算法综述(三、 流程结构与编码解码(二进制编码,格雷码编码浮点数编码、符号编码))

遗传算法流程结构:

遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。每个个体实际上是染色体(chromosome)带有特征的实体。

染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码。

初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(fitness)大小选择(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。

这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解。

简单的说,遗传算法的流程就是通过一定的方法进行编码,并通过随机数对种群进行初始化,并对种群的适应度进行评估,之后以一定的比例对染色体进行交叉、选择和变异,以此来生成新的种群,不断迭代,当迭代次数达到一定限制或得到的解已经超过预期时会跳出循环,并对基因进行解码,获取其所对应的信息。

遗传算法各个步骤的解释

  1. 编码与解码

在实现遗传算法时,首要遇到的关键问题就是编码(encode)。它关系到解空间中的解在遗传算法中的表示形式。从问题的解(solution)到基因型的映射称为编码,即把一个问题的可行解从其解空间转换到遗传算法的搜索空间的转换方法。编码的方法直接影响到了遗传算法的交叉算子、变异算子等遗传算子的运算,因此很大程度上决定了遗传进化的效率。

在编码与解码时,大致流程如下图所示。

在编码过程中,要注意遵循以下的编码原则:

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

当今常见的编码方法为二进制编码,浮点数编码。

二进制编码

即个体基因型由一个二进制编码符号串来进行表示。二进制编码符号串的长度与问题所要求的求解精度有关。

例如,如果问题的的范围是(0,1023]中的所有整数,此时可知编码的精度应为1,因为范围内的数都为整数,若用m来表示二进制编码串的长度,由于需要遵循完备性的编码原则,因此可知1023≤2m+1 ,可解得m最小应为9,因此二进制编码串的长度应为9,如:染色体0010101111就可以表示表现型为x=175的个体。如果精度要求是精确到小数点之后的一位小数,那么我们则需要将所有表现型乘以10,并将获得到的放大十倍的实数进行取整,因此,二进制编码串的长度m应该满足1023×10≤2m+1

若问题的范围不是从0开始的,例如(100,1123],那么记U1=100 ,然后将问题的的参数减少100,将范围改变为(0,1023],之后继续依照上面的方法进行编码。

二进制解码:

      假设问题范围的最小值为U1 ,那么记编码后的基因为bmbm-1b2b1b0 ,可以通过X=i=0mbi2i  来获得相应的表现型。

二进制编码优缺点:

二进制编码的优点是编解码简单;交叉和变异等操作易于实现,但它也有一定的缺点,即对于一些连续函数的优化问题,由于其随机性使其局部搜索能力差,当接近最优解时,由于变异后表现型变化很大,不连续,所以会远离最优解。如上面的例子中,若0010101111的第2位发生了变异,即从0变为1,那么表现型则会从x=175变成了x=431,变异使得表现型变化很大,很不稳定。

格雷码编码:

格雷码编码是二进制编码的一种变形,对于一些连续优化问题, 二进制编码由于遗传算法的随机特性而使其局部搜索能力较差。为改进这一特性, 人们提出用格雷码进行编码。它是这样的一种编码方法, 其连续的两个整数所对应的编码值之间仅仅只有一个码位是不相同的, 其余码位都完全相同。假设有一个二进制编码为B=bmbm-1…b2b1, 其对应的格雷码为G=gmgm-1…g2g1, 则

格雷码有这样一个特点:任意两个整数的差是这两个整数所对应的格雷码之间的海明距离。这一特点是遗传算法中使用格雷码来进行个体编码的主要原因。格雷码除了具有二进制编码的优点外, 还能提高遗传算法的局部搜索能力。

浮点数编码(实数编码):

对于一些多维、高精度要求的连续函数优化问题, 使用二进制编码来表示个体将会带来一些不利, 例如, 二进制编码存在着连续函数离散化时的映射误差, 同时不便于反映所求问题的特定知识。为了克服这些缺点, 人们提出实数编码方法, 即个体的每个基因值用某一范围内的一个浮点数来表示,而个体的编码长度等于其决策变量的个数。在浮点数编码方法中,必须保证基因值在给定的区间限制范围内,遗传算法中所使用的交叉、变异等遗传算子也必须保证其运算结果所产生的新个体的基因值也在这个区间限制范围内。

浮点数编码方法的优点如下:①适合于遗传算法中表示范围较大的数;②便于较大空间的遗传搜索;③提高了遗传算法的精度要求;④改善了遗传算法的计算复杂性, 提高了运算效率;⑤便于算法与经典优化方法的混合作用;⑥便于设计专门问题的遗传算子。

符号编码:

符号编码方法是指染色体编码串中的基因值取自一个无数值含义、而只有代码含义的符号集。这些符号可以是字符, 也可以是数字。例如, 对于旅行商问题, 假设有n个城市分别记为C1, C2, …, Cn, 则[C1, C2, …, Cn]就可构成一个表示旅行路线的个体。

符号编码的主要优点是便于在遗传算法中利用所求问题的专门知识及相关算法。

对于符号编码, 染色体编码与问题的解之间有三个主要问题:①染色体的可行性;②染色体的合法性;③映射的唯一性。可行性是指染色体编码成为解之后是否在给定问题的可行域内。染色体的可行性概念源于约束优化问题, 无论是传统方法还是遗传算法都必须满足约束。对于许多优化问题, 可行域是用等式或不等式组来表达的。在这种情况下, 许多有效的惩罚法可用来消除不可行的染色体。在约束优化问题中, 最优点通常位于可行域的边界上, 惩罚法将迫使遗传搜索从可行域和不可行域两边同时逼近最优点。

合法性是指染色体编码是否代表给定问题的一个解。染色体的合法性概念源于编码技术。许多组合优化问题采用了问题专用的编码方法, 这些编码方法采用单断点交叉可能会获得非法的后代。由于非法的染色体不能成为解, 这样的染色体不能进行评估, 因此惩罚法就无法适用。这种情况下, 通常采用修复方法, 将非法染色体转换为合法染色体。例如, 著名的PMX算子就是为解决单断点交叉的非法性而提出的一种将替代编码和修复技术结合起来的双断点交叉方法。

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值