差分进化算法_差分进化算法
差分进化算法(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】智能优化算法_蜻蜓优化算法DA
[Matlab]智能优化算法_蜻蜓优化算法DA 1.背景介绍 2.灵感 3.公式推导 3.1 勘探和开发操作 4.算法流程图 5.文件结构 6.伪代码 7.详细代码及注释 7.1 DA.m 7.2 d ...
- 【Matlab】智能优化算法_蚁狮优化算法ALO
[Matlab]智能优化算法_蚁狮优化算法ALO 1.背景介绍 2.基本思想 3.公式推导 3.1 ALO算法的运算符 3.2 蚂蚁的随机游动 3.3 困在蚂蚁坑里 3.4 修建陷阱 3.5 蚂蚁划向 ...
- 【Matlab】智能优化算法_灰狼优化算法GWO
[Matlab]智能优化算法_灰狼优化算法GWO 1.背景介绍 2.基本思想 2.1 等级制度 2.2 狩猎方式 3.公式推导 3.1 社会等级制度 3.2 包围猎物 3.3 包围猎物 3.4 攻击猎 ...
- 机器学习 线性回归算法_探索机器学习算法简单线性回归
机器学习 线性回归算法 As we dive into the world of Machine Learning and Data Science, one of the easiest and f ...
- python实现洗牌算法_洗牌算法及 random 中 shuffle 方法和 sample 方法浅析
对于算法书买了一本又一本却没一本读完超过 10%,Leetcode 刷题从来没坚持超过 3 天的我来说,算法能力真的是渣渣.但是,今天决定写一篇跟算法有关的文章.起因是读了吴师兄的文章 <扫雷与 ...
- hash算法_一致性hash算法简介
一致性hash算法有什么用?我们为什么需要一致性hash算法?这两个问题的答案可以看这篇文章 分布式系统路由算法简介. 了解了一致性hash算法出现的背景,我们来看看什么是一致性hash算法.一致性h ...
- 一致性hash算法_分布式寻址算法
一.分布式寻址算法简介 分布式寻址算法是很重要的内容,不了解这些算法,也就不能透彻的了解各种分布式中间件的原理.简单说一下这些高大上的寻址到底是个啥意思,比如在elasticsearch中,采用的是多 ...
- 多边形之间相交求交点的算法_路径规划算法总结
本文来自知乎网友@搬砖的旺财,地平线机器人算法工程师.作者根据自己本科和硕士阶段的学习经历,整理归纳了所接触过的规划算法. 1.自主机器人近距离操作运动规划体系 在研究自主运动规划问题之前,首先需建立 ...
- java 最少使用(lru)置换算法_缓存置换算法 - LRU算法
LRU算法 1 原理 对于在内存中并且不被使用的数据块就是LRU,这类数据需要从内存中删除,以腾出空间来存储常用的数据. LRU算法(Least Recently Used,最近最少使用),是内存管理 ...
最新文章
- 函数依赖与 Armstrong公理
- JAVA接口的访问权限_Java中访问权限-类和接口
- http中的净荷 payload(有效载荷、有效负载)是什么?
- MongoDB副本集配置系列四:节点的关闭顺序
- eclipse 3.7安装扩展心得
- scrt如何切换成英文版_英文版SecureCRT显示乱码解决
- ComponentName知识
- anaconda中自带的qtdesigner做界面
- swap,交换,第三随笔
- 车场系统服务器内存莫名急速下降,宝德工控机在停车场监控系统的解决方案
- nsfilemanager
- 读《操作系统之哲学原理》的一点感想
- 【手写数字识别】基于matlab GUI SVM手写数字识别【含Matlab源码 676期】
- 实验二 货物进销管理系统
- 2002111126 邱新辉
- 《零基础学HTML5+CSS3(全彩版)》读书笔记
- 异常:git did not exit cleanly (exit code 128)
- 缓存Cache概述——缓存Cache1.1.1
- 滴水逆向学习笔记 -1-
- 团队管理的五大核心 | 管理者必读