算法 - GA中的交叉算子
发布日期:2021-07-01 03:59:46 浏览次数:2 分类:技术文章

本文共 1082 字,大约阅读时间需要 3 分钟。

基因交叉,或者基因重组,就是把两个父体部分结构加以替换,生成新的个体的操作,习惯上对实数编码的操作叫做重组(Recombination),对二进制编码的操作称为交叉(crossover)

  1. 重组算法(Recombination)

    实值重组产生子个体一般是用下边这个算法:
    子个体=父个体1 + a × ( 父个体2 - 父个体1 )
    这里a是一个比例因子,可以由[ -d, 1+d] 上边服从均匀分布的随机数产生。
    不同的重组算法,a的取值是不同的,一般来讲,d=0.25是一个比较好的选择。

  2. 交叉算子

    如上文遗传算法中的数据结构中所讲,基因的二进制编码有直接编码(Normal)和Gray编码之分,以下所说算法,均适用于这两种算法。

假设基因的二进制编码长度为N,那么这些编码之间有N-1个空隙,可供交叉使用。二进制交叉算法就是如何选择空隙,选择多少个空隙。

以下将各走极端的选择一个空隙交叉的单点交叉算法,和选择N-1个空隙进行交叉的洗牌交叉算子大致说一下。

(1) 单点交叉

在二进制编码中,随机选择一个点,以这个点为界限,相互交换变量。
父个体1 011111110000000000
父个体2 000000001111111111
如粗体前边位置为所选择的交叉点,那么生成的子个体为:
子个体1 011111111111111111
子个体2 000000000000000000

(2)洗牌交叉

洗牌交叉就是,将一个父基因取一半,再上来自另外一个父基因的一半,构成一个新的子基因。

(3)模拟二进制交叉(SBX)

在这里插入图片描述

(4)Partial-Mapped Crossover (PMX)

(5)Order Crossover (OX)

(6)Position-based Crossover (PBX)

(7)Order-Based Crossover (OBX)

(8)Cycle Crossover (CX)

(9)Subtour Exchange Crossover

(10)轮盘赌

(11)DE

在这里插入图片描述

  1. 另外的
    (1)群体中的交叉算法
    将经过选择考验的个体放入一个群体,当放入的个体数量达到要求后,对里边的个体进行两两交叉。

(2) 交叉函数定义

种群的交叉只涉及一个交叉主体,而基因/个体的交叉涉及两个交叉主体。


参考:


  1. https://blog.csdn.net/u012750702/article/details/54563515

  2. https://blog.csdn.net/u013555719/article/details/97395038

转载地址:https://miracle.blog.csdn.net/article/details/101389414 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:算法 - 差分进化(DE)算法
下一篇:那些没有听过且很火概念(持续更新)

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年05月04日 07时02分28秒