计算机智能专题-遗传算法(2带约束的实数编码)

转载:https://blog.csdn.net/weixin_44503976/article/details/126654601

前言:

本篇博客主要讲,遗传算法的实数编码:

前一篇博客讲的是,遗传算法的整数编码过程,通过整数十进制转化为二进制,通过二进制数的“交叉、变异”优选,实现遗传算法。

       但是更多的时候,遇到的是实数情况,也可以将实数表示为二进制,然后使用同样的操作,但是二进制编码存在精度问题。这篇博客,讲一种使用实数仿二进制“交叉、变异”的过程。

一、问题分析:

问题: max f (x1, x2) = 21.5 + x1·sin(4πx1) + x2·sin(20πx2)
s. t.  x1^2 + x_2^2 < 20
       -4.0 ≤ x1 ≤4
       1 ≤ x2 ≤ 6

12.27晚更新ing,,,,     

  这是一个带有约束的,实数问题,需要求他的最大值。前一篇博客使用的遗传算法—整数编码的方式,在本博文的这个问题也可以用,但是需要考虑精度问题,当然也可以使用带有小数的二进制进行转换。二进制数的交叉变异很容易解释,那么十进制的实数的交叉变异的操作,下面详细解释。

12.28上午更新

二、实数的交叉“仿二进制”交叉

首先再来回顾一下生物学的知识,染色体的交叉的本质是遗传信息DAN的重组,也即两只DNA交换他们的部分片段,这发生在同源染色体上,如下图所示。

关于同源染色体:

同源染色体一个来自父本,一个来自母本;

它们的形态、大小和结构相同。由于每种生物染色体的数目是一定的,

所以它们的同源染色体的对数也一定。

 作上述解释,是为了说明染色体之间的交叉是为了让给后代表现更多的性状,但是保留了该条染色体上绝大部分的遗传信息,

>>当同源染色体一模一样时,交换后的染色体不发生变化,

>>当两条染色体不同时,这种交换操作会使染色体A更趋向于染色体B,同理交换后的B也更趋向于A,因为各自的身上都携带了彼此的一部分。

按照这个理论分析,请看下面的式子:

 x_{1}^{t},x_{2}^{t}是两个父代,x_{1}^{t+1},x_{2}^{t+1}是一双子代,两个父代经过交叉之后产生两个子代,是为了保证种群在进化中数量保持不变,下面结合图像解释一下这个式子,

 当u=0.5时,\beta接近于1,此时x_{1}^{t+1}=x_{1}^{t}, x_{2}^{t+1}=x_{2}^{t}

 当u=0时,\beta接近于0,此时x_{1}^{t+1}=\frac{\left ( x_{1}^{t}+x_{2}^{t}\right )}{2}, x_{2}^{t+1}=\frac{\left ( x_{1}^{t}+x_{2}^{t}\right )}{2},介于两者中间

  当u>0.5时,\beta大于1,最大值1.2,此时1-\beta\epsilon [0,0.2],后代和u=0时类似仍处于两者之前,但是会更靠近各自的父代。

三、实数变异"仿二进制变异"

        染色体变异分为两大类,一般数目变异是致命的,朝着更加劣势的方向发展,而结构的变异一般来说对于也是不利的,更详细的变异种类如下图所示。

 待更新,,,,,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值