融合黄金正弦算法和纵横交叉策略的秃鹰搜索算法(GSCBES)-附代码

news2024/12/23 22:27:35

融合黄金正弦算法和纵横交叉策略的秃鹰搜索算法(GSCBES)

文章目录

  • 融合黄金正弦算法和纵横交叉策略的秃鹰搜索算法(GSCBES)
    • 1.秃鹰优化算法
    • 2.改进秃鹰优化算法
      • 2.1 基于纵横交叉策略
      • 2.2 基于惯性权重的位置更新
      • 2.3 黄金正弦捕食机制
    • 3.实验结果
    • 4.参考文献
    • 5.Matlab代码
    • 6.python代码

摘要:针对传统秃鹰搜索算法(BES)存在容易陷入局部最优、收敛速度慢等缺点,提出一种融合黄金正弦算法(Gold-SA)和纵横交叉策略的秃鹰搜索算法(GSCBES)。首先,在传统BES的搜索阶段设置基于惯性权重的位置更新公式;然后,在捕食猎物阶段引入Gold-SA;最后,引入纵横交叉策略对全局最优和种群进行修正。

1.秃鹰优化算法

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

2.改进秃鹰优化算法

2.1 基于纵横交叉策略

在秃鹰优化算法中, 尤其是在空间选择这一阶段, 是利用随机搜 索的先验信息乘以 α \alpha α 来更新位置的,然后在前一个搜索区域附近选 择另一个不同搜索区域, 这种选择方式就有可能会出现若前一个搜 索区域已经为局部最优, 而下一次的搜索就会陷人局部最优, 就会导 致算法收玫精度降低。为了防止秃鹰个体陷人“早熟”的现象, 本文 在个体俯冲捕食阶段之后引人了纵横交叉策略 [ 7 ] { }^{[7]} [7], 该算法在不显著 影响收玫速度的情况下提高全局搜索能力, 利用水平交叉和垂直交 叉这两个搜索因子, 使其在解决复杂优化问题中, 能够提高收玫速度 和求解精度。

水平交叉
水平交叉指的是对两个不同秃鹰之间在所有维度上操作的算术 交叉, 使得不同个体之间能够相互学习, 增大全局搜索能力, 防止种 群过早收玫, 从而提高收玫速度和搜索精度。在执行水平交叉策略 之前, 将秃鹰个体两两不重复的设置为父代个体 X ( i ) X(i) X(i) X ( j ) X(j) X(j), 并以交 叉概率 P 1 P_1 P1 进行算术交叉, 为了尽可能多地找到解决方案, 通常交叉概 率设置为 1 。父代交叉后通过式(16) (17) 产生子代个体:
M i , d h c = q 1 ⋅ X ( i , d ) + ( 1 − q i ) ⋅ X ( j , d ) + c 1 ⋅ ( X ( i , d ) − X ( j , d ) ) (16) \begin{aligned} & M_{i, d}^{h c}=\mathrm{q}_1 \cdot X(i, d)+\left(1-\mathrm{q}_i\right) \cdot X(j, d) +\mathrm{c}_1 \cdot(X(i, d)-X(j, d)) \end{aligned}\tag{16} Mi,dhc=q1X(i,d)+(1qi)X(j,d)+c1(X(i,d)X(j,d))(16)

M j , d h c = q 2 ⋅ X ( j , d ) + ( 1 − q 2 ) ⋅ X ( i , d ) + c 2 ⋅ ( X ( j , d ) − X ( i , d ) ) (17) \begin{aligned} & M_{j, d}^{h c}=\mathrm{q}_2 \cdot X(j, d)+\left(1-\mathrm{q}_2\right) \cdot X(i, d) +\mathrm{c}_2 \cdot(X(j, d)-X(i, d)) \end{aligned}\tag{17} Mj,dhc=q2X(j,d)+(1q2)X(i,d)+c2(X(j,d)X(i,d))(17)
式中: q 1 、 q 2 \mathrm{q}_1 、 \mathrm{q}_2 q1q2 均为 [ 0 , 1 ] [0,1] [0,1] 之间的随机数; c 1 \mathrm{c}_1 c1 c 2 \mathrm{c}_2 c2 均为 [ − 1 , 1 ] [-1,1] [1,1] 之间的随机 数; X ( i , d ) 、 X ( j , d ) X(i, d) 、 X(j, d) X(i,d)X(j,d) 分别表示为第 d \mathrm{d} d 维的父代 X ( i ) X(i) X(i) X ( j ) ; M i , d h c 、 M j , d h c X(j) ; M_{i, d}^{h c} 、 M_{j, d}^{h c} X(j);Mi,dhcMj,dhc 分 别表示为父代 X ( i ) 、 X ( j ) X(i) 、 X(j) X(i)X(j) 在第 d \mathrm{d} d 维交叉后产生的子代。生成的子代与 父代之间进行竞争, 最终保留最优个体。

垂直交叉

标准的 BES 在迭代后期易陷人局部最优, 往往是因为种群在更 新过程中某些个体在某一维度陷人局部最优所造成的。垂直交叉是 在两个不同维度之间对所有个体进行运算的算术交叉,在整个迭代 过程中, 垂直交叉搜索的父种群是来自水平交叉的优势解的种群, 这 就能够防止种群陷人局部最优, 同时每个垂直交叉操作只产生一个 子代, 以便为停滞维度提供跳出局部最优的机会, 而不破坏另一个可 能是全局最优的维度。对个体 i \mathrm{i} i 的第 d 1 \mathrm{d}_1 d1 维和第 d 2 \mathrm{d}_2 d2 维进行垂直交叉, 通 过式 (18)得到后代个体:
M d 1 v c = q ⋅ X ( i ,   d 1 ) + ( 1 − q ) ⋅ X ( i ,   d 2 ) (18) M_{d_1}^{v c}=\mathrm{q} \cdot X\left(i, \mathrm{~d}_1\right)+(1-\mathrm{q}) \cdot X\left(i, \mathrm{~d}_2\right)\tag{18} Md1vc=qX(i, d1)+(1q)X(i, d2)(18)
式中: q q q [ 0 , 1 ] [0,1] [0,1] 区间上的随机数: M d 1 v c M_{d_1}^{v c} Md1vc 为父代 X ( i ) X(i) X(i) 在第 d 1 \mathrm{d}_1 d1 维和第 d 2 \mathrm{d}_2 d2 维 进行垂直交叉产生的子代。垂直交叉产生的子代个体与父代进行竞 争,保留适应度较优的个体。

2.2 基于惯性权重的位置更新

本文提出一种基于惯性权重的秃鹰位置更新公式,用 于更新搜索阶段的位置公式,赋予秃鹰能够调整全局和局部搜索的 能力, 对标准 BES算法的性能有了很大的提高。
ω ( t ) = ω init  − ( ω init  − ω f i n ) ∗ e t t max ⁡ (20) \omega(\mathrm{t})=\omega_{\text {init }}-\left(\omega_{\text {init }}-\omega_{f i n}\right) * \mathrm{e}^{\frac{t}{t_{\max }}}\tag{20} ω(t)=ωinit (ωinit ωfin)etmaxt(20)

P i ,  new  = b 1 ⋅ ω ( t ) ⋅ ( P i + y ( i ) ∗ ( P i − P i + 1 ) ) + b 2 ⋅ w ( t ) ⋅ x ( i ) ∗ ( P i − P mean  ) (21) \begin{aligned} & P_{i, \text { new }}=b_1 \cdot \omega(\mathrm{t}) \cdot\left(P_i+y(\mathrm{i}) *\left(P_i-P_{i+1}\right)\right)+\mathrm{b}_2 \cdot w(\mathrm{t}) \cdot x(\mathrm{i}) *\left(P_i-\mathrm{P}_{\text {mean }}\right) \end{aligned}\tag{21} Pi, new =b1ω(t)(Pi+y(i)(PiPi+1))+b2w(t)x(i)(PiPmean )(21)
式中, b 1 ∈ [ 0 , 1 ] b_1 \in[0,1] b1[0,1] 为群体交流系数; b 2 ∈ [ 0 , 1 ] b_2 \in[0,1] b2[0,1] 为个体记忆系数; t max  t_{\text {max }} tmax  为 最大迭代次数; ω i n i \omega_{\mathrm{ini}} ωini 为惯性权重初始值; ω end  \omega_{\text {end }} ωend  为惯性权重最终值。通常 ω ini  \omega_{\text {ini }} ωini  0.9 , ω end  0.9, \omega_{\text {end }} 0.9,ωend  取 0.4 。

2.3 黄金正弦捕食机制

本文将 黄金正弦算法作为局部算子引人到俯冲捕食阶段的位置更新公式 中, 使算法的寻优空间能够全面, 加快算法的寻优速度以及求解精 度。同时利用 Golden-SA算法中的 r 1 、 r 2 \mathrm{r}_1 、 \mathrm{r}_2 r1r2 参数能够缩小搜索空间, 指引 秃鹰个体快速向种群最优个体靠近, 降低算法陷人局部最优的可能, 具体的位置更新公式如下:
P i ,  new  = ∣ sin ⁡ ( r 1 ) ∣ ∗ ( rand ⁡ ∗ P best  + x ( i ) ∗ ( P i − c 1 ∗ P mean  ) ) + r 2 ∗ sin ⁡ ( r 1 ) ∗ y ( i ) ∗ ∣ ( x 1 ∗ P i − x 2 ∗ c 2 ∗ P best  ) ∣ (22) \begin{aligned} & P_{i, \text { new }}=\left|\sin \left(\mathrm{r}_1\right)\right| *\left(\operatorname{rand} * P_{\text {best }}+x(\mathrm{i}) *\left(P_i-\mathrm{c}_1 * \mathrm{P}_{\text {mean }}\right)\right) \\ & +\mathrm{r}_2 * \sin \left(\mathrm{r}_1\right) * \mathrm{y}(\mathrm{i}) *\left|\left(x_1 * P_i-x_2 * c_2 * P_{\text {best }}\right)\right| \end{aligned}\tag{22} Pi, new =sin(r1)(randPbest +x(i)(Pic1Pmean ))+r2sin(r1)y(i)(x1Pix2c2Pbest )(22)
式中: r 1 \mathrm{r}_1 r1 [ 0 , 2 π ] [0,2 \pi] [0,2π] 区间内的随机数; r 2 \mathrm{r}_2 r2 [ 0 , π ] [0, \pi] [0,π] 区间内的随机数; x 1 = x_1= x1= − π + ( 1 − τ ) ∗ 2 π , x 2 = − π + τ ∗ 2 π -\pi+(1-\tau) * 2 \pi, x_2=-\pi+\tau * 2 \pi π+(1τ)2π,x2=π+τ2π 是根据黄 金分割系数 τ ( τ = \tau(\tau= τ(τ= ( 5 − 1 ) / 2 ) (\sqrt{5}-1) / 2) (5 1)/2) 而得到的系数。这些系数缩小了搜索空间, 允许当前值 接近理想值。

GSCBES的步骤如下所示:

Step1: 设置 GSCBES 的相关参数, 种群规模 N \mathrm{N} N, 最大迭代次数 t max  t_{\text {max }} tmax , 搜索维度 dim ⁡ \operatorname{dim} dim, 搜索范围 u b 、 l b u b 、 l b ublb

Step2: 计算种群中每个秃鹰个体的适应度值, 并根据目标函数值 的大小进行排序, 标记出全局最优值 P b e s t P_{b e s t} Pbest

Step3: 根据全局最优值 P best  \mathrm{P}_{\text {best }} Pbest  的位置进行搜索空间的选择, 同时利 用式(1)进行位置更新。

Step 4 : 选取完搜索空间之后使用螺旋移动搜索, 秃鹰个体在搜索 空间搜索猎物,利用式(21)进行位置更新。
Step5: 秃鹰俯冲捕食, 利用式 (22)进行位置更新。
Step6:引人纵横交叉策略, 防止算法陷人局部最优。
Step7: 判断是否达到结束条件, 如果达到则输出最优结果, 否则 重复步骤Step2 Step6。

3.实验结果

在这里插入图片描述

4.参考文献

[1]赵沛雯,张达敏,张琳娜,邹诚诚.融合黄金正弦算法和纵横交叉策略的秃鹰搜索算法[J].计算机应用,2023,43(01):192-201.

5.Matlab代码

6.python代码

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

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

相关文章

FreeRTOS-列表和列表项

列表和列表项: 列表是FreeRTOS中的一个数据结构,用来跟踪FreeRTOS中的任务。 列表项就是存放在列表中的项目,属于列表的子集。 列表就相当于一个链表,列表项就相当于节点,在FreeRTOS中的列表是一个双向的环形链表。 …

基于FPGA的视频接口之PAL(NTSC)编码

简介 PAL又称帕尔制,是咱们中国早期视频所是使用的视频广播模式,基本上现在的电视都兼容这种视频模式,使用的接口也是传统的BNC插头,有兴趣的伙伴可以看看电视屁股后面是不是有一个单独的BNC接口,百分之98就是支持PAL格…

FastReport.Net FastReport.Core 2023.2.23 Crack

FastReport.Net & FastReport.Core 2023.2.23适用于 .NET 7、.NET Core、Blazor、ASP.NET、MVC 和 Windows 窗体的全功能报告库。它可用于 Microsoft Visual Studio 2022 和 JetBrains Rider。 利用数据呈现领域专家针对 .NET 7、.NET Core、Blazor、ASP.NET、MVC、Windo…

【Windows】cmd和powershell命令合集

文章目录 1 前言2 一些规则3 cmd命令合集4 bat语法学习5 powershell命令合集6 powershell语法学习 1 前言 在日常使用过程中,总是会遇到不记得或无法区分cmd命令和powershell命令的情况,因为在Windows的工作大部分都是可视化的鼠标点击,用到命…

CLH自旋锁原理

CLH自旋锁 JUC中显式锁基于AQS抽象队列同步器,而AQS是CLH锁的一个变种。 在争夺锁激烈的情况下,为了减少CAS空自旋(CAS需要CPU进行内部通信保证缓存一致性造成流量过大引起总线风暴),Java轻量级锁会升级为重量级锁&a…

大数据学习03-Hive分布式集群部署

系统环境:centos7 软件版本:jdk1.8、zookeeper3.4.8、hadoop2.8.5、hive1.1.0 一、安装 hive官网 下载hive安装包,上传到linux服务器上, 解压安装包 tar -zxvf apache-hive-1.1.0-bin.tar.gz -C /home/local/重命名文件 mv …

腾讯云轻量应用服务器搭建Typecho博客网站全流程

腾讯云轻量应用服务器自带Typecho应用模板镜像,腾讯云提供的Typecho模板镜像是基于CentOS 7.6 64位操作系统,并已预置Nginx、PHP、MariaDB软件程序,使用Typecho应用模板可以快速搭建博客、企业官网、电商及论坛等各类网站。腾讯云服务器网分享…

C# 反转链表

206 反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head [1,2] 输出:[2,1] 示例 3…

Python中的标签编码和独热编码

在机器学习项目中,我们通常处理具有不同分类列的数据集,其中一些列的元素在有序变量类别中,例如列收入水平具有低,中或高的元素,在这种情况下,我们可以用1,2,3替换这些元素。其中1表…

【100天精通python】Day9:数据结构_字典、集合

目录 目录 1 字典 1.1 字典的基本操作示例 1.2 字典推导式 2 集合 2.1 集合的常用操作示例 3 列表、元组、字典、集合的区别 1 字典 在Python中,字典(Dictionary)是一种无序的数据结构,用于存储键值对的集合。每个…

flask 读取文件夹文件,展示在页面,可以通过勾选删除

项目结构 app.py from flask import Flask, render_template, request, redirect, url_for import os import globapp Flask(__name__)app.route(/, methods[GET, POST]) def index():if request.method POST:to_delete request.form.getlist(checks)for file in to_delete…

Spring Security 的工作原理/总体架构

目录 1、过滤器的视角 2、DelegatingFilterProxy 委派过滤器代理(类) 2、FilterChainProxy 过滤器链代理(类) 4、SecurityFilterChain 安全过滤器链(接口) 5、Security Filters 安全过滤器实例 6、Sp…

解锁潜力,驭数赋能:大数据与云计算的强强联合

随着数字化时代的来临,大数据和云计算已成为信息技术领域的两大热门话题。大数据指的是以海量、高速、多样化的数据为基础,通过分析和挖掘来获得有价值的信息和洞察。而云计算则是一种基于网络的计算模式,通过将数据和应用程序存储在云端服务…

day31-Password Generator(密码生成器)

50 天学习 50 个项目 - HTMLCSS and JavaScript day31-Password Generator&#xff08;密码生成器&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport&q…

Qt 之 自定义日志文件,QtMessageHandler应用

目录 一、前言 二、头文件代码 三、源文件代码 四、使用示例 五、使用效果 一、前言 在qt程序发布后&#xff0c;还需要查看一些调试输出信息&#xff0c;一般将输出信息写入日志文件&#xff0c;本文通过自定义函数实现将Debug、Warning、Critical、Fatal及Info信息自动输…

品牌全量数据监测分析

线上渠道众多&#xff0c;涉及的产品链接量也是巨大的&#xff0c;多数品牌在做线上数据监测时&#xff0c;是需要对全量数据进行监测分析&#xff0c;比如对某个SKU的全量数据&#xff0c;或者对某个竞品的全量数据进行监测&#xff0c;所以需求确认了&#xff0c;是否有能做到…

windows系统安装指定的vue/cli、node和npm;vue/cli脚手架搭建项目所涉及的vue/cli、node、npm依赖版本等问题

文章目录 前言一、安装vue/cli脚手架1.安装指定版本脚手架&#xff0c;我是用的3.12.0版本2.查看版本是否安装成功&#xff0c;成功有版本号2.1问题&#xff1a;安装失败2.2解决方案2.3 安装成功 二、安装指定node和npm1.为什么需要安装指定node和npm版本&#xff0c;同时匹配v…

【mysql】—— 表的操作

前言&#xff1a; 在上期中&#xff0c;我们把 mysql 中库的基本操作进行了相应的讲解。本期&#xff0c;我将给大家讲解的是关于mysql 中表的基本操作。 目录 &#xff08;一&#xff09;创建表 &#xff08;二&#xff09;查看表结构 1、DESCRIBE 方式 2、SHOW CREATE TA…

Data Structure, Algorithm,and Applications in C++

在学习这本书进阶内容之前&#xff0c;我们可以跟着它的第一章部分再巩固和复习。本书由Sartaj Sahni撰写&#xff0c;由王立柱和刘志红翻译。全书通俗易懂&#xff0c;内容丰富&#xff0c;是巩固C内容的不二选择。希望本文对各位有所帮助。 目录 1.函数与参数 1.1.传值参数…

【备考2023年CISSP认证考试学习手册,信息系统安全在职人员日常参考指南——《CISSP信息系统安全专家认证All-in-One(第9版)》】

《CISSP信息系统安全专家认证All-in-One(第9版)》针对最新发布的CISSP考试做了全面细致的修订和更新&#xff0c;涵盖(ISC)2新开发的2021 CISSP考试大纲的所有目标。这本综合性权威指南编排精当&#xff0c;每章开头列出学习目标&#xff0c;正文中穿插考试提示&#xff0c;章末…