差分进化算法(Differential Evolution Algorithm,DE)是一种高效的全局优化算法。是一种模拟生物进化的随机模型,通过反复迭代,使得那些适应环境的个体被保存了下来。它的进化流程则与遗传算法非常类似,都包括变异、杂交和选择操作,但这些操作的具体定义与遗传算法有所不同。

DE的基本原理

基本思想是从某一组随机产生的初始种群开始,随机选择两个不同的个体向量相减产生差分向量,将差分向量赋予权值后与第三个随机选择的个体向量相加,产生变异向量。然后将变异向量与预先确定的父代个体向量按一定的规则交叉产生试验向量。

若试验向量的适应度值优于父代个体的向量的适应度值,则选用试验的向量进入下一代,否则保留父代个体向量。通过不断的进化,保留优胜的个体,引导搜索过程向最优解逼近。

DE的算法流程

1、基本参数的设置,包括种群规模(NP), 缩放因子(F), 交叉概率(CR)。

2、初始化种群。

3、计算种群适应度值。

4、终止条件不满足时,依次执行变异、交叉、选择运算进行循环,直到终止运算。

DE的特点

进化计算是一种具有鲁棒性的方法,能适应不同的环境不同的问题,而且在大多数情况下都能得到比较满意的有效解。他对问题的整个参数空间给出一种编码方案,而不是直接对问题的具体参数进行处理,不是从某个单一的初始点开始搜索,而是从一组初始点搜索。因而进化算法具有广泛的应用性,高度的非线性,易修改性和可并行性。

DE代码实现

DE的经验规则

控制参数对一个全局优化算法的影响是很大的,DE的控制变量选择也有一些经验规则。

1、种群数量。根据经验,种群数量必须满足NP≥4以确保DE具有足够的不同的变异向量。

2、变异算子。变异算子决定偏差向量的放大比例。F = 0.5通常是一个较好的初始选择。若种群过早收敛,那么 F 或 NP 应该增加。

3、交叉算子。交叉算子是控制一个试验向量来自随机选择的变异向量,而不是原来向量的概率的参数,CR 的一个较好的选择是0.1,但较大的CR 通常加速收敛。

4、最大进化代数。DE算法运行到指定的进化代数之后就停止运行,并将当前群体中的最佳个体作为所求问题的最优解输出。

5、终止条件。除最大进化代数可作为DE的终止条件,还需要其它判定准则。

DE的优缺点

DE算法最新颖的特征是它的变异操作。算法迭代初期,种群中个体差异大,变异操作会使算法具有较强全局搜索能力;到迭代后期,当趋于收敛,使得算法具有较强局部搜索能力。这种新颖特征优点有:待定参数少、不易陷入局部最优、收敛速度快。

但是DE也有不足之处:当种群个体较少,且生成新一代个体的适应值比原种群个体适应值差,导致个体难以更新,没有收敛到极值点。如果求解的参数设置不当,收敛过快,产生局部最优问题。

差分进化算法matlab代码_差分进化算法相关推荐

  1. a*算法matlab代码_导向滤波算法及其matlab代码实现

    导向滤波同样是一种平滑滤波算法,其与最小二乘滤波和双边滤波相比,同样是一种具有边缘保持的功能的图形滤波算法,可以用于处理图形噪点较多的图像,而且此种滤波算法与最小二乘滤波和双边滤波相比,有其独特的特点 ...

  2. a*算法matlab代码_蚁群算法(含MATLAB代码)

    CSDN-专业IT技术社区-登录​blog.csdn.net

  3. dijkstra算法matlab代码_头脑风暴优化(BSO)算法(附MATLAB代码)

    BSO讲解https://www.zhihu.com/video/1252605855767736320 B站搜索:随心390,同步观看视频 各位小伙伴可在闲鱼搜索 优化算法交流地,即可搜索到官方闲鱼 ...

  4. 人工鱼群算法python代码_人工鱼群算法python_鱼群算法 - Brillou的个人空间 - OSCHINA - 中文开源技术交流社区......

    本算法是参照李晓磊博士的论文实现的,详细的算法原理可阅读<一种新型的智能优化方法_人工鱼群算法_李晓磊> 算法基于鱼群的生存行为:在一片水域中,鱼存在的数目最多的地方就是本水域中富含营养物 ...

  5. 深度置信网络预测算法matlab代码_深度学习双色球彩票中的应用研究资料

    点击蓝字关注我们 AI研习图书馆,发现不一样的世界 深度学习在双色球彩票中的应用研究 前言 人工神经网络在双色球彩票中的应用研究网上已经有比较多的研究论文和资料,之前比较火的AlphaGo中用到的深度 ...

  6. nlm算法matlab代码_遗传算法GA的MATLAB代码

    MATLAB 实现算法代码: GA (遗传算法)--整数编码 function [BestGene,aa] = GA(MaxGeneration,GeneSize,GeneNum,pcross,pmu ...

  7. a*算法matlab代码_MATLAB数学建模算法的代码模板大全

    来喽,来喽! 上期的数模资源大家都领到了嘛 没领到的同学点击下方链接领哦 205G 数学建模备战资料大全免费送!!! 这期的数模代码模板也如约而至 废话不多说,直接上干货 内容大小接近120M,全是纯 ...

  8. 软抠图算法matlab代码,贝叶斯抠图算法matlab实现

    [实例简介] 完整的贝叶斯抠图matlab实现代码,经测试可运行,文档包含了图片资源,代码没有注释 [实例截图] [核心代码] BayesianMatting └── BayesianMatting ...

  9. 中文分词算法python代码_中文分词算法之最大正向匹配算法(Python版)

    最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的. 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配. 首先我们可以规定一个词的最大长度,每次扫描的时候 ...

  10. 跳一跳j算法ava代码_麻将游戏算法深入解析及实现代码

    麻将游戏算法深入解析及实现代码 这两天为了工具箱的完善,整理了这些年引擎开发的一些资料,无意中发现06年写的一个麻将算法,编译运行了一下,还是有点意思的,拿出来整理一下分享给大家. 麻将是一种大家最喜 ...

最新文章

  1. 获取radio和select的值,获取select的值
  2. 知识库问答中的关系识别研究回顾
  3. 开漏(open drain)和开集(open collector)
  4. 高性能MySQL之Count统计查询
  5. 用计算机计算出密码,自带计算器的密码
  6. matlab table中的文字转string_MATLAB_GUI_教程(2)pushbutton
  7. Swift中文教程(八) 枚举类型
  8. JVM中8种垃圾收集器小结
  9. 【codevs3945】 完美拓印
  10. CVPR学习(四):CVPR2019-目标检测
  11. 对抗搜索(Adversarial Games)——Min-max搜索 Aleph-beta剪枝搜索
  12. python海龟库命令_turtle库常用命令
  13. IOS实现应用内打开第三方地图app进行导航
  14. 解决Linux“Device is busy”与磁盘只读
  15. 南京理工大学计算机学院施静,“为是这个学院的一分子而骄傲”----院友风采(2014届):南京理工大学最年轻教授 祁志祥...
  16. 手势识别原来还可以这样控制电脑,你知道怎么做到的吗?
  17. 计算机应用word单元测试2,计算机应用基础测试题2
  18. viper4android 系统io错误,golang配置信息库viper的使用
  19. 诠释的伤感独特个性日志发布:你是今生最让我伤心的人
  20. 2022 软件测试选择题【太原理工大学】

热门文章

  1. 001.DIV 标签添加滚动条
  2. Django_基本配置保存
  3. 多线程总结之旅(9):线程同步之事件
  4. 重新组织和重新生成索引sp_RefreshIndex
  5. Android进阶2之oauth认证中UC无法跳转的问题
  6. 《深入浅出struts》读书笔记(2)
  7. 卡尔曼滤波器及代码实现
  8. 孙鑫VC学习笔记:第十三讲 (一) 用CArchive类读取与保存文件
  9. html支持图片文字的控件_[小工具][爬虫]一键完整备份你的Csdn博客文章(支持Markdown,HTML,文中图片)...
  10. java socket wex5,在wex5中如何一行代码更新数据