DE–A Simple and Efficient Heuristic for Global Optimization over Continuous Spaces
0、论文背景
本文提出了一种新的最小化可能的非线性和不可微连续空间函数的启发式方法,即差分进化。
Storn R, Price K. Differential evolution–a simple and efficient heuristic for global optimization over continuous spaces[J]. Journal of global optimization, 1997, 11(4): 341-359.
1、介绍
本文主要提出了差分进化,然后与其他全局优化算法进行比较,然后得出差分进化效果更好的结论。本文不做其他算法进行解读,主要解读的是差分进化。
用户通常要求一个实用的最小化技术应该满足五个要求:
- 能够处理不可微、非线性和多模态代价函数。
- 并行地处理计算密集型成本函数。
- 使用很少的控制变量来控制最小化。这些变量也是稳健的和易于选择的。
- 良好的收敛性。
- 为了满足要求1,将DE设计为一种随机直接搜索方法。
- DE通过使用一个种群向量来满足要求2,其中种群向量的随机扰动可以独立地完成。
- DE的自组织方案利用两个随机选择的种群向量的差分向量来扰动一个现有的向量。对每个种群向量都进行了扰动。
- 后续实验表明,DE在收敛性这一方面变现地非常好。
2、Differential evolution
差分进化(DE)是一种利用NP个D维参数向量的并行直接搜索方法,G表示迭代次序。
DE通过将两个参数向量之间的加权差值加到第三个向量中来生成新的参数向量。让这个操作被称为突变。
突变向量的参数然后与另一个预定向量的参数混合,即目标向量,以产生所谓的试验向量。参数混合通常被称为“交叉”。如果试验向量产生的成本函数值低于目标向量,则试验向量将在下一代中替换目标向量。这最后一个操作被称为选择。上述操作一共进行NP次。
2.1 突变
对于每一个向量:
生成一个突变向量:
r1、r2和r3选择为与i不同;F是[0,2]之间,主要是控制参数向量的突变程度。
还有一种形式:
当种群向量NP的数量足够高时,使用两个差分向量似乎可以提高种群的多样性。
2.2 交叉
为了增加突变向量的多样性,引入了交叉的方法。得到试验向量:
试验向量通过如下方式获得:
randb(j)是[0,1]之间随机生成的;CR是[0,1]之间的交叉常量;,确保
至少从
中获得一个参数。
图形的形象表示:
2.3 选择
如果向量产生的成本函数值小于
,则将
设置为
;否则,将保留旧值
。
整个算法的伪代码流程图:
3、算法的个人复现和简单实验
clear;clc;clearvars;
% 初始化变量维度,种群数,最大迭代次数,搜索区间,F,CR
dim = 5;
popsize = 50;
maxIteration = 1000;
LB = -5.12 * ones(1, dim);
UB = 5.12 * ones(1, dim);
F = 1;
CR = 0.9;
[globalBest, globalBestFitness, FitnessHistory] = DE(popsize, maxIteration,dim, LB, UB, F, CR, @(x)Fun(x));
disp(globalBestFitness);
disp(globalBest);
plot(FitnessHistory);
function y = Fun(x)
%d = length(x);%[-30,30]
%y = -20*exp(-0.02*sqrt((sum(x.^2))/d)) - exp(sum(cos(2*pi*x))./d)+20+exp(1);
y = sum(x.^2);%[-5.12,5.12]
end
function [globalBest, globalBestFitness, FitnessHistory] = DE(popsize, maxIteration,dim, LB, UB, F, CR, Fun)
% 种群的初始化和计算适应度值
Sol(popsize, dim) = 0; % Declare memory.
Fitness(popsize) = 0;
for i = 1:popsizeSol(i,:) = LB+(UB-LB).* rand(1, dim);Fitness(i) = Fun(Sol(i,:));
end% 获得全局最优值以及对应的种群向量
[fbest, bestIndex] = min(Fitness);
globalBest = Sol(bestIndex,:);
globalBestFitness = fbest; % 开始迭代
for time = 1:maxIterationfor i = 1:popsize% 突变%r = randperm(popsize, 3); r = randperm(popsize, 5); %在1~pop中随机选择5个数组成一个数组,使用两个差分变量进行扰动mutantPos = Sol(r(1),:) + F * (Sol(r(2),:) - Sol(r(3),:)) ...+ F * (Sol(r(4),:) - Sol(r(5),:));% 交叉jj = randi(dim); % 选择至少一维发生交叉for d = 1:dimif rand() < CR || d == jjcrossoverPos(d) = mutantPos(d);elsecrossoverPos(d) = Sol(i,d);endend% 检查是否越界.crossoverPos(crossoverPos>UB) = UB(crossoverPos>UB); crossoverPos(crossoverPos<LB) = LB(crossoverPos<LB);evalNewPos = Fun(crossoverPos);% 将突变和交叉后的变量重新评估% 小于原有值就更新if evalNewPos < Fitness(i)Sol(i,:) = crossoverPos;Fitness(i) = evalNewPos;endend[fbest, bestIndex] = min(Fitness);globalBest = Sol(bestIndex,:);globalBestFitness = fbest;% 存储每次迭代的最优值.FitnessHistory(time) = fbest;
end
end
如有错误还请批评改正!
DE–A Simple and Efficient Heuristic for Global Optimization over Continuous Spaces相关推荐
- SegFormer: Simple and Efficient Design for Semantic Segmenta
前言 将 Transformer 与轻量级多层感知 (MLP) 解码器相结合,表现SOTA!性能优于SETR.Auto-Deeplab和OCRNet等网络,代码即将开源! 注1:文末附[视觉Trans ...
- lidar_align 标定lidar和imu 在“Performing Global Optimization”步骤终止的问题
前言 lidar_align的安装调试以及报错处理可见下面篇文章,非常详细,对我帮助很大. ubuntu16.04 lidar_align实现三维激光雷达和Imu联合标定_berry丶的博客-CSDN ...
- Large-Scale Global Optimization Using Cooperative Coevolution with Variable Interaction Learning
0.论文背景 本文在CC框架的基础上,提出了一个新的CC框架CCVIL,放弃了均匀的随机变量分组策略.该框架最初将所有变量视为独立的,并将每个变量放入一个单独的组中.迭代地,它发现它们之间的关系,并相 ...
- 2017matlab优化器,Global Optimization Toolbox
Global Optimization Toolbox是为Maple软件用户打造的全局优化工具箱,支持32位和64位操作系统.软件提供了强大的优化算法,可以在在强大的Maple数值和符号系统中建立优化 ...
- 【Transformer】16、SegFormer:Simple and Efficient Design for Semantic Segmentation with Transformers
文章目录 一.背景和动机 二.方法 2.1 Hierarchical Transformer Encoder 2.2 Lightweight ALL-MLP Decoder 2.3 和 SETR 的区 ...
- 论文阅读:SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers
论文地址:https://arxiv.org/abs/2105.15203 发表年份:2021 我们提出了SegFormer,一个简单,高效但强大的语义分割框架,它将Transformers与轻量级多 ...
- SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers
https://arxiv.org/pdf/2105.15203.pdf 文章提出了SegFormer,encoder由金字塔Transformer组成,不使用位置编码,而是使用一个3x3的逐深度卷积 ...
- Plan with Global Optimization
- Global Optimization via Optimal Decision Trees
摘要 全局优化文献非常重视将棘手的优化问题简化为更易于处理的结构化优化形式. 为了实现这一目标,许多现有方法仅限于对使用可能数学原语子集的显式约束和目标进行优化. 这些在出现更一般的显式和黑盒约束的实 ...
最新文章
- YOLO-FastestV2:更快,更轻!移动端高达300 FPS!参数量仅250k
- Windows Server 2012 RemoteApp体验-关闭程序在RD Web上显示
- 《代码本色》作者Daniel Shiffman:艺术家也编程
- 深度学习中张量flatten处理(flatten,reshape,reduce)
- 我知道乐观锁,但是我的确不知道CAS啊,到底什么是CAS
- 查看和修改Oracle数据库服务器端的字符集
- python静态变量和静态方法_python的静态成员变量、实例成员变量、静态方法、类方法、实例方法...
- expdp导出 schema_记录一则expdp任务异常处理案例
- Cacls命令使用格式
- github库fork后,将更新提交到源库
- 应用商店打开服务器错误,教你应用商店出现错误的修复方法
- 电脑ps计算机磨皮,ps磨皮教程
- 谷歌支付服务端服务账号订单校验
- 苹果电脑python编译器_Mac版-python环境配置(二):编译器pycharm下载安装
- 瑞尔森大学计算机网络专业怎么样,瑞尔森大学计算机网络硕士录取.pdf
- Asta:是什么终结了我的鸽王生涯?Go 1.13 发布!
- 【剑指offer】BN层详解
- Python爬虫自学与实战,爬一下自己的博客文章
- TCP/UDP 区别
- php单独使用laravel数据库 | laravel手动关闭数据库连接
热门文章
- 电脑安装完软件后,以后就不记得安装路径,如何查看文件所在路径
- 计算机组成原理课程设计基本模型机,广东海洋大学计算机组成原理课程设计-基本模型机的设计与实现讲解...
- 本科学计算机去机场,我在UCLA学计算机的本科生活
- “功夫之王”李小龙的16堂励志课
- C++prime plus 第十章课后编程练习
- 企业即时通讯系统能够为企业带来什么好处?
- Python入门 - 笔记 - 第三章 Python中的变量和数据类型
- Java基础语法-关键字、数据类型
- 员工持股一定提高公司绩效吗?其实这并不是个充要条件
- wdr7300千兆版和百兆版区别_tl-wdr7300是百兆还是千兆(图文)