差分进化算法和遗传算法的区别

区别就在于变异操作

1 差分进化引入的意义

遗传算法的变异操作,就是对个体的某个或某段基因进行随机变换,得到新的个体,也就是新的一组解。

它的目的是通过生成新的解,来试图找到更优的选择。

但是,直观上能想到的是,经过变异之后,新的那段基因,可能是和原先种群中所有的个体中,所对应的所有基因中,有重合的。这就意味着,这次变异是没有意义的变异,并没有产生新的解,还是和原来的有的解一样。

造成的后果也不难想到。当到了优化的后期,整个种群有可能陷入了局部最优。这时候,就需要让解能够跑出那个局部最优的圈圈中,而“无效”的变异,并不能达成目的。

因此,我们希望,变异操作后的解,是能够“与众不同”的,和当前的所有解区分开来,从而有可能碰上全局最优。

2 实现方法

核心公式如下:

ν i ( g + 1 ) = x r 1 ( g ) + F ⋅ ( x r 2 ( g ) − x r 3 ( g ) ) \nu_{i}(g+1)=x_{r 1}(g)+F \cdot\left(x_{r 2}(g)-x_{r 3}(g)\right) νi(g+1)=xr1(g)+F(xr2(g)xr3(g))

x r 1 , x r 2 , x r 3 . . . x r n 是 n 个 个 体 , F 是 缩 放 因 子 , v i 是 新 生 成 的 解 , g 表 示 第 几 代 x_{r1},x_{r2},x_{r3}...x_{rn} 是n个个体,F是缩放因子,v_i是新生成的解,g表示第几代 xr1,xr2,xr3...xrnnFvig

可以直观看出,这个算法,通过将某两个现有个体的差,进行缩放后,再加到另一个个体中,从而达到变异的目的。

通过缩放,就能确保新的解,离原来的几个解都有一定的距离。保证其探索能力。

可能有同学会问,这个公式只涉及到三个个体,那如果新的个体跟这三个个体之外的其它个体,发生雷同呢,不是也就没有用了吗?

这个情况,在算法执行初,是有可能存在的。但是当算法执行到后期时,显然大部分的解都是较为接近的。因此通过这方法,产生的新个体,只要和这三个差异大,就基本是和全部个体差异都比较大。因此,是能达到预期效果的。

参考-cnblog

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值