差分进化算法(Differential Evolution)概述

1 引言

​最优化方法分为传统优化方法启发式优化方法两大类。传统优化方法大多利用目标函数的梯度 (或导数)信息实现单可行解的惯序、确定性搜索;启发式优化方法以仿生算法为主,通过启发式搜索策略实现多可行解的并行、随机优化。启发式搜索算法不要求目标函数连续、可微等信息,具有较好的全局寻优能力。

​在众多启发式优化方法中,差分进化算法是一种基于群体差异的启发式随机搜索算法,该算法是R.Store和K.Price为求解Chebyshev多项式而提出的。差分进化算法具有原理简单、受控参数少、鲁棒性强等优点。

​差分进化算法来源于早期提出的遗传算法(Genetic Algorithm,GA)。而差分进化算法引入了利用当前群体中个体差异来构造变异个体的差分变异模式,是其独特的进化方式。

​总而言之,差分进化算法(DE)是一种多目标(连续变量)优化算法(MOEAs),用于求解多维空间中整体最优解。

2 过程

2.1 初始化

设解空间内存在NP个个体(即种群大小为NP),每个个体是D维向量。

初始种群随机产生:
xi,j=xjl+rand(0,1)∗(xju−xjl)x_{i,j}=x_{j}^{l}+rand(0,1)*(x_{j}^{u}-x_{j}^{l}) xi,j​=xjl​+rand(0,1)∗(xju​−xjl​)

iii 表示第i个个体,jjj 表示第j个分量,xjlx_{j}^{l}xjl​ 表示第j个分量的下界,xjux_{j}^{u}xju​ 表示第j个分量的上界。

2.2 变异

差分进化算法使用种群中两个不同向量来干扰一个现有向量,进行差分操作,来实现变异。

第ggg代变异个体:
vi(g)=xr1(g)+F∗(xr2(g)−xr3(g))v_{i}(g)=x_{r1}(g)+F*(x_{r2}(g)-x_{r3}(g)) vi​(g)=xr1​(g)+F∗(xr2​(g)−xr3​(g))
xr1(g),xr2(g),xr3(g)x_{r1}(g),x_{r2}(g),x_{r3}(g)xr1​(g),xr2​(g),xr3​(g)是从当前群体中随机选择的3个互不相同的个体,而且它们也不应与目标个体xix_{i}xi​相同。FFF为变异因子(缩放因子),vi(g)v_{i}(g)vi​(g)为目标个体xi(g)x_{i}(g)xi​(g)对应的变异个体。

在进化过程中,为了保证解的有效性,必须判断变异个体中各分量是否满足边界条件,如果不满足边界条件,则变异个体用随机方法重新生成。

不同的差分策略,可以描述为DE/x/y/z

其中参数 x 表示参与变异的向量,可以是随机向量 (rand)、当前种群的最优向量 (best) 或者是当前向量本身 (current);

参数 y 表示参与变异的差分向量数目

参数 z 表示交叉的模式,如二项式交叉、指数交叉以及正交交叉。

其中DE/ rand/ 1/ bin和DE/ best/ 2 /bin 是目前应用最为广泛的差分策略,其中第1种策略有利于保持种群多样性,第2种策略有利于提高算法的收敛速度。

2.3 交叉

对于每个个体和它所生成的子代变异向量进行交叉,具体的说就是对每一个分量按照一定的概率选择子代变异向量(否则就是原向量)来生成试验个体。
ui,j(g)={vi,j(g),ifrand(0,1)≤CRorj=jrandxi,j(g),otherwiseu_{i,j}(g)= \begin{cases} \ v_{i,j}(g), & if\quad rand(0,1)\leq CR\quad or\quad j=j_{rand}\\ \ x_{i,j}(g), & otherwise\\ \end{cases} ui,j​(g)={ vi,j​(g), xi,j​(g),​ifrand(0,1)≤CRorj=jrand​otherwise​
其中CRCRCR为交叉概率因子,jrandj_{rand}jrand​为随机的一个分量,确保交叉后的试验个体至少有一维分量由变异个体提供。

2.4 选择

差分进化算法使用贪婪算法,根据适应度函数的值,从目标个体和试验个体中选择更优的作为下一代。
xi(g+1)={ui(g),iff(ui(g))≤f(xi(g))xi(g),otherwisex_{i}(g+1)= \begin{cases} \ u_{i}(g), & if\quad f(u_{i}(g))\leq f(x_{i}(g)) \\ \ x_{i}(g), & otherwise \end{cases} xi​(g+1)={ ui​(g), xi​(g),​iff(ui​(g))≤f(xi​(g))otherwise​

通过以上的变异、交叉和选择操作,种群进化到下一代并反复循环,直到算法迭代次数达到预定最大次数,或种群最优解达到预定误差精度时算法结束。

2.5 算法流程图

3 算法控制参数

DE 算法的控制参数主要有种群规模 NP、缩放因子 F 以及交叉概率 CR。

在经典 DE 算法中采用的是参数固定设置的方式,即参数在搜索之前预先设置好并且在整个迭代过程中保持不变。

3.1 种群规模

种群规模(NP)主要影响种群的多样性以及收敛速度。它的取值范围一般在[5D,10D]之间(D为每个个体的维度)。

增大NP 可以提高种群的多样性,使得DE 算法更能收敛于最优解,但是会增加算法运行的时间复杂度。

减小NP 可以提高收敛速度,但易陷入局部最优,即早熟收敛。

当NP<20 时,还容易发生停滞现象,停滞现象发生后算法不能收敛和继续向最优解方向搜索寻优,但种群继续保持着多样性以及非收敛状态。

3.2 变异因子

变异因子(F)决定种群个体差分步长大小,影响算法最优解的搜索。它的取值范围一般在[0.4,0.95]之间。

增大F 可以加大算法的搜索空间,提高种群多样性,有利于算法搜索最优解,但会降低收敛速率。

减小F 可以增加算法的开发能力,提高算法的收敛速度,但同时增加陷入早熟收敛的风险。

3.3 交叉概率因子

交叉概率因子(CR)起着平衡算法全局与局部搜索能力的作用。它的取值范围一般在[0.3, 0.9]之间。

增大CR 可以提高种群多样性,但可能会造成算法后期收敛速度变慢。

减小CR 有利于分析个体各维可分离问题

4 总结

差分进化算法 (DE) 是进化算法簇中一个非常重要的新兴分支,在很多基准测试和实际应用问题上都表现出了卓越的性能,其新颖的差分进化操作起到了决定性的作用。

近年来针对 DE 算法的理论研究主要集中在如何提高算法的寻优能力、收敛速度以及克服启发式算法常见的早熟收敛以及搜索停滞等缺陷方面。 而改进差分进化算法可以朝着控制参数设置差分策略选择种群结构以及与其他最优化算法混合四大方向前进。

差分进化算法(Differential Evolution)概述相关推荐

  1. 关于差分进化算法(Differential Evolution)

    关于差分进化算法(Differential Evolution) 觉得有用的话,欢迎一起讨论相互学习~ 最近因为论文和审稿等综合因素的影响,决定对DE进行多一些研究,发现原先自己的了解太肤浅了发现了不 ...

  2. 差分进化算法 (differential evolution,DE)与离散差分进化算法(discrete DE, DDE)

    目录 概述 初始化 变异操作 交叉操作 选择操作 参数分析 优点 缺点 离散差分进化算法 概述 差分进化算法是一种用于解决全局优化问题的随机搜索算法.与遗传算法. 粒子群优化算法.蚁群算法.人工蜂群算 ...

  3. 差分进化算法_差分进化算法

    差分进化算法(Differential Evolution Algorithm,DE)是一种高效的全局优化算法.是一种模拟生物进化的随机模型,通过反复迭代,使得那些适应环境的个体被保存了下来.它的进化 ...

  4. 【BP数据预测】差分进化算法优化BP神经网络数据预测【含Matlab源码 1315期】

    ⛄一.差分进化算法简介 1 前言 在遗传.选择和变异的作用下,自然界生物体优胜劣汰,不断由低级向高级进化和发展.人们注意到,适者生存的进化规律可以模式化,从而构成一些优化算法:近年来发展的进化计算类算 ...

  5. 【图像压缩】香农熵和差分进化算法多级图像阈值图像压缩【含Matlab源码 2035期】

    ⛄一.差分进化算法简介 1 前言 在遗传.选择和变异的作用下,自然界生物体优胜劣汰,不断由低级向高级进化和发展.人们注意到,适者生存的进化规律可以模式化,从而构成一些优化算法:近年来发展的进化计算类算 ...

  6. Python实现DE差分进化算法优化支持向量机分类模型(SVC算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 差分进化算法(Differential Evolution,DE ...

  7. 【图像压缩】基于matlab香农熵和差分进化算法多级图像阈值图像压缩【含Matlab源码 2035期】

    一.差分进化算法简介 1 前言 在遗传.选择和变异的作用下,自然界生物体优胜劣汰,不断由低级向高级进化和发展.人们注意到,适者生存的进化规律可以模式化,从而构成一些优化算法:近年来发展的进化计算类算法 ...

  8. 标准差分进化算法matlab程序实现(转载)

    标准差分进化算法matlab程序实现 自适应差分演化算法方面的Matlab和C++代码及论文 差分进化算法 DE-Differential Evolution matlab练习程序(差异演化DE) [ ...

  9. 差分进化算法原理及优化应用

    目录 一.差分进化(differential evolution)算法的起源 二.差分进化算法的原理 (一)初始化参数

  10. 差分进化算法(Differential Evolution,DE)实例详解

    差分进化算法是(differential evolution,DE)是基于群体智能理论的优化算法,是通过群体内个体间的合作与竞争而产生的智能优化搜索算法.对比进化计算,它保留了基于种群的全局搜索策略, ...

最新文章

  1. matlab--积分integration
  2. Git漏洞导致攻击者可在用户电脑上运行任意代码
  3. vim的代码折叠:设置默认代码不折叠
  4. 触摸传感器的电路图符号_光电传感器电路图以及应用和优点
  5. 【Linux入门基础知识】Linux 脚本编写基础
  6. Mysql 索引底层原理
  7. Vue.js(5)- 全局组件
  8. qt 串口发送char 数组乱码_串口的波特相差多大会误码
  9. oracle itl解析,oracle数据块dump文件中ITL详解
  10. python第一个程序--hello world
  11. firewall防火墙的规则添加
  12. Keepalived高可用(原理、安装、启动、单实例配置、双实例双主配置实战篇)
  13. 图形化操作工具DIGITS 6.1的安装与运行
  14. Arm中国合资公司具体布局浮出水面
  15. ROM 、RAM和FLASH 的区别
  16. 计算机开平方的三种算法
  17. Excel怎么快速制作二维码图片?
  18. 可对接WMS|ERP跨境电商的分拣线 仓储物流智能快递直线分拣机
  19. 08.音频系统:第004课_Android音频系统详解:第002节_以例子说明几个重要概念
  20. NLTK-004:加工原料文本

热门文章

  1. 海盗王封WPE的方法
  2. PCWorld:Android游戏业务渐露锋芒
  3. 驱动人生病毒清除教程
  4. 【python项目开发】爬虫基础知识
  5. attachEvent时间监听方式
  6. 助老服务机器人结构设计
  7. HTC官方通用解锁教程(附一键解锁工具)
  8. 瑞星个人防火墙万能序列号ID号
  9. Qt视频直播软件--项目实战(Day2)
  10. 超级HOOK技术无需分析基址