SCA|可作为有效改进策略的算法——正余弦优化算法(Matlab/Python)

在这里插入图片描述

正余弦优化算法(Sine cosine algorithm,SCA)是由Mirjalili [1]在2016年提出,目前WOS上引用量2K+,谷歌学术上4K+。

在这里插入图片描述

不得不说Seyedali Mirjalili真是位大神级的人物(下图是Mirjalili开发的部分算法)

在这里插入图片描述

SCA的核心思想是利用正、余弦函数波动的周期性,在全局范围内探索最优解,使算法逐步收敛。其具有结构简单、参数少、易于实现的特点。其优化性能优于GA、PSO、花授粉等,已被广泛用于数据分类、光谱特征峰定位和电力系统调度等不同领域。

在这里插入图片描述

另一方面,算法的混合来看,混合元启发式算法的主要目标是利用每种算法的优点,以最大限度地减少每种算法的缺点。正是由于SCA模型的简单及其优秀的搜索性能,其更易于算法的混合。

本文主要内容包括:SCA算法原理,SCA算法的改进与利用思路,以及SCA算法的MATLAB和Python代码实现。

00 目录

1 正余弦算法SCA原理

2 改进&利用

3 代码目录

4 算法性能

5 源码获取

01 正余弦算法SCA原理

SCA的独特之处在于使用正弦和余弦波来控制探索和开发搜索空间。下面的数学方程可以描述这个过程:

在这里插入图片描述

Pt ij指示迭代t中的最佳个体位置。此外,有四个随机参数r1,r2,r3和r4。r1控制搜索代理的下一个位置,如果r1小于1,则倾向于开发,如果r1大于1,则倾向于勘探。为了平衡勘探与开发,r1的定义式是线性递减的,其中a一般取2。r2表示向外或向内的移动步长,r2参数的范围是[0,2 π]。r3在0和2之间的范围内,如果r3大于1,则更注重全局最优位置,否则不强调。r4是在0和1之间的随机参数,用以转换正弦和余弦。

其寻优示意图如下:
在这里插入图片描述

图:陈亮, 汤显峰. 改进正余弦算法优化特征选择及数据分类[J]. 计算机应用, 2022, 42(6): 1852-1861.

以上就是SCA的全部理论,很简单吧~

02 改进&利用

根据没有免费的午餐(NFL)定理[2],没有一个算法可以处理所有的优化问题,即每个算法都有其优势和局限性,这也激励着学者提出各种改进的算法来解决不同类型的优化问题,同时也为算法间的混合利用提供了参考。

2.1 改进

SCA在面对复杂问题时仍然存在优化精度低、容易陷入局部极值、收敛速度慢等问题,这里给出一种思路。SCA中,r1用于平衡全局搜索和局部开发能力,但线性递减的策略使得前期递减的过快,全局搜索不充分,后期递减的过慢,无法快速收敛,因此可以设计一种非线性的参数r1以提高其搜索能力。同时,针对其易陷入局部最优的问题,也可以引入如Levy等变异策略。

2.2 利用

SCA模型的正余弦震荡变化特性使其在解空间具有良好的搜索能力,可以直接引入该式替换算法某部分的寻优,或是将其融入算法的更新方程中,如下是一篇文献[A collaboration-based hybrid GWO-SCA optimizer for engineering optimization problems]的思路(将SCA融入GWO中):

原GWO算法

在这里插入图片描述

融入SCA的GWO算法
在这里插入图片描述

03 代码目录

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

代码包含MATLAB和Python,考虑到很多同学获取代码后,MATLAB代码部分有乱码(MATLAB版本问题),可以将MATLAB版本改为2020及以上,或使用乱码解决文件夹中的txt文件即可。

代码都经过作者重新注释,代码更清爽,可读性强。

部分代码:(MATLAB与Python)

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

04算法性能

采用标准测试函数初步检验其寻优性能

在Matlab中,进行CEC2005函数的测试,执行程序结果如下:

在这里插入图片描述

在Python中,进行CEC2005函数的测试,执行程序结果如下:

在这里插入图片描述

05 源码获取

在GZH(KAU的云实验台)后台回复 SCA 即可

参考文献

[1] MIRJALILI S.SCA:A sine cosine algorithm for solving optimization problems[J].Knowledge-Based Systems,2016,96:120-133.

[2] Wolpert DH, Macready WG. No free lunch theorems for optimization. IEEE transactions on evolutionary computation 67–82, 1997.

另:如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。

如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看(ง •̀_•́)ง(不点也行),你们的鼓励就是我坚持的动力!

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

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

相关文章

Centos7 安装与卸载mysql

卸载 ps ajx | grep mysql : 查看当前服务器是否有mysql 没有的话就不需要卸载咯。 centos7 通过yum下载安装包通常是以.rpm为后缀,rpm -qa 可以查看当前服务器上所有的安装包: rpm -qa | grep mysql | xargs yum -y remove :将查询到的mysql…

网络安全中的“三高一弱”和“两高一弱”是什么?

大家在一些网络安全检查中,可能经常会遇到“三高一弱”这个说法。那么,三高一弱指的是什么呢? 三高:高危漏洞、高危端口、高风险外连 一弱:弱口令 一共是4个网络安全风险,其中的“高危漏洞、高危端口、弱…

华为设备vlan下配置MSTP,STP选举

核心代码,不同实例,承载不同流量,为每个实例设置一个根网桥达到分流的效果 stp region-config //进入stp区域的设置 region-name R1 //区域命名为R1 instance 1 vlan 10 …

在线知识图谱可视化工具

在传统的企业运营管理过程中,大量的数据和信息以文档的形式存在,需要通过一定的方式进行组织、存储、加工和利用,而知识图谱就是这样一种数据表示形式。在线知识图谱能够帮助企业快速地找到有价值的信息和数据,并且对这些信息进行…

论文翻译: Vision-Language Foundation Models as Effective Robot Imitators

Vision-Language Foundation Models as Effective Robot Imitators 使用视觉-语言基础模型对机器人进行有效的模仿 文章目录 Vision-Language Foundation Models as Effective Robot Imitators使用视觉-语言基础模型对机器人进行有效的模仿ABSTRACT摘要1 INTRODUCTION1 引言2 …

LLVM的项目结构

所有LLVM项目都有统一的目录结构。让我们比较一下LLVM和GCC,即GNU编译器集合。几十年来,GCC几乎为您能想到的每一个系统都提供了成熟的编译器。但除了编译器,没有任何工具可以用这些代码,原因是它不为重用而设计,而LLV…

从0到1:实验室设备借用小程序开发笔记

概论 实验室设备借用小程序,适合各大高校,科技园区,大型企业集团的实验室设备借用流程, 通过数字化的手段进一步提升相关单位设备保障水平,规范实验室和设备管理,用户通过手机小程序扫描设备的二维码,可以…

H.265流媒体播放器EasyPlayer.js集成后无法重新拉流的原因排查

流媒体播放器EasyPlayer是TSINGSEE青犀流媒体组件系列中关注度较高的产品,经过多年的发展和迭代,目前已经有多个应用版本,包括RTSP版、RTMP版、Pro版,以及js版,其中js版本作为网页播放器,受到了用户的广泛使…

自动化测试框架pytest系列之8个常用的装饰器函数

自动化测试框架pytest系列之基础概念介绍(一)-CSDN博客 自动化测试框架pytest系列之21个命令行参数介绍(二)-CSDN博客 自动化测试框架pytest系列之强大的fixture功能,为什么fixture强大?一文拆解它的功能参数。(三)-CSDN博客 接上文 3.5 pytest的8…

c语言 编译与链接

编译与链接 翻译环境和执行环境翻译环境1.1预编译1.2编译1.3汇编(ASM)2.链接 执行环境最后给大家附上一张关于本节知识内容的图供大家更好理解~ ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/522d488885ba44d99aa504d6b21c88d5.png) &…

智慧校园大数据平台架构

平台架构 基础硬件层 基础硬件层是由一组低廉的PC或服务器组合构建而成。基础硬件层主要承载着数据的存储、运算、容错、调度和通信等任务,对基础应用层下达的指令进行执行和反馈。 数据集成 大数据特征表现在实时、交互、海量等方面,并且以半结构化、非结构化数据为主,价…

Java中的Socket你了解吗

☆* o(≧▽≦)o *☆嗨~我是小奥🍹 📄📄📄个人博客:小奥的博客 📄📄📄CSDN:个人CSDN 📙📙📙Github:传送门 📅&a…

STM32F103标准外设库——RCC时钟(六)

个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:V…

GitLab Runner 实现项目 CI/CD 发布

Gitlab Runner简介 Gitlab实现CICD的方式有很多,比如通过Jenkins,通过Gitlab Runner等,今天主要介绍后者。Gitlab在安装的时候,就默认包含了Gitlab CI的能力,但是该能力只是用于协调作业,并不能真的去执行…

【计算机网络】网络层——详解IP协议

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】 本专栏旨在分享学习计算机网络的一点学习心得,欢迎大家在评论区交流讨论💌 目录 🐱一、I…

力扣电话号码的组合

文章目录 题目说明做题思路代码实现代码解析 题目链接 题目说明 首先我们先分析一下这个题目题目中说呢先给出一个字符串这个字符串其实就是这个九键数字我们要按照要求将数字所代表的字符进行自由组合形成一个字符串并且这个字符串的长度和输入的数字字符串长度相同&#xff0…

华为端口安全常用3种方法配置案例

安全动态mac地址学习功能 [Huawei]int g0/0/01 interface GigabitEthernet0/0/1 port-security enable //开启安全 port-security max-mac-num 2 //最多为2个mac地址学习 port-security protect-action restrict //丢包带警告 port-security aging-time 1 //mac地址的老化时间…

FFmpeg连载6-音频重采样

今天我们的实战内容是将音频解码成PCM,并将PCM重采样成特定的采样率,然后输出到本地文件进行播放。 什么是重采样? 所谓重采样,一句话总结就是改变音频的三元素,也就是通过重采样改变音频的采样率、采样格式或者声道数…

Github 2024-01-16 Python开源项目日报 Top10

根据Github Trendings的统计,今日(2024-01-16统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目10HTML项目1 精心策划的Python资源列表 创建周期:3490 天开发语言:Python…

在 ASP.NET Core Web API 中使用异常筛选器捕获和统一处理异常

前言 在 ASP.NET Core Web API 中,异常筛选器(Exception Filter)是一种用于处理发生在 Web API 控制器或管道中的异常的机制。 异常筛选器可以捕获和处理应用程序中发生的异常,当系统中出现未经处理的异常的时候,异常…