SCI一区TOP|双曲正弦余弦优化算法(SCHO)原理及实现【免费获取Matlab代码】

news2024/11/29 2:41:36

目录

    • 1.背景
    • 2.算法原理
      • 2.1算法思想
      • 2.2算法过程
    • 3.结果展示
    • 4.参考文献
    • 5.代码获取


1.背景

2023年,J Bai受到双曲正弦余弦函数启发,提出了双曲正弦余弦优化算法(Sinh Cosh optimizer, SCHO)。

在这里插入图片描述
在这里插入图片描述

2.算法原理

2.1算法思想

SCHO灵感来源于Sinh函数和Cosh函数特性,其包括四个步骤:探索和开发阶段、有界搜索策略和切换机制

2.2算法过程

探索阶段

探索阶段和开发阶段平衡基于:
T = f l o o r ( M a x _ i t e r a t i o n c t ) (1) T=floor\left(\frac{Max\_iteration}{ct}\right)\tag{1} T=floor(ctMax_iteration)(1)

在这里插入图片描述
探索位置更新:
X ( i , j ) t + 1 = { X b e s t ( j ) + r 1 × W 1 × X ( i , j ) i , r 2 > 0.5 X b e s t ( j ) − r 1 × W 1 × X ( i , j ) i , r 2 < 0.5 (2) \left.X_{(i,j)}^{t+1}=\left\{\begin{array}{ll}X_{best}^{(j)}+r_1\times W_1\times X_{(i,j)}^i, r_2>0.5\\X_{best}^{(j)}-r_1\times W_1\times X_{(i,j)}^i, r_2<0.5\end{array}\right.\right.\tag{2} X(i,j)t+1={Xbest(j)+r1×W1×X(i,j)i,r2>0.5Xbest(j)r1×W1×X(i,j)i,r2<0.5(2)
W1为第一探索阶段Xt (i,j)的权重系数,控制第一阶段候选解远离自身,逐步向最优解探索:
W 1 = r 3 × a 1 × ( cosh ⁡ r 4 + u × sinh ⁡ r 4 − 1 ) (3) W_1=r_3\times a_1\times(\cosh r_4+u\times\sinh r_4-1)\tag{3} W1=r3×a1×(coshr4+u×sinhr41)(3)
U是控制探索精度的敏感系数,参数a1:
a 1 = 3 × ( − 1.3 × t Max_iteration + m ) (4) a_1=3 \times\left(-1.3\times\frac{t}{\text{Max\_iteration}}+ m\right)\tag{4} a1=3×(1.3×Max_iterationt+m)(4)
在第二阶段的探索中,搜索个体几乎不受最优解的影响,因此它们在当前位置的基础上非定向地探索下一个位置:
X ( i j ) t + 1 = { X ( i , j ) t + ∣ ε × W 2 × X b e s t ( j ) − X ( i , j ) t ∣ , r 5 > 0.5 X ( i , j ) t − ∣ ε × W 2 × X b e s t ( j ) − X ( i , j ) t ∣ r 5 < 0.5 (5) \left.X_{(ij)}^{t+1}=\left\{\begin{array}{ll}X_{(i,j)}^t+\Big|\varepsilon\times W_2\times X_{best}^{(j)}-X_{(i,j)}^t\Big|, r_5>0.5\\X_{(i,j)}^t-\Big|\varepsilon\times W_2\times X_{best}^{(j)}-X_{(i,j)}^t\Big| r_5<0.5\end{array}\right.\right.\tag{5} X(ij)t+1= X(i,j)t+ ε×W2×Xbest(j)X(i,j)t ,r5>0.5X(i,j)t ε×W2×Xbest(j)X(i,j)t r5<0.5(5)
W2是第二阶段探索中X(j)最优的权重系数:
W 2 = r 6 × a 2 (6) W_2=r_6\times a_2\tag{6} W2=r6×a2(6)
a2是单调递减函数:
a 2 = 2 × ( − t M a x _ i t e r a t i o n + n ) (7) a_2=2 \times\left( -\frac{t}{Max\_iteration}+n\right)\tag{7} a2=2×(Max_iterationt+n)(7)

开发阶段

为了充分利用搜索空间,将开发分为两个阶段,并在整个迭代中进行。在第一个开发阶段,对X的附近空间进行开发:
X ( i , j ) t + 1 = { X b e s t ( j ) + r 7 × W 3 × X ( i , j ) t , r 8 > 0.5 X b e s t ( j ) − r 7 × W 3 × X ( i , j ) t , r 8 < 0.5 (8) X_{(i,j)}^{t+1}=\begin{cases} X_{best}^{(j)}+r_{7}\times W_{3}\times X_{(i,j)}^{t}, r_{8}>0.5\\ X_{best}^{(j)}-r_{7}\times W_{3}\times X_{(i,j)}^{t}, r_{8}<0.5\end{cases}\tag{8} X(i,j)t+1={Xbest(j)+r7×W3×X(i,j)t,r8>0.5Xbest(j)r7×W3×X(i,j)t,r8<0.5(8)
W3是第一阶段开发的权重系数,控制候选解从近到远地开发自身周围的搜索空间:
W 3 = r 9 × a 1 × ( cosh ⁡ r 10 + u × sinh ⁡ r 10 ) (9) W_3=r_9\times a_1\times(\cosh r_{10}+u\times\sinh r_{10})\tag{9} W3=r9×a1×(coshr10+u×sinhr10)(9)
在开发的第二阶段,将执行候选解决方案围绕所获得的最优解进行深度开发,并且围绕最优解的开发强度将随着迭代的增加而增加:
X ( i , j ) t + 1 = X ( i , j ) t + r 11 × sinh ⁡ r 12 c o s h r 12 ∣ W 2 × X b e s t ( j ) − X ( i , j ) t ∣ (10) X_{(i,j)}^{t+1}=X_{(i,j)}^{t}+r_{11}\times\frac{\sinh r_{12}}{coshr_{12}}\left|W_{2}\times X_{best}^{(j)}-X_{(i,j)}^{t}\right|\tag{10} X(i,j)t+1=X(i,j)t+r11×coshr12sinhr12 W2×Xbest(j)X(i,j)t (10)
W2控制第二开采阶段的程度。其绝对值在以后的迭代中逐渐增大,开发程度也随之增大。

有界搜索策略

为了充分利用潜在的搜索空间,SCHO在后期采用了一种类似于动物狩猎的策略,称为有界搜索策略。该策略的每一个起始点由下式计算:
B S k + 1 = B S k + f l o o r ( M a x _ i t e r a t i o n − B S k α ) (11) BS_{k+1}=BS_k+floor\Bigg(\frac{Max\_iteration-BS_k}{\alpha}\Bigg)\tag{11} BSk+1=BSk+floor(αMax_iterationBSk)(11)
α为控制潜力空间深部勘探开发精度的敏感系数,BS1表述为:
B S 1 = f l o o r ( M a x _ i t e r a t i o n β ) (12) BS_1=floor\left(\frac{Max\_iteration}{\beta}\right)\tag{12} BS1=floor(βMax_iteration)(12)
其中β控制启动有界搜索策略的值,并设置为1.55。当SCHO每次都使用有界搜索策略时,上下界设置为:
u b k = X b e s t ( j ) + ( 1 − t M a x − i t e r a t i o n ) × ∣ X b e s t ( j ) − X s e c o n d ( j ) ∣ l b k = X b e s t ( j ) − ( 1 − t M a x _ i t e r a t i o n ) × ∣ X b e s t ( j ) − X s e c o n d ( j ) ∣ (13) ub_k=X_{best}^{(j)}+\left(1-\frac{t}{Max_-iteration}\right)\times\left|X_{best}^{(j)}-X_{second}^{(j)}\right|\\ lb_k=X_{best}^{(j)}-\left(1-\frac{t}{Max\_iteration}\right)\times\left|X_{best}^{(j)}-X_{second}^{(j)}\right|\tag{13} ubk=Xbest(j)+(1Maxiterationt)× Xbest(j)Xsecond(j) lbk=Xbest(j)(1Max_iterationt)× Xbest(j)Xsecond(j) (13)

切换机制

在SCHO中,提出了一种带有Sinh和Cosh的转换机制,实现了勘探和开发之间的转换:
A = ( p − q × ( t M a x − i t e r a t i o n ) ( cosh ⁡ t M a x − i t r a t i o n sinh ⁡ t M a x − i t e r a t i o n ) ) × r 13 (14) A=\left(p-q\times\left(\frac{t}{Max_-iteration}\right)^{\left(\frac{\cosh\frac{t}{Max-itration}}{\sinh\frac{t}{Max-iteration}}\right)}\right)\times r_{13}\tag{14} A= pq×(Maxiterationt)(sinhMaxiterationtcoshMaxitrationt) ×r13(14)

流程图

在这里插入图片描述

伪代码

在这里插入图片描述

3.结果展示

在这里插入图片描述
在这里插入图片描述

4.参考文献

[1] Bai J, Li Y, Zheng M, et al. A sinh cosh optimizer[J]. Knowledge-Based Systems, 2023, 282: 111081.

5.代码获取

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

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

相关文章

springAI(一)

目录 一、spring AI 目的 二、spring AI 来源 三、sprig AI 是什么&#xff1f; 四、spring AI中的 概念 4.1、模型&#xff08;Models&#xff09; 4.2、提示&#xff08;Prompts&#xff09; 4.3、提示模板&#xff08;Prompt Templates&#xff09; 4.4、令 牌&#…

教大家封装一个基础el-table 行内气泡编辑框,你一定用的到

今天的任务就是封装这个用element ui 组件来封装,如果让你封装你会怎么封装呢? 不说废话了,直接上代码 新建一个EditablePopoverColumn.vue组件文件 <template><el-table-column :prop="prop" :label="label"><template slot-scope=&…

USB拓展坞PCB

一、器件选型 1、DM&#xff1a;Data Minus&#xff0c;数据负信号; 2、DP&#xff1a;USB Data Positive&#xff0c;数据正信号; HUB芯片&#xff1a;sl2.1A 保险丝&#xff1a;1.5A快恢复保险丝 接电脑的USB&#xff1a;micro b或type-c 外接的USB&#xff1a;typeA (ED…

【Linux】基础IO_4

文章目录 六、基础I/O4. 动静态库 未完待续 六、基础I/O 4. 动静态库 既然我们能够成功创建静态库了&#xff0c;接下来我们将这个代码打包成动态库&#xff1a; shared: 表示生成共享库格式 fPIC&#xff1a;产生位置无关码(position independent code) 动态库库名规则&…

37 - 上级经理已离职的公司员工(高频 SQL 50 题基础版)

37 - 上级经理已离职的公司员工 selecte1.employee_id fromEmployees e1 left join Employees e2 on e1.manager_id e2.employee_id wheree2.manager_id is null and e1.manager_id is not null and e1.salary<30000;

function包装器和bind包装器

function包装器和bind包装器 包装器function包装器为什么需要functionfunction包装器function包装器的应用场景逆波兰表达式求值 bind包装器bind包装器的应用场景 包装器 包装器是用于给其他编程接口提供更一致或更合适的接口 由于函数调用可以使用函数名、函数指针、函数对象…

34.LengthFieldBasedFrameDecoder代码使用

public class TestLengthFieldDecorder {public static void main(String[] args) {//这里相当于服务端接收数据EmbeddedChannel embeddedChannel = new EmbeddedChannel(new LengthFieldBasedFrameDecoder(1024, 0,4, 0, 0),new LoggingHandler(LogLevel.DEBUG));//这里相当于…

Idea安装插件刷Leetcode

一、下载插件 idea版本2022以下两个插件都可以用来刷Leetcode 二、登录Leetcode 获取token 登录 三、配置 配置1 配置2 Code FileName C$!velocityTool.leftPadZeros($!{question.frontendQuestionId},4)$!velocityTool.replace(${question.title}," ","&qu…

【实战】Spring Cloud Stream 3.1+整合Kafka

文章目录 前言新版版本优势实战演示增加maven依赖增加applicaiton.yaml配置新增Kafka通道消费者新增发送消息的接口 实战测试postman发送一个正常的消息postman发送异常消息 前言 之前我们已经整合过Spring Cloud Stream 3.0版本与Kafka、RabbitMQ中间件&#xff0c;简直不要太…

【深度学习】实现基于MNIST数据集的TensorFlow/Keras深度学习案例

基于TensorFlow/Keras的深度学习案例 实现基于MNIST数据集的TensorFlow/Keras深度学习案例0. 什么是深度学习&#xff1f;1. TensorFlow简介2. Keras简介3. 安装TensorFlow前的注意事项4. 安装Anaconda3及搭建TensorFlow环境1&#xff09; 下载安装Anaconda Navigator2&#xf…

使用ESP32和Flask框架实现温湿度数据监测系统

项目概述 在这个项目中&#xff0c;我们将使用ESP32微控制器读取温湿度传感器的数据&#xff0c;并将这些数据通过HTTP请求传输到基于Flask框架的服务器。Flask是一个轻量级的Python Web框架&#xff0c;非常适合快速开发和部署Web应用。通过这个项目&#xff0c;我们不仅可以了…

36 - 按分类统计薪水(高频 SQL 50 题基础版)

36 - 按分类统计薪水 -- 方法一 selectLow Salary category,sum(income <20000) accounts_count fromAccounts union selectAverage Salary category,sum(income between 20000 and 50000) accounts_count fromAccounts union selectHigh Salary category,sum(in…

Linux htop命令使用

文章目录 简介界面介绍第一行第二行第三行第四行 如何使用 简介 htop 是一个类似于 top 的命令&#xff0c;但具有更丰富的功能和更友好的界面。它可以实时显示系统中各个进程的资源占用情况&#xff0c;如 CPU 使用率、内存使用率等。以下是对 htop 命令的完全解析&#xff1…

CANoe CAPL如何模拟发送CAN错误帧?

目录 canOutputErrorFrame介绍代码output(errorframe)代码总结canOutputErrorFrame 介绍 代码 canOutputErrorFrame(errorFrame, 12, 0); //output Error Frame with 12 dominant bits on CAN1 canOutputErrorFrame(CAN2.errorFrame, 6,

物理层(一)

第2章 物理层 2.1 通信基础 2.1.1 基本概念 1、数据、信号与码元 通信的目的是传输信息&#xff0c;如文字、图像和视频等。数据是指传送信息的实体。信号则是数据的电气或电磁表现&#xff0c;是数据在传输过程中的存在形式。数据和信号都有模拟或数字之分:①模拟数据(或模…

一个电商创业者眼中的618:平台大变局

战役结束了&#xff0c;战斗还在继续。 一位朋友去年5月创业&#xff0c;网上卖咖啡&#xff0c;这个赛道很拥挤&#xff0c;时机也不好&#xff0c;今年是他参加第一个618。朋友说&#xff0c;今年的目标是锤炼团队&#xff0c;总结方法&#xff0c;以及最重要的——活下去。…

设计模式——设计模式原则

设计模式 设计模式示例代码库地址&#xff1a; https://gitee.com/Jasonpupil/designPatterns 设计模式原则 单一职责原则&#xff08;SPS&#xff09;&#xff1a; 又称单一功能原则&#xff0c;面向对象五个基本原则&#xff08;SOLID&#xff09;之一 原则定义&#xf…

PHP环境搭建之使用PhpStudy

文章目录 1 PhpStudy1.1 简介1.2 下载&安装1.3 修改配置1.3.1 Apache配置1.3.2 MySQL配置1.3.3 MySQL启动问题 1.4 Composer1.4.1 简介1.4.2 下载安装1.4.3 修改配置1.4.4 使用命令 1 PhpStudy 1.1 简介 phpstudy是一个php运行环境的集成包&#xff0c;用户不需要去配置运…

2024/06/21--代码随想录算法10-12/17| 子序列问题

300.最长递增子序列 力扣链接 动规五部曲 dp的定义 dp[i]表示子序列答案以nums[i]结尾的最长递增子序列的长度 为什么一定表示 “以nums[i]结尾的最长递增子序” &#xff0c;因为我们在 做 递增比较的时候&#xff0c;如果比较 nums[j] 和 nums[i] 的大小&#xff0c;那么两…

怎么采集阿里巴巴1688的商品或商家数据?

怎么使用简数采集器批量采集阿里巴巴1688的商品或商家相关信息呢&#xff1f; 简数采集器暂时不支持采集阿里巴巴1688的相关数据&#xff0c;谢谢。 简数采集器采集网络网页数据非常简单高效&#xff1a;输入要采集的网址&#xff0c;简数智能算法会自动提取出网页上的关键信…