融合自适应惯性权重和柯西变异的秃鹰搜索算法(CBES) - 附代码

news2024/11/25 3:36:35

融合自适应惯性权重和柯西变异的秃鹰搜索算法(CBES)

文章目录

  • 融合自适应惯性权重和柯西变异的秃鹰搜索算法(CBES)
    • 1.秃鹰优化算法
    • 2.改进秃鹰优化算法
      • 2.1 Tent 映射
      • 2.2 自适应惯性权重
      • 2.3 柯西变异
    • 3.实验结果
    • 4.参考文献
    • 5.Matlab代码
    • 6.python代码

摘要:针对基本秃鹰搜索算法存在收敛速度慢、易陷入局部最优的缺点,提出了一种融合自适应惯性权重和柯西变异的秃鹰搜索算法(CBES).首先使用Tent混沌映射初始化种群,保留了种群的多样性;其次,引入自适应惯性权重,加快算法的收敛速度,增强算法的局部开发能力;最后将柯西变异算子整合到当前全局最优位置进行变异更新,提高算法陷入局部最优的能力.

1.秃鹰优化算法

基础秃鹰优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/113775430

2.改进秃鹰优化算法

2.1 Tent 映射

文章使用 Tent 映射来初始化种群, Tent 映射的表达式 如下所示:
x i + 1 = { 2 x i , 0 ≤ x ≤ 1 2 2 ( 1 − x i ) , 1 2 ≤ x ≤ 1 (17) x_{i+1}=\left\{\begin{array}{rc} 2 x_i, & 0 \leq x \leq \frac{1}{2} \\ 2\left(1-x_i\right), & \frac{1}{2} \leq x \leq 1 \end{array}\right.\tag{17} xi+1={2xi,2(1xi),0x2121x1(17)
即经过贝努利移位变换后表达式如下:
x i + 1 = ( 2 x i )   m o d   1 (18) x_{i+1}=\left(2 x_i\right) \bmod 1 \tag{18} xi+1=(2xi)mod1(18)
Tent 混沌映射初始化种群产生序列的具体步骤如下:
Step1: 在区间 ( 0 , 1 ) (0,1) (0,1) 内随机产生初始值 x 0 x_0 x0, 记作 i = i= i= 0 ;

Step2: 根据式 (17) 进行迭代运算产生一个新的 x x x 序 列, 且 i = i + 1 i=i+1 i=i+1;

Step3: 当 i i i 达到最大迭代次数时, 则停止迭代, 且将 迭代产生的 x x x 序列保存下来。

2.2 自适应惯性权重

本文提出了新的自适应权重 的方法, 自适应惯性权重公式如下:
w = sin ⁡ ( π + t 2 t max ⁡ × π ) + ( w max ⁡ + w min ⁡ ) 2 (19) w=\sin \left(\pi+\frac{t}{2 t_{\max }} \times \pi\right)+\frac{\left(w_{\max }+w_{\min }\right)}{2} \tag{19} w=sin(π+2tmaxt×π)+2(wmax+wmin)(19)
其中, t t t 表示当前迭代数; t max  t_{\text {max }} tmax  是设置的种群最大 迭代次数; w max  w_{\text {max }} wmax  是初始惯性权重, 在文中取值为 0.92 ; ; w min  w_{\text {min }} wmin  是秃鹰种群最大迭代次数时的惯性权重, 在文中取 值为 0.4 。将惯性权重因子引入秃鹰搜索优化算法中, 在探 索阶段, 秃鹰的位置更新的表达式如下:
P i ,  new  = w × P i + x ( i ) × ( w × P i − P mean  ) + y ( i ) × ( w × P i − P i + 1 ) (20) \begin{aligned} & \boldsymbol{P}_{i, \text { new }}=\boldsymbol{w} \times \boldsymbol{P}_{\boldsymbol{i}}+\boldsymbol{x}(\boldsymbol{i}) \times\left(\boldsymbol{w} \times \boldsymbol{P}_{\boldsymbol{i}}-\boldsymbol{P}_{\text {mean }}\right)+\boldsymbol{y}(\boldsymbol{i}) \times(\boldsymbol{w} \times \\ & \left.\boldsymbol{P}_{\boldsymbol{i}}-\boldsymbol{P}_{i+1}\right) \end{aligned} \tag{20} Pi, new =w×Pi+x(i)×(w×PiPmean )+y(i)×(w×PiPi+1)(20)

2.3 柯西变异

针对秃鹰算法易陷入局部极值的缺点, 本文在原有的算 法中融入柯西变异算子, 改善算法的全局搜索能力, 扩大搜 索空间。柯西分布是一种在概率论中常见的连续型概率分布, 柯西分布在原点处的概率密度较大, 两端处的密度较小; 两 端的形状又长又扁。正因此特点可以通过融入柯西变异对秃 鹰个体产生较大的扰动, 使得算法更容易跳出局部最优值 [ 2 ] ] { }^{[2]]} [2]] 。 标准的柯西分布概率密度函数公式如下:
f ( x ) = 1 π × 1 ( x 2 + 1 ) , − ∞ < x < + ∞ (21) f(x)=\frac{1}{\pi} \times \frac{1}{\left(x^2+1\right)},-\infty<x<+\infty \tag{21} f(x)=π1×(x2+1)1,<x<+(21)
柯西分布从峰值下降至两侧时相对平缓, 且峰值相对较 小, 在变异后秃鹰种群会在搜索相邻空间时使用较少的时间, 将主要精力花费在寻找全局最优值上。使用式 (22) 对搜索空 间猎物阶段获得的全局最优值进行变异处理:
P new  ,  best  = P best  + P best  × Cauchy ⁡ ( 0 , 1 ) (22) P_{\text {new }, \text { best }}=P_{\text {best }}+P_{\text {best }} \times \operatorname{Cauchy}(\mathbf{0}, \mathbf{1})\tag{22} Pnew , best =Pbest +Pbest ×Cauchy(0,1)(22)
CBES 算法具 体实现流程如下所示:

Step1:设置并初始化算法参数, 其中包含种群的规模 N \mathrm{N} N, 最大迭代次数 t max  t_{\text {max }} tmax , 目标函数的维度以及初始值的边界 条件。

Step2: 使用 2.1 节中的 Tent 混沌映射对种群进行初始 化, 按照适应度函数求出每只秃鹰的适应度值, 对所有秃鹰 的适应度值排序, 找出当前种群的全局最优位置。

Step3:在秃鹰选择搜索阶段, 按照公式 (1) 进行位置 跟新。

Step4: 在秃鹰搜索空间猎物阶段, 按照公式 (20) 进 行位置更新。

Step5: 在俯冲阶段, 按照公式 (22) 对上一个步骤得 到的全局最优解进行柯西变异处理, 再将得到的结果按照公 式(16)进行秃鹰的位置更新。

Step6: 更新秃鹰种群的最优个体位置与适应度值, 更 新算法的迭代次数。判断算法是否满足设置的最大迭代次数 或者精度要求, 若满足, 则终止算法, 输出适应度最优值及 最优解; 若没有, 则返回 Step3 进行循环。

3.实验结果

在这里插入图片描述

4.参考文献

[1]丁容,高建瓴,张倩.融合自适应惯性权重和柯西变异的秃鹰搜索算法[J].小型微型计算机系统,2023,44(05):910-915.DOI:10.20009/j.cnki.21-1106/TP.2021-0748.

5.Matlab代码

6.python代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/760701.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

复习HashMap-2

在Java集合中&#xff0c;Map是一种特殊的集合&#xff0c;原因在于这种集合容器并不是保存单个元素&#xff0c;而是保存一个一个的Key-Vaue键值对.HashMap是基于哈希表的Map接口的实现,在项目开发中使用广泛,下面就对HashMap的源码进行解析. Hashmap的特点 1.HashMap是基于…

【Tauri + React 实战】VCluster - 配置应用图标与启动闪屏

本节我们将为 Tauri 应用自定义应用图标的启动闪屏 起步 通过 npm create tauri-applatest 我们成功创建了一个空白的 Tauri 项目&#xff0c;npm install安装好依赖后&#xff0c;通过 npm run tauri dev 即可开启热加载&#xff1a; 配置图标 官方示例很酷&#xff0c;但…

数仓报表数据导出——Hive数据导出至Clickhouse

1. Clickhouse建表 创建database create database ad_report; use ad_report;创建table drop table if exists dwd_ad_event_inc; create table if not exists dwd_ad_event_inc (event_time Int64 comment 事件时间,event_type String comment 事件…

运营实操,如何寻找自己产品的精准关键词

在进行Listing优化时&#xff0c;许多卖家感到困惑&#xff0c;不知从何入手。尽管他们听过许多关于优化的文章&#xff0c;但实际操作时仍不清楚何为好的标准。 亚马逊产品列表的另一个重要元素是图片。图像体验很大程度上决定了客户是否会继续浏览&#xff0c;仅仅依靠文字故…

Linux--查看man手册中某个函数的库函数

第一步&#xff1a;man 函数名 第二步&#xff1a;查看是否存在 第三步&#xff1a;如果不存在&#xff0c;则输入man 2 exit依次类推3、4.....

STM32开发笔记:中断

一、中断系统 中断&#xff1a;在主程序运行过程中&#xff0c;出现了特定的中断触发条件&#xff08;中断源&#xff09;&#xff0c;使得CPU暂停当前正在运行的程序&#xff0c;转而去处理中断程序&#xff0c;处理完成后又返回原来被暂停的位置继续运行。 中断优先级&#x…

c++11 标准模板(STL)(std::basic_istream)(九)

定义于头文件 <istream> template< class CharT, class Traits std::char_traits<CharT> > class basic_istream : virtual public std::basic_ios<CharT, Traits> 类模板 basic_istream 提供字符流上的高层输入支持。受支持操作包含带格式的…

静态数码管显示

学习芯片&#xff1a; EP4CE6F17C8 本次学习使用的为共阴极数码管&#xff0c;即用低电平点亮数码管&#xff0c;同样可知&#xff0c;共阳极数码管的阳极连在一起&#xff0c;即用高电平点亮数码管。 八段数码管示意图&#xff1a; a,b,c,d,e,f,g,dg表示八段数码管时&#…

分类预测 | MATLAB实现基于Attention-LSTM的数据分类预测多特征分类预测(长短期记忆网络融合注意力机制分类预测,含混淆矩阵图、分类图)

分类预测 | MATLAB实现基于Attention-LSTM的数据分类预测多特征分类预测(长短期记忆网络融合注意力机制分类预测&#xff0c;含混淆矩阵图、分类图) 目录 分类预测 | MATLAB实现基于Attention-LSTM的数据分类预测多特征分类预测(长短期记忆网络融合注意力机制分类预测&#xff…

mybatis例子,以及静态资源过滤问题解决

第一步&#xff1a;编写一个工具类 package com.heerlin.utils;import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder;imp…

Spring Boot 源码学习之@SpringBootApplication注解

SpringBootApplication 注解 引言主要内容1. 创建 Spring Boot 项目2. Spring Boot 入口类3. SpringBootApplication 介绍 总结 引言 在 Huazie 前面的博文 《Spring Boot 核心运行原理介绍》中&#xff0c;我们初步了解了 Spring Boot 核心运行原理&#xff0c;知道了 Enable…

#挑战Open AI!马斯克宣布成立xAI,你怎么看?# 马斯克的xAI:充满困难与希望

文章目录 1.什么是xAI公司&#xff1f;2.xAI公司的图标3.“反AI斗士”马斯克进军AI&#xff1a;期待与挑战并存3.1 关于马斯克……3.2 这位“反AI斗士”……3.3 我的看法3.4 可能会遇到的困难与优势3.5 蓄谋已久的马斯克……3.6 xAI“全明星阵容”3.7 总结 4.百模大战&#xff…

git第一次拉取远程分支项目(ssh的方式)

一.生成SSH keys,并将生成的key复制到远程库 1.本地用命令生成密钥对。 ssh-keygen -t rsa -C "yourEmailAddress" 或 ssh-keygen -t ed25519 -C "yourEmailAddress" 按三次enter直接生成密钥对。 2.切换至ssh目录下&#xff0c;复制key&#xff08;公…

软件测试值不值得学,2023软件测试行情分析

目录 1、人们的生活离不开软件&#xff0c;有软件的地方就有测试 2、测试工程师特别是自动化测试工程师的需求会越来越大 3、软件测试经验越丰富越受欢迎&#xff0c;不存在35岁限制。 4、所有新兴行业比如chat-gtp&#xff0c;车载系统等都需要测试工程师 薪资 就业 软…

设计模式——桥梁模式

桥梁模式 定义 桥梁模式&#xff08;Bridge Pattern&#xff09;也叫做桥接模式。 将抽象和显示解耦&#xff0c;使得两者可以独立地变化。 优缺点、应用场景 优点 抽象和实现的解耦。 这是桥梁模式的主要特点&#xff0c;它完全是为了解决继承的缺点而提出的设计模式。优…

从C到C++ | C++入门(二)

目录 缺省参数 1.)全缺省 2.)半缺省 函数重载 1.) 参数类型不同 2.) 参数个数不同 3.) 参数顺序不同 函数重载的原理&#xff1a; &#xff01;&#xff01;&#xff01;注意 &#xff01;&#xff01;&#xff01; 引用 1.) 引用做参数 2.) 引用做返回值 引用和…

C#使用DataGridView模拟绘图

接到一个需求&#xff0c;绘制一个水管线的图片&#xff0c;这种管线可以有12种分段方法&#xff0c;最后将这12种分段方法合并后在一条水管线上展示&#xff0c;要求&#xff1a; ⒈支持分段的属性展示&#xff1b; ⒉要求每个分段都能清晰展示&#xff0c;分段数在0&#xff…

一天吃透JVM面试八股文

内容摘自我的学习网站&#xff1a;topjavaer.cn 什么是JVM&#xff1f; JVM&#xff0c;全称Java Virtual Machine&#xff08;Java虚拟机&#xff09;&#xff0c;是通过在实际的计算机上仿真模拟各种计算机功能来实现的。由一套字节码指令集、一组寄存器、一个栈、一个垃圾回…

C++11(1)——新增用法零碎总结

目录 1. C11简介 2. 统一的列表初始化 2.1 &#xff5b;&#xff5d;初始化 2.2 std::initializer_list std::initializer_list是什么类型&#xff1a; std::initializer_list使用场景&#xff1a; 让模拟实现的vector也支持{}初始化和赋值 1. C11简介 在2003年C标准委员会…

【雕爷学编程】Arduino动手做(163)---大尺寸8x8LED方格屏模块2

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…