零基础入门进化算法(GEP)

3 篇文章 1 订阅
3 篇文章 0 订阅

由于笔者最近在研究有关于基因表达式编程的课题,对进化算法方面有了更为全面的理解,希望能给大家指点迷津。本文主要基于张克俊博士的毕业论文《基因表达式编程理论及其监督机器学习模型研究》,结合笔者的思考进行描述。

之前笔者已经有两篇关于进化算法的零基础入门讲解,传送门在此:

本篇将是该入门系列的最后一篇,后续有了研究进展可以和大家分享有难度的进阶篇。

遗传算子

之前的博客中遗传算子没有讲解完全,在此将转座算子与重组算子进行进一步说明。

转座算子

转座算子将由相邻基因元素组合起来的片段或串(转位元素),插入到染色体中其他位置。基本GEP中有三种转座算子:顺序插入转座、根转座与基因转座。

  • 顺序插入转座:

    随机选择转位元素,将转位元素插入到基因头部除首位置的任何位置,基因头部插入点后面的元素后移,超出基因头部长度的最后几个元素将被删除。顺序插入转座可以随机选择染色体、转位元素的开始位置、长度以及目标插入位置。其染色体变换示意如下:

在这里插入图片描述
其表达式树如下:
在这里插入图片描述

  • 根转座

    随机选择以函数为起始符号的转位元素,将其插入到基因头部的根位置,基因头部此插入点后面的元素后移,超出基因头部长度的最后几个元素将被删除。其染色体变换示意如下:
    在这里插入图片描述

其表达式树变化如下:
在这里插入图片描述
与顺序插入转座不同的是,根转座转位元素都是以函数为开始符号的,因此必须在基因头部进行选择。

选择方法为:在基因头部中随机选择一个基因位,从这个位置向后扫描基因,直到发现函数因子为止,这个函数就是根转位元素的起始位置,根转位元素将被插入到基因的头部。与顺序插入转座一样,根转座可以随机选择染色体、转位元素在基因头部的开始位置、长度和*(存疑)目标插入位置。

由于根转座直接对基因的根部操作,其对表达树的修改能力比顺序插入转座更强。通常转座因子取值小于等于3。

  • 基因转座:

    随机选择一个基因,将其作为转位元素转移到染色体的起始位置,后续基因顺延。与其它转座方式相比,基因转座不再保留转位元素副本,将删除原位置的转位基因,因此染色体长度将保持不变。此外,基因转座算子也可随机选择染色体、转位的基因。

综上,三种转座操作中,根转座引起的改变最强烈,顺序插入转座次之,基因转座对连接符“⊕”取为“+”的染色体则是无效的。转位元素长度为1时,转座操作弱化为变异操作,因此所有转座操作均为宏变异操作,具有创造遗传多样性的卓越能力。

重组算子

GEP中的重组是指两个父代染色体通过相互交换部分成分,生成两个新的子代染色体的过程。基本GEP中有三种重组算子、单点重组、两点重组和基因重组。

  • 单点重组:
    首先随机选择两个父代染色体配对,并随机产生1个分割点。两个父代染色体均在这个点处切开,然后相互交换切点之后的部分,形成两个子代染色体。其染色体变换如下:
    在这里插入图片描述

  • 两点重组:
    随机选择两个父代染色体,随机产生两个分割点,两个父代染色体均在这2个点处切开,然后相互交换两切点之间部分,形成两个子代染色体。其染色体变换如下:
    在这里插入图片描述

  • 两点重组对基因的改造能力要比单点重组强,通常会造成多个基因的表示树改变,一般用于解决复杂问题。

    基因重组中,首先随机选择两个父代染色体,选择其中一个等位基因相互交换,形成两个子代染色体。

综上,在重组操作中,由于子代染色体同时包含2个父代染色体中的不同基因(虽然父代有时会交换相近的部分),大多数时候将产生新的染色体。

两点重组破坏性最强,因为它对遗传元素的重组最彻底,能持续破坏旧基因块,生成新基因块。而基因重组并不能产生新基因,其产生的染色体仅仅是现存基因的排列组合。

适应值函数

适应值函数用来计算个体适应值,适应值是进化过程中进行选择的依据,是种群进化的源动力。因此适应值函数的设计方法,是进化算法能否成功解决问题的关键。基本GEP主要有3种适应值函数(基于最大化适应值函数)。

  • 基于绝对误差的适应值函数

  • 基于相对误差的适应值函数

  • 基于正确示例的适应值函数

基于误差的适应值函数可以解决任何函数发现问题,基于正确示例的适应值函数主要解决分类或者逻辑合成问题。

目前,基于残差平方和构建适应值函数已经成为主流。

结语

通过三篇博客对进化算法尤其是基因表达式编程进行了一个概览,对一个小白来说应该可以把基本概念搞懂,至于实际算例,(笔者之前的博客撸代码比较多),网上各种遗传算法基本算例数不胜数,可以自己去把代码下载下来体会一下,理论加实践会有很好的效果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值