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

目录

    • 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.mzph.cn/news/857865.shtml

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

相关文章

1panel + Pbootcms 设置伪静态规则

这里确保我们引用的样式路径是否是这样的&#xff0c;&#xff08;不然可能会设置了伪静态无法加载样式&#xff09; //这种格式在不开起伪静态是可以引入的&#xff0c;一旦开启就不行了,一定要在static 前面加上反斜杠 /<link rel"stylesheet" href"{pbo…

【数据分享】《中国法律年鉴》1987-2022

而今天要免费分享的数据就是1987-2022年间出版的《中国法律年鉴》并以多格式提供免费下载。&#xff08;无需分享朋友圈即可获取&#xff09; 数据介绍 自1987年起&#xff0c;《中国法律年鉴》作为一部全面记录中国法律发展进程的重要文献&#xff0c;见证了中国法治建设的每…

python魔法__dir__和__dict__

# 魔法方法dir, __dir__, __dict__class Student:address "wh" # 类属性def __init__(self, name):self.name name # 对象属性self._age 20self.__tel "123456"staticmethoddef static_func():...# __dir__: 查看对象的方法和属性 st Student("z…

【linux】6.9.0系统调用接口列表,一共644个

文件生成命令行&#xff1a; grep "ifdef" /usr/include/x86_64-linux-gnu/bits/syscall.h | awk { print $2 } >/mnt/hgfs/Share/syscall_small.h __NR_FAST_atomic_update __NR_FAST_cmpxchg __NR_FAST_cmpxchg64 __NR__llseek __NR__newselect __NR__sysctl …

Linux服务升级:Almalinux 升级 WebCatlog桌面程序

目录 一、实验 1.环境 2.Almalinux 升级 WebCatlog桌面程序 二、问题 1.Ubuntu如何升级 WebCatlog桌面程序 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 系统版本软件IP备注Almalinux9.4 WebCatlog 192.168.204.150 &#xff08;2&#xff09;Termi…

odoo17 小变更4

odoo17 小变更4 1、代码中去除了访问私人地址权限,但翻译中均还有,怪不 model:res.groups,name:base.group_private_addresses msgid "Access to Private Addresses" msgstr "" 代码也查看了,的确没有了此权限组 --><record model="res.g…

大聪明教你学Java | 深入浅出聊 Kafka

前言 &#x1f34a;作者简介&#xff1a; 不肯过江东丶&#xff0c;一个来自二线城市的程序员&#xff0c;致力于用“猥琐”办法解决繁琐问题&#xff0c;让复杂的问题变得通俗易懂。 &#x1f34a;支持作者&#xff1a; 点赞&#x1f44d;、关注&#x1f496;、留言&#x1f4…

35 - 最后一个能进入巴士的人(高频 SQL 50 题基础版)

35 - 最后一个能进入巴士的人 -- sum(weight) over(order by turn) as total,根据turn升序&#xff0c;再求前面数的和 selectperson_name from(selectperson_name,sum(weight) over(order by turn) as totalfromQueue) new_Queue wheretotal<1000 order by total desc lim…

华为终于要“三分天下”

在被苹果iOS、谷歌安卓长期统治的手机操作系统市场中&#xff0c;一个新操作系统要想杀出来需要多久&#xff1f;华为给出的答案是五年。 6月21日&#xff0c;华为迎来了其过去五年来最扬眉吐气的一次开发者大会。大会首日&#xff0c;HarmonyOS NEXT鸿蒙星河版正式开启开发者…

34 - 指定日期的产品价格(高频 SQL 50 题基础版)

34 - 指定日期的产品价格 -- row_number(行号) 生成连续的序号&#xff0c;不考虑分数相同 -- 在2019-08-16之前改的价格&#xff0c;使用最近一期的日期&#xff0c;没有在2019-08-16之前改的价格&#xff0c;默认价格为10 select t.product_id, t.new_price as price from (s…

Idea安装插件刷Leetcode

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

通过这10个SQL优化手段,让你的SQL提升10倍效率

涉及到SQL优化时&#xff0c;有许多策略和技术可以帮助我们提升查询性能和数据库效率。下面将对10个SQL优化手段详细的说明一下&#xff0c;提供代码。 1.使用索引 在数据库中正确使用索引可以显著提升查询性能。索引可以加速数据的查找和过滤操作。 -- 创建索引 CREATE IND…

Redis进阶 - 朝生暮死之Redis过期策略

概述 Redis 是一种常用的内存数据库&#xff0c;其所有的数据结构都可以设置过期时间&#xff0c;时间一到&#xff0c;就会自动删除。你可以想象 Redis 内部有一个死神&#xff0c;时刻盯着所有设置了过期时间的 key&#xff0c;寿命一到就会立即收割。 你还可以进一步站在死神…

MSPM0G3507 ——GPIO例程讲解2——simultaneous_interrupts

主函数&#xff1a; #include "ti_msp_dl_config.h"int main(void) {SYSCFG_DL_init();/* Enable Interrupt for both GPIOA and GPIOB ports */NVIC_EnableIRQ(GPIO_SWITCHES_GPIOA_INT_IRQN); //启用SWITCHES——A的中断 NVIC_EnableIRQ(GPIO_S…

Java中的Lambda表达式:从入门到精通

Java中的Lambda表达式&#xff1a;从入门到精通 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; Lambda表达式是Java 8引入的一项重要特性&#xff0c;它为Jav…

【数据结构与算法】哈夫曼树,哈夫曼编码 详解

哈夫曼树的数据结构。 struct TreeNode {ElemType data;TreeNode *left, *right; }; using HuffmanTree TreeNode *;结构体包含三个成员&#xff1a; data 是一个 ElemType 类型的变量&#xff0c;用于存储哈夫曼树节点的数据。left 是一个指向 TreeNode 类型的指针&#xf…

2024.06.20【读书笔记】丨生物信息学与功能基因组学(第十六章 真核生物基因组 第四部分)【AI测试版】

《生物信息学与功能基因组学》第十六章读书笔记(第四部分) 真核基因组的比较分析 真核生物基因组的比较分析有助于揭示不同物种间的进化关系和生物学特性。通过比较不同物种的基因组序列,可以发现保守的基因区域和快速进化的基因家族。 基因组水平转移 基因组水平转移是…

MATLAB句柄简记

文章目录 MATLAB句柄函数句柄的简单操作函数 MATLAB句柄 MATLAB平台对于函数调用分为直接调用和间接调用。直接调用即调用子函数。   子函数只能被与它所在M文件同名的主函数或者在M文件内的其他函数调用。一个文件只能有一个主函数。   使用函数句柄可以避免上述问题。句柄…

docker镜像基本操作

文章目录 前言1. 列出本地镜像2. 搜索 Docker Hub 上的镜像3. 拉取镜像4. 删除镜像5. 删除多个镜像6. 强制删除镜像7. 导出镜像8. 导入镜像9. 标记镜像10. 构建镜像11. 检查镜像12. 镜像历史 前言 Docker 镜像是只读模板&#xff0c;用于创建 Docker 容器。以下是一些常用的 D…

(014)Mirror 问题

文章目录 场景里面的无法检测到碰撞、刚体的同步组件异常等&#xff1f;在服务端调用 NetworkServer.Spawn之后&#xff0c;出现了客户端看不到物体情况&#xff1f; 场景里面的无法检测到碰撞、刚体的同步组件异常等&#xff1f; 如果场景是通过 Additive 的方式加载的&#…