智能算法-遗传算法(4)

235 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第13天,点击查看活动详情

1. 遗传算法

本文主要针对遗传算法中关键操作进行讲解,首先回顾一下遗传算法整体思路:遗传算法首先需要把初始解集以某种手段编译成遗传基因序列(染色体),如下图所示就是一个编译完成的染色体,这个染色体代表(对应)着一个初始解。当然,为了涵盖所有种群基因,需要先编译产生很多很多类似的染色体。 然后,很多很多这样的染色体就组成一个初始种群。接下来就开始繁衍,计算出该种群内的每个染色体的优劣程度(适应度)进行比较,淘汰一部分比较差的个体。

对于剩下的个体进行基因重组,两两染色体进行基因序列交换(交叉),组成新的子代染色体序列。对于新的子代染色体序列,有一定几率出现变异(染色体基因序列某几个基因发生改变)。

接下来,这些子代作为父代,再重复以上所有操作,实现了优胜劣汰,经过多代的繁衍,最终省下来的染色体就是找到的最优解。

遗传算法基础思想及基本专业术语讲解请参考智能算法-遗传算法(1) - 掘金 (juejin.cn)

遗传算法实例详解请参考智能算法-遗传算法(2) - 掘金 (juejin.cn)

遗传算法部分关键操作详解请参考智能算法-遗传算法(3) - 掘金 (juejin.cn)

2. 关键操作及要素

2.1 交叉

最简易的交叉(crossover)方式:在两个染色体的某一相同位置处DNA被切断,其前后两串分别交叉组合形成两个新的染色体,又称基因重组,这就是交叉的大体思路。然而常用交叉方式不止这一种,以下详细介绍。

  • 单点交叉:将染色体两两组队,每一对染色体,随机(也可以使用其他方式)选择切断位置,将每个染色体切成两段(切11刀),交换上下染色体的一段基因,如下图所示。

image.png

  • 多点交叉:大体思路与单点交叉一致,最大的区别是此方式选了几个位置来切刀(切nn刀),然后交换其中的几段基因,如下图所示。

image.png

  • 均匀交叉:染色体两两排成一对,把染色体的基因一位一位来看,每一位基因都有一定概率(根据具体情况去确定概率)进行交换,如下所示。 父个体1    1 1 1 1 1 1 1 1 1 1 11  1  1  1  1  1  1  1  1  1  1
    父个体2    0 0 0 0 0 0 0 0 0 0 00  0  0  0  0  0  0  0  0  0  0

子个体1    1 1 0 0 1 1 1 0 1 1 01  1  0  0  1  1  1  0  1  1  0
子个体2    0 0 1 1 0 0 0 1 0 0 10  0  1  1  0  0  0  1  0  0  1

2.2 变异

变异(mutation)操作大体思想为:在细胞进行复制时可能以很小的概率产生某些复制差错,从而使DNA发生某种变异,产生出新的染色体,这些新的染色体表现出新的性状;

  • 位翻转变异:一个染色体的每一位基因以一定概率变成相反基因(非),如1变成0,0变成1。(二进制)
  • 均匀整数变异:对染色体的每一位基因,分别用符合某一范围[low, up]内均匀分布的随机数,以一定概率去替换原基因位。(实数,序列)
  • 高斯变异:对染色体的每一个基因位,分别用均值为uu,方差为σσ的高斯分布选取的一个随机数,以一定概率去替换原基因位。(实数)
  • 乱序变异:将个体染色体序列打乱顺序,每个基因位位置变动的概率为pp(可自行设定)。(二进制,实数,序列)