自适应参数的DE算法——JADE,L-SHADE

2023-05-16

目录

    • JADE
    • LSHADE
    • 参考文献

最近复写一个DE[1](差分进化算法)参数的自适应策略的变体L-SHADE[2](CEC冠军算法)的matlab版本,发现其提出的自适应策略对DE改进效果明显,于是把其前身JADE[3]整合到一起做个笔记(公式太多,就直接用文章里的截图了)。
简单记录差分进化算法的进化机制:初始化——变异——交叉——选择,其中关键参数为变异步骤的变异系数F与交叉步骤的交叉概率CR,经典DE算法中变异系数F设定为固定值0.5,而交叉概率CR则随机从[0,1]中产生。

https://github.com/P-N-Suganthan/CODES 大家可以直接从Suganthan的网址下载。

JADE

JADE的改进为如下几个方面:
**1.提出新的变异策略:**DE/current-to-best/1, 公式如下
在这里插入图片描述
其中,Xbest,g为随机选择一个种群中适应度排序前p*Np(Np为种群规模)的个体,p为给定比例(文中设定P为[5%,25%])。Xr1,g为种群中随机选择的个体,Xr2,g为当前种群与外部存档集合中随机选择的个体,外部存档A储存每代进化中变异交叉失败的个体,其规模固定为NP,超出规模则随机删减其中个体。
2.自适应的参数调整策略
JADE针对变异系数F与交叉概率CR的自适应策略如下:
首先初始化两个参数的Mu
在这里插入图片描述
每一代进化中,参数更新方式如下
在这里插入图片描述
其中randn为状态分布,randc则为柯西分布。我认为这里选择柯西分布原因如下:大家知道,对比正态分布,柯西分布的尾部更为平滑,即选取到分布两侧值的概率更大,所以文章提到柯西分布使得变异系数F更为多样,可以避免算法早熟收敛。

每一代进化中,Mu的更新方式如下
在这里插入图片描述
在这里插入图片描述
其中,SF,SCR为成功参数集合,即本代交叉变异有效的个体对应的参数F,CR构成的集合。c为给定的值(文章给定1/c=[5,20])。meanA为标准的算数均值,meanL为 Lehmer mean,其作用是传递更大的F,以提高收敛速率,计算公式如下:
在这里插入图片描述
个人理解其自适应参数策略如下: 将成功进化的个体对应的参数记录下来,并依据这些参数选取对应的均值,依照均值构建概率分布并在其中选择下一代参数。这样逐渐的随着迭代参数会自适应调节,且不会使得参数过于一致从而失去了多样性。

LSHADE

对比上述的JADE,LSHADE采用相同的变异策略DE/current-to-best/1,而其主要改进为参数的自适应调节策略:

1.基于历史记忆的参数策略
初始化历史集 MCR(1:H)=0.5,MF(1:H)=0.5
在这里插入图片描述
其中,H为给定值(文章给定H=100)。

参数的更新

在这里插入图片描述
其中,ri为[1,H]间的随机整数,┴为自定义终止值,即当Mcr满足该终止值后,CR置零,强制每代中仅一个维度进行交叉以提高收敛速率。

历史集的更新

文章给出的伪码如下:在这里插入图片描述
其中SF,SCR仍为成功参数集合。即每一次迭代更新历史集中的一个位置的值,超出位置H则从位置1进行新一轮更新。更新过程中,若成功参数集为空,则该位置学习上一位置的值。否则采用meanWL进行计算,其公式如下:
在这里插入图片描述
其中f()为对应适应度值,该公式即通过适应度变化幅度确定权重在原本的Lehmer mean中考虑了权重的影响。
值得注意的是,从历史更新伪代码中可见,当某一代Scr均小于零以后,MCR的值设为终止值,同时CR强制置零。而由于上一代MCR终止,会使得之后所有的MCR终止。这个策略可能是认为所有Scr均小于零意味着注重于局部开采的个体更有益于当前的搜索,于是不再对CR进行更新从而强制所有的个体开始专注开采。

2.群体规模的自适应
LSHADE定义了群体规模的自适应方法
在这里插入图片描述
其中Ninit为初始种群规模,Nmin为最终种群规模(文章给定为4)MAX_NEF为最大适应度评价次数,NEF为当前适应度评价次数。同时每代中多出的个体将依适应度删去较差的。
这种设计可能是为了在后期将算法专注于开采,由于将不必要的个体删除,使得同样适应度评价次数下保留的个体可以多次进化以挖掘最优解。

参考文献

[1] R. Storn and K. Price, “Differential Evolution - A Simple and Efficient Heuristic for Global Optimization over Continuous Spaces,” J. Global Optimiz., vol. 11, no. 4, pp. 341–359, 1997.
[2] Tanabe R, Fukunaga AS. Improving the search performance of SHADE using linear population size reduction. In: IEEE Congress on Evolutionary Computation (CEC), Beijing, China: IEEE Press, 2014.
[3] J. Zhang and A. C. Sanderson, “JADE: Adaptive Differential Evolution With Optional External Archive,” IEEE Tran. Evol. Comput., vol. 13, no. 5, pp. 945–958, 2009.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自适应参数的DE算法——JADE,L-SHADE 的相关文章

  • HTTP协议状态码的含义

    1 xff1a 请求收到 xff0c 继续处理 2 xff1a 操作成功收到 xff0c 分析 接受 3 xff1a 完成此请求必须进一步处理 4 xff1a 请求包含一个错误语法或不能完成 5 xff1a 服务器执行一个完全有效请求失败
  • oracle客户端访问服务器端

    oracle客户端访问服务器端 xff0c 在本地是很容易的 xff0c 但是要实现远程访问却有一点小麻烦 xff0c 主要是如何连接远程服务器的问题 xff0c 关于这个问题请参照上一篇转载的文章 xff0c 本文主要讲解 xff0c 如
  • classpath , path , java_home的作用

    CLASSPATH是什么 xff1f 它的作用是什么 xff1f 它是javac编译器的一个环境变量 它的作用与import package关键字有关 当你写下improt java util 时 xff0c 编译器面对import关键字时
  • HQL

    hql HQL查询 xff1a Criteria查询对查询条件进行了面向对象封装 xff0c 符合编程人员的思维方式 xff0c 不过HQL Hibernate Query Language 查询提供了更加丰富的和灵活的查询特性 xff0c
  • HDFS操作常用的Shell命令;

    向HDFS中上传任意本地文件 hadoop fs copyFromLocal URI f 如果文件存在 xff0c 则覆盖 从本地文件系统考贝到集群上 向一个已经存在的HDFS中的文本文件中 xff0c 追加本地文件的内容到HDFS原有文件
  • JS如何使用多个相同ID

    39 id 61 39 43 xff49 xff44 43 39 39 show 即可
  • 【开源硬件篇】STM32F103C8T6核心板

    STM32F103C8T6核心板 文章目录 STM32F103C8T6核心板一 STM32F103C8T6芯片1 1 STM32F103C8T6简介1 2 芯片引脚说明 二 去耦电路2 1 原理图设计2 2 原理分析2 2 1 结论2 2
  • python-markdown语法

    python的markdown扩展 xff0c 功能较为丰富 xff0c 里面甚至集成了一些 rST style 的命令 极大的扩展了文章的表现力 也有第三方扩展 64 Officially Supported Extensions Ext
  • 请求方式为post时SpringMVC无法直接跳转页面

    2020年3月24日补充 这种问题不存在于thymeleaf模板 使用thymeleaf模板后再后台直接跳转也是可以的 html页面 错误示范 报错 正确示范 起因 今天在学如何搭建简单的SpringSecurity时准备先搭建一个简单的s
  • Ubuntu 20使用devstack快速安装openstack最新版

    OpenStack介绍 openstack详细介绍及常用命令请查看此文 通过devstack部署OpenStack xff0c 官方文档点击此处查看 安装环境 工具 xff1a VMware Workstation 16 Pro 操作系统
  • windows 10 内置ubuntu 开启以及应用

    刚到新公司最不习惯的就是公司用的windows xff0c 用了两年的linux 突然之间用windows 是件很痛苦的事情 xff0c 不过win 10 很好的解决了我的问题 xff0c 最新版的 Windows 10 Insider P
  • python中exp函数如何实现指数计算?

    之前小编向大家介绍过python中的对数函数log函数 xff08 https www py cn jishu jichu 21780 html xff09 xff0c 对于有点复杂的计算 xff0c 我们是可以通过计算机来帮我们解决的 例
  • 1、stf二次开发-环境配置-node8安装

    1 stf二次开发 环境配置 node8安装 Contes7 X64 linux系统 stf二次开发 环境配置 node8安装 1 新建一个node文件夹用于安装node span class token function mkdir sp
  • 0、stf二次开发-解决CentOS网络问题

    0 stf二次开发 解决CentOS网络问题 stf二次开发 解决CentOS网络问题 转载 xff1a https www cnblogs com zhouheblog p 10442274 html
  • 32、取一个整数a从右端开始的4~7位

    32 取一个正整数a从右端开始的4 xff5e 7位 程序分析代码实现 程序分析 可以考虑两种实现方法 方法1 将合理的整数转换为字符串 span class token comment 方法1 转换为字符串处理 span span cla
  • 0、stf二次开发-CentOS-环境变量如何配置

    stf二次开发 CentOS 环境变量如何配置 需要root用户下执行以下代码 打开环境配置文件 gedit etc profil 在文本最下边添加需要配置的环境 span class token builtin class name ex
  • 1、stf二次开发-环境配置-adb安装

    1 stf二次开发 环境配置 adb安装 1 进入到想要安装adb的目录 span class token builtin class name cd span 想要安装的的目录 新建一个android目录并进入 span class to

随机推荐

  • 1、stf二次开发-环境配置-rethinkdb安装

    1 stf二次开发 环境配置 rethinkdb安装 此篇针对CentOS7的安装 xff0c 其他系统请参考rethinkdb官网 参考官网 span class token function sudo span span class t
  • 0、stf二次开发-CentOS-基础配置

    0 stf二次开发 CentOS 基础配置 使用centOS时需要用到命令 configure make make install 使用以上命令需要安装make vim gcc 即C 43 43 yum y span class token
  • 1、stf二次开发-环境配置-GraphicsMagick安装

    1 stf二次开发 环境配置 GraphicsMagick安装 1 下载GraphicsMagick tar gz压缩包 xff0c 放到自己要安装的目录 2 解压压缩包 GraphicsMagick 1 3 26 tar gz根据自己的压
  • github加速接口

    https github com
  • 交叉编译libX11

    0 前言 本文探索如何将libX11移植到ARM开发板 1 源码 从参考资料 1 或这里下载相关源码 xff0c 本文下载源码为 xff1a libX11 1 5 0 tar bz2 新建一个src目录 xff0c 并且将源码解压到其中 x
  • 2021-03-14

    题目描述 This past fall Farmer John took the cows to visit a corn maze But this wasn t just any corn maze it featured severa
  • java工具类 文件zip压缩 base64 加密,base64解密 zip解压

    代码 xff1a package com cfam utils import java io BufferedOutputStream import java io ByteArrayInputStream import java io B
  • Deno编译踩坑记(Mac环境)

    前言 最近入坑Deno xff0c 第一步肯定是从编译开始 xff0c 然后踩坑了 xff0c 记录一下 xff5e 常规编译 xff1a 1 安装rust curl proto 39 61 https 39 tlsv1 2 sSf htt
  • Debian下磁盘挂载及开机启动设置教程

    检查磁盘空间即剩余情况 本文是在实际使用过程中真实操作 xff0c 用于交流和学习 xff1b 1 使用fdisk l 命令查看当前磁盘的大小 xff0c 其中 dev sda磁盘发现并未使用 xff1b 使用时 xff0c 需要切换到ro
  • HC-06蓝牙模块

    主机 xff1a 用于向从机下发指令 xff0c 能够搜索从机并主动建立连接的一方 从机 xff1a 用于接收主机下发的命令 xff0c 不能主动建立连接 xff0c 只能等别人连接自己 xff08 HC 06只能工作在从机模式下 xff0
  • JAVA回文数的判断

    回文数 xff1a 如121 xff0c 1221这样正着和倒着读都一样的数叫做回文数 xff0c 代码的主要思路是先将用户输入的数字倒过来后再与原来的数进行判断 难点 xff1a 将用户输入的数字倒过来 上代码 xff1a package
  • IOS+openfire 即时通讯

    最近看到很多人在琢磨ios即时通讯这块 xff0c 于是出去好奇 xff0c 决定动手试试 xff0c 今天就先从xmpp这个框架来尝试 其实xmpp也就一个协议而已 xff0c 更多人还是喜欢把它叫做Jabber 首先还是提供一下下载地址
  • webpack进行js打包,引入js

    node中html引入jquery可以用webpack进行打包 webpack 3可以打包 xff0c webpack 4 打包需要安装webpack cli xff0c 否则会报错 直接引入js会报错 语法错误 xff0c 浏览器不支持E
  • iOS中UICollectionView(集合视图)的使用

    1 简单介绍与说明 简介 UICollectionView提供了一种自定义布局展示试图内容的方式 说明 涉及到的必须的基本类型与基本代理类型有UICollectionView UICollectionViewCell UICollectio
  • iOS表视图之增删单元格

    要进行单元格的修改 xff0c 首先我们要删除原来的视图并从对象库中拖曳一个Navigation Controller视图 xff08 导航控制器 xff09 到设计页面 xff0c 添加Navigation Controller视图的同时
  • 史上最全IOS的touch事件手势使用方法

    以下内容源于本人整理 部分来源于网络 如有侵权行为或错误之处还望指正 请联系邮箱huiyutianshi 64 qq com 关于touch事件的 手势和事件都是基于UIRrsponder的 UIResponder包含所有的响应事件 触摸
  • vtk 显示效果设置

    在vtk中 xff0c 显示样式的显示 xff0c 是通过vtkProperty来控制的 xff0c 这里介绍三种基本的属性设置方式 xff0c 点方式 xff0c 网格方式和面方式 xff0c 这里以 头像三角网格的显示为例介绍其显示 其
  • Qt 线程(一) Qt 多线程实现的两种方式 线程实现详解

    简述两种实现方式 Qt提供了一个管理线程的类 xff1a QThread 子类化QThread并重新实现run 使用worker object通过QObject moveToThread将它们移动到线程中 简介QThread类 一 公共槽函
  • 1000以内的完数

    题目 xff1a 一个数如果恰好等于它的因子之和 xff0c 这个数就称为 完数 例如 xff0c 6的因子为1 2 3 xff0c 而6 61 1 43 2 43 3 xff0c 因此6是 完数 编程找出1000之内的所有完数 xff0c
  • 自适应参数的DE算法——JADE,L-SHADE

    目录 JADELSHADE参考文献 最近复写一个DE 1 xff08 差分进化算法 xff09 参数的自适应策略的变体L SHADE 2 xff08 CEC冠军算法 xff09 的matlab版本 xff0c 发现其提出的自适应策略对DE改