获取更多资讯,赶快关注上面的公众号吧!

文章目录

  • 正余弦优化算法(Sine Cosine Algorithm,SCA)
    • SCA

正余弦优化算法(Sine Cosine Algorithm,SCA)

该算法是由澳大利亚的Mirjalili于2016年提出的一种基于种群的新型随机优化算法,SCA创建多个初始随机候选解,然后利用基于正弦和余弦函数的数学模型,使得这些解朝最优解方向或反向波动。算法源代码可以关注公众号后回复"正余弦"获取。

SCA

SCA本质上为基于种群的优化算法,而基于种群的优化算法的共同点是都包含两个阶段:探索和利用。探索阶段,算法以较大的概率随机搜索以充分探索搜索空间,而在利用阶段,随机概率逐渐下降。

SCA使用以下两个等式进行位置更新:
Xit+1=Xit+r1×sin⁡(r2)×∣r3Pit−Xit∣(1)X_{i}^{t+1}=X_{i}^{t}+r_{1} \times \sin \left(r_{2}\right) \times\left|r_{3} P_{i}^{t}-X_{i}^{t}\right|\tag{1}Xit+1​=Xit​+r1​×sin(r2​)×∣∣​r3​Pit​−Xit​∣∣​(1)

Xit+1=Xit+r1×cos⁡(r2)×∣r3Pit−Xit∣(2)X_{i}^{t+1}=X_{i}^{t}+r_{1} \times \cos \left(r_{2}\right) \times\left|r_{3} P_{i}^{t}-X_{i}^{t}\right|\tag{2}Xit+1​=Xit​+r1​×cos(r2​)×∣∣​r3​Pit​−Xit​∣∣​(2)

其中XitX_{i}^{t}Xit​为第ttt次迭代中当前解在第iii个维度上的位置,r1r_1r1​/r2r_2r2​/r3r_3r3​为随机数,PiP_{i}Pi​为第iii维终点的位置。

这两个等式通常按照如下的组合方式使用:
Xit+1={Xit+r1×sin⁡(r2)×∣r3Pit−Xit∣,r4<0.5Xit+r1×cos⁡(r2)×∣r3Pit−Xit∣,r4≥0.5(3)X_{i}^{t+1}=\left\{\begin{array}{ll} X_{i}^{t}+r_{1} \times \sin \left(r_{2}\right) \times\left|r_{3} P_{i}^{t}-X_{i}^{t}\right|, & r_{4}<0.5 \\ X_{i}^{t}+r_{1} \times \cos \left(r_{2}\right) \times\left|r_{3} P_{i}^{t}-X_{i}^{t}\right|, & r_{4} \geq 0.5 \end{array}\right. \tag{3}Xit+1​={Xit​+r1​×sin(r2​)×∣r3​Pit​−Xit​∣,Xit​+r1​×cos(r2​)×∣r3​Pit​−Xit​∣,​r4​<0.5r4​≥0.5​(3)

其中r4r_4r4​为[0,1]之间的随机数。

可以看出,在SCA中主要涉及四个参数:r1r_1r1​,r2r_2r2​,r3r_3r3​和r4r_4r4​。参数r1r_1r1​为下一位置的所在区域(或移动方向),该区域既可以位于解和终点之间的空间内,也可以不在。参数r2r_2r2​定义了朝向或背离终点的距离远近。参数r3∈[0,2]r_3\in[0,2]r3​∈[0,2]为终点引入了随机权重,以随机强调(r3>1r_3>1r3​>1)或弱化(r3<1r_3<1r3​<1)终点在距离计算时的作用。参数r4r_4r4​用于以相等的概率在正弦和余弦之间进行切换。

等式(1)和(2)中正弦和余弦对下一位置的影响如图1所示,正弦和余弦的周期模式可以允许一个解在另一个解周围重新定位,从而保证利用两个解之间定义的空间,同时为了探索搜索空间,解应该能够搜索其对应终点之间之外的空间,而这可以通过改变正弦和余弦函数的取值范围来实现,如图2所示。

图3展示了改变正余弦的取值范围可以更新解的位置,该随机位置到底是在空间内还是空间外,是通过等式(3)中定义的r2∈[0,2π]r_2\in[0, 2\pi]r2​∈[0,2π]来实现的。

为了平衡探索和利用,正弦和余弦的取值范围应该自适应地调整:
r1=a−taT(4)r_{1}=a-t \frac{a}{T}\tag{4}r1​=a−tTa​(4)

其中ttt为当前迭代,TTT为最大迭代次数,aaa是一个常数。图4展示了当a=2a=2a=2时取值范围递减的过程。

所以通过图3和图4可知,当取值范围在(1,2]和[-2,-1)范围内时,SCA算法在空间内进行探索,而当取值范围在[-1,1]之间时,SCA在空间内进行利用。

SCA算法的伪代码如下:

初始化初始解(XXX)

Do

评估每个代理的目标函数

更新当前最优解(P=X∗P=X^*P=X∗)

更新r1r_1r1​,r2r_2r2​,r3r_3r3​和r4r_4r4​

更新代理的位置(式3)

While(ttt<最大迭代次数)

Return全局最优解

(源码)群体智能优化算法之正余弦优化算法(Sine Cosine Algorithm,SCA)相关推荐

  1. 智能优化算法:正余弦优化算法-附代码

    智能优化算法:正余弦优化算法-附代码 文章目录 智能优化算法:正余弦优化算法-附代码 1.算法原理 2.算法流程 3.算法结果 4.参考文献 5.MATLAB代码 6.Python代码 摘要:正 余 ...

  2. (SCA)正弦余弦算法SCA: A Sine Cosine Algorithm(代码可复制粘贴)

    [优化算法]正弦余弦算法(SCA):SCA: A Sine Cosine Algorithm 论文题目:SCA is a novel algorithm for solving single-obje ...

  3. 智能优化算法——正余弦优化算法(SCA)及其改进策略

    正余弦优化算法(SCA)及其改进策略 一.基本介绍 1. 背景 2. 算法简介 二.基本的SCA算法 1. 算法介绍 2. 算法步骤 三.算法分析 1. 正余弦分布 2. 算法实验结果 3. 算法优缺 ...

  4. 正余弦优化算法(SCA)

    正余弦优化算法 (Sine Cosine Algorithm,SCA) 是Seyedali Mirjalili等于2016年提出的一种新型智能优化算法,在算法中会生成多个初始随机候选解,并使它们基于正 ...

  5. 数学建模学习(87):正余弦优化算法(SCA)对多元函数寻优

    本篇教程通过简洁的方式教大家了解SCA算法,轻松搭建代码块实现寻优. 文章目录 算法简介 一.算法原理 二.数学模型 三.算法流程 四.算法优缺点 五.参考文献 六.案例实现(一) 6.1 目标函数处 ...

  6. LiteOS内核源码分析:动态内存之Bestfit分配算法

    本文分享自华为云社区<LiteOS内核源码分析系列十三 动态内存Bestfit分配算法>,原文作者:zhushy . 内存管理模块管理系统的内存资源,它是操作系统的核心模块之一,主要包括内 ...

  7. 视觉机器学习20讲-MATLAB源码示例(6)-贝叶斯学习算法

    视觉机器学习20讲-MATLAB源码示例(6)-贝叶斯学习算法 1. 贝叶斯学习算法 2. Matlab仿真 3. 小结 1. 贝叶斯学习算法 贝叶斯分类算法是统计学的一种分类方法,它是一类利用概率统 ...

  8. 抖音seo源码账号矩阵程序开发搭建,优化排名置顶。

    前言:抖音seo源码账号矩阵程序开发搭建,优化排名置顶.抖音seo搜索逻辑是什么,作为技术开发公司,我们在在抖音开放平台需要完成注册--申请系统服务商---入驻---关联应用----提供审核,拿到正规 ...

  9. (附源码)计算机毕业设计SSM基于协同过滤算法的甜品推荐系统

    (附源码)计算机毕业设计SSM基于协同过滤算法的甜品推荐系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclisp ...

  10. 手机下载小说为php格式的,PHP响应式小说网站整站源码(自适应手机移动端+深度SEO优化自动采集+图文安装教程)...

    [温馨提示]源码包解压密码:www.youhutong.com 资源描述 PHP响应式小说网站整站源码(自适应手机移动端+深度SEO优化自动采集+图文安装教程) 源码介绍: 深度SEO优化自动采集的新 ...

最新文章

  1. 程矢Axure夜话:Axure基础系列视频教程之图片自动播放鼠标悬停
  2. python语音播报-使用pyttsx3实现python语音播报
  3. [LeetCode226]Invert Binary Tree
  4. 【LDA学习系列】LDA-Python库
  5. Jenkins任务失败,发送邮件通知
  6. 探索性数据分析入门_入门指南:R中的探索性数据分析
  7. 《大数据》2020年第6期目次摘要
  8. 【Vue】—Vue的基本介绍与插件安装
  9. c++ vector api summary
  10. Mysql数据库更新操作导致死锁问题
  11. pe系统安装win10系统
  12. 如何利用计算机模拟分子生物学,利用计算机模拟研究氨基酸序列对于朊病毒分子间聚集的影响...
  13. linux去除内容重复行,Linux删除文本中的重复行 - 米扑博客
  14. 根据二叉树创建字符串
  15. 基于机器学习的心脏病预测方法(1)——心脏病及Heart Disease UCI数据集介绍
  16. get(obj, “a.b[0].c“, 0)
  17. [DFS/递推/DP] 2327 [SCOI2005] 扫雷 ( 普及+/提高
  18. 使用设计模式出任CEO迎娶白富美(4)--走马上任,华丽转身
  19. 玩转控件:Fucking ERP之流程图
  20. java 滑块验证码 开源,Java AWT生成滑动验证码

热门文章

  1. json字符串中的大括号转义传到后台_string.format格式化字符串中转义大括号“{}”...
  2. 对象数组题目 Student类
  3. 2021-1-31linux学习纪要
  4. 实验室服务器系统设计,实验室教学管理系统设计与实现
  5. 电脑键盘下划线怎么打_电脑键盘失灵鼠标不动怎么办 键盘失灵鼠标不动解决办法...
  6. vue组件之间的参数传递
  7. 查询数据去除后面无用的0_OTM数据库清理超时无效连接--SQLNET.EXPIRE_TIME=10
  8. Java编程:树(基础部分)
  9. Jquery ajax, Axios, Fetch区别之我见
  10. 论文笔记_S2D.14-2014-NIPS_利用多尺度深度网络从单张图像预测深度图