【群智能算法改进】一种改进的沙丘猫群优化算法 改进沙丘猫群算法 改进SCSO[1]【Matlab代码#34】

news2024/9/30 7:27:59

文章目录

    • 【`获取资源`请见文章第5节:资源获取】
    • 1. 原始沙丘猫群优化算法
    • 2. 改进沙丘猫群算法
      • 2.1 Logistic混沌映射种群初始化
      • 2.2 透镜成像折射反向学习策略
      • 2.3 动态因子
      • 2.4 黄金正弦策略
    • 3. 部分代码展示
    • 4. 仿真结果展示
    • 5. 资源获取


获取资源请见文章第5节:资源获取】


1. 原始沙丘猫群优化算法

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

2. 改进沙丘猫群算法

2.1 Logistic混沌映射种群初始化

种群个体的初始位置对群体智能算法本身的优化效果起着关键作用。常用的混沌映射有Logistic映射、Tent映射、Henon映射、Chebyshev映射和组合混沌映射。本文选择Logistic映射是因为它比其他混沌映射具有更好的遍历性、自相关性和相互相关性。因此,使用Logistic混沌映射对种群进行初始化,使得种群分布更加均衡,从而提高了算法的收敛性和优化精度。Logistic公式如下:
x k + 1 = μ x k ( 1 − x k ) (1) x_{k+1}=\mu x_{k}(1-x_{k})\tag1 xk+1=μxk(1xk)(1)
其中, μ ∈ ( 0 , 4 ] \mu\in (0,4] μ(0,4] x ∈ ( 0 , 1 ) x\in(0,1) x(0,1)

2.2 透镜成像折射反向学习策略

透镜成像折射反向学习策略的思想来自于凸透镜成像的原理。通过基于当前坐标生成一个反向位置来扩展搜索范围,如图1所示。
在这里插入图片描述

图1 透镜成像折射反向学习原理图

在二维坐标中,x轴的搜索范围为(a, b), y轴表示一个凸透镜。假设物体A在x轴上的投影为x,高度为h,通过透镜成像,另一侧的图像为A*, A在x轴上的投影为x,高度为h*。通过以上分析,我们可以得到如下公式:
( a + b ) / 2 − x x ∗ − ( a + b ) / 2 = h h ∗ (2) \frac{(a+b)/2-x}{x^{*}-(a+b)/2 }=\frac{h}{h^{*}} \tag2 x(a+b)/2(a+b)/2x=hh(2)
对公式(2)进行转换,即可得到反向解x*的表达式为:
x ∗ = a + b 2 + a + b 2 k − x k (3) x^{*} =\frac{a+b}{2}+\frac{a+b}{2k}-\frac{x}{k} \tag3 x=2a+b+2ka+bkx(3)
其中, k = h / h ∗ k=h/h^{*} k=h/h a a a b b b可以视为某维度的上下限。

2.3 动态因子

在原始SCSO算法中,随着迭代过程的进行,rG从2到0线性减小,SCSO算法对复杂的多峰多元函数的适应能力较差,容易出现精度低的问题。因此,引入水波动力演化因子,利用水波动力学的不确定性,使得种群可以搜索更大的区域,减少其他个体跟随的盲目性,增强种群之间的信息交流和学习,保持种群多样性,有效避免收敛,从而提高算法跳出局部最优的能力。

2.4 黄金正弦策略

黄金正弦算法(golden sine algorithm, Golden-SA)是Tanyildizi等人在2017年基于正弦函数相关思想提出的一种新的智能算法,具有搜索速度快、参数调优简单、鲁棒性好的优点。Golden-SA算法利用正弦函数与单位圆的特殊关系结合黄金分割系数进行迭代搜索;单位圆仿真算法通过扫描正弦函数,探索搜索空间。黄金中庸线的概念最早是由古希腊数学家欧多克索斯在公元前4世纪提出的。黄金中庸线在金正弦搜索策略中不需要梯度,可以防止算法陷入局部最优。
Golden-SA策略的数学模型如式(4)所示:
X i t + 1 = X i t ⋅ ∣ s i n ( R 1 ) ∣ + R 2 ⋅ s i n ( R 1 ) ⋅ ∣ x 1 ⋅ P i t − x 2 ⋅ x i t ∣ (4) X_{i}^{t+1}=X_{i}^{t}·\left | sin(R_{1}) \right |+R_{2}·sin(R_{1})·\left | x_{1}·P_{i}^{t}- x_{2}·x_{i}^{t}\right | \tag4 Xit+1=Xitsin(R1)+R2sin(R1) x1Pitx2xit (4)
其中, t t t为迭代次数, R 1 ∈ [ 0 , 2 π ] R_{1}\in[0,2\pi] R1[0,2π] R 2 ∈ [ 0 , π ] R_{2}\in[0,\pi] R2[0,π] x 1 x_{1} x1 x 2 x_{2} x2为固定值。

3. 部分代码展示

PD_no=30;  %Number of sand cat
F_name='F9';     %Name of the test function
Max_iter=500;           %Maximum number of iterations

[LB,UB,Dim,F_obj]=Get_F(F_name); %Get details of the benchmark functions

[BestScore_SCSO,BestPos_SCSO,Curve_SCSO]=SCSO(PD_no,Max_iter,LB,UB,Dim,F_obj);
[BestScore_ISCSO,BestPos_ISCSO,Curve_ISCSO]=ISCSO(PD_no,Max_iter,LB,UB,Dim,F_obj); 

figure(1);
% Function plot
func_plot(F_name);     
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([F_name,'( x_1 , x_2 )'])
figure(2)       
% Convergence plot
semilogy(Curve_SCSO,'k','linewidth', 1.5)
hold on
semilogy(Curve_ISCSO,'r','linewidth', 1.5)
xlabel('Iteration#');
ylabel('Best fitness so far');
title(F_name);
legend('SCSO','ISCSO');

display(['The best obtained solution by SCSO is : ', num2str(BestPos_SCSO)]);  
display(['The best optimal value of the objective funciton found by SCSO is : ', num2str(BestScore_SCSO)]);  
display(['The best obtained solution by ISCSO is : ', num2str(BestPos_ISCSO)]);  
display(['The best optimal value of the objective funciton found by ISCSO is : ', num2str(BestScore_ISCSO)]); 

4. 仿真结果展示

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

5. 资源获取

可以获取完整代码资源。

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

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

相关文章

国际标准 ISO 11898 解读

从 1993 第一个版 CAN 国际标准(ISO 11898:1993 和 ISO 11519-2)发布至今,ISO 11898 逐渐被分割整合成了相互独立的 6 个部分。分别以 Part 1 ~ Part 6 来标识。在旧版本(2003年之前)中 ISO 11898 是通信速度为 5kbps…

二维笛卡尔坐标系下的角的概念

文章目录 参考环境笛卡尔坐标系二维笛卡尔坐标系三维笛卡尔坐标系 任意角角的静态定义角的动态定义二维笛卡尔坐标系下角的概念方向正角、负角及零角 象限角象限象限角 终边相同角圆心角终边相同角 参考 项目描述搜索引擎Google 、Bing百度百科首页韩庆波正负角佟大大还是ETT【…

前端学习---Vue(6)路由

一、前端路由的概念和原理 Hash地址与组件的对应关系。 Hash:url中#之后的都是Hash地址 location.hash 1.1 前端路由的工作方式 ① 用户点击了页面上的路由链接 ② 导致了 URL 地址栏中的 Hash 值发生了变化 ③ 前端路由监听了到 Hash 地址的变化 ④ 前端路由把当前 Hash…

doris分区、join

动态分区和临时分区 动态分区 旨在对表级别的分区实现生命周期管理(TTL),减少用户的使用负担。 目前实现了动态添加分区及动态删除分区的功能。只支持 Range 分区。原理 在某些使用场景下,用户会将表按照天进行分区划分,每天定时执行例行任…

tidyverse中filter行筛选时缺失值存在的一个坑

大家好,我是邓飞,好久没有更新博客了,是因为好久没有进步了。 之前我认为鲁迅说的对,他在《野草》中写道:“当我沉默着的时候,我觉得充实;我将开口,同时感到空虚”。现在确切的情况…

msvcr90.dll丢失的解决方法

在使用计算机的过程中,我们时常会遇到一些问题,比如应用程序无法正常启动,提示msvcr90.dll文件丢失,这个问题困扰了许多计算机用户。那么,怎么才能解决这个问题呢? 首先,让我们先了解一下msvcr…

c语言编程练习题:7-65 字符串替换

#include <stdio.h>int main() {char c;while (scanf("%c", &c) 1 && c ! \n) {if (c > A && c < Z) {c Z - (c - A);}printf("%c", c);}return 0; }代码来自&#xff1a;https://yunjinqi.top/article/190

Spring:spring-web中DeferredResult执行过程分析

对于HTTP请求的处理&#xff0c;有时处理请求的时间较长&#xff0c;可能会采用异步处理方式来处理。一般常用的异步处理方式是采用DeferredResult&#xff0c;本文会简单分析一下spring-web的整个处理过程。 首先&#xff0c;提供一个简单的DeferredResult例子&#xff1a; R…

C++map和set

目录&#xff1a; 什么是关联式容器&#xff1f;键值对树形结构的关联式容器 set的概念multiset的使用pair和make_pair map的概念用“[]”实现统计水果的次数 multimap的使用 什么是关联式容器&#xff1f; 在初阶阶段&#xff0c;我们已经接触过STL中的部分容器&#xff0c;比…

Centos7 Failed to start login service 问题

最近发现Centos7有个问题&#xff0c;用普通用户登录的时候&#xff0c;打开命令窗口无法进行操作一直卡在那里&#xff0c;但切换到root用户后命令输入又正常。因为我需要从 window 上的 SecureCRT 去连接 Centos7&#xff0c;每次都需要用户登录&#xff0c;然后把防火墙关闭…

TLD7002学习笔记(一)-芯片介绍

文章目录 1. 前言2. TLD7002-16ES简介3. TLD7002-16ES基本功能介绍3.1 引脚和功能框图3.2 状态机3.2.1 正常工作时状态机3.2.2 OTP烧录或者仿真时的状态机 3.3 GPIN0和GPIN1引脚3.4 器件地址3.5 电流配置3.6 PWM配置3.7 并行输出&热降额&热过载保护 TLD7002-16ES诊断功…

高完整性系统:INTRODUCING ADA

目录 1. ADA的历史 2. ADA的特点 2.1 Strong, Static Typing 强语言、强静态类型语言 2.1.1 ADA is Strong, Static Typing 2.1.2 C is Weak, Static Typing 2.2 Module System 2.3 Portable 2.3.1 ADA 2.3.2 C 2.3.3 Cost of Runtime Checking 2.4 Readability …

Java jvm调优

系列文章目录 文章目录 系列文章目录前言JVM 基础面试题11. JDK&#xff0c;JRE以及JVM的关系2. 我们的编译器到底干了什么事&#xff1f;3. 类加载机制是什么&#xff1f;3.1 装载(Load)3.2 链接(Link)验证(Verify)准备(Prepare)解析(Resolve) 3.3 初始化(Initialize) 4. 类加…

chatgpt赋能python:Python三次幂与其应用

Python三次幂与其应用 Python是一种高级编程语言&#xff0c;因其简单易用的语法和广泛应用而备受欢迎。在该语言中&#xff0c;三次幂是其中一个常用操作之一。本文将介绍Python三次幂的概念及其应用&#xff0c;为您带来有价值的参考。 什么是Python三次幂&#xff1f; Py…

KubeSphere 社区双周报 | 杭州 Meetup 报名中 | 2023.05.12-05.25

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者&#xff0c;并对近期重要的 PR 进行解析&#xff0c;同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为&#xff1a;2023.05.12-2023.…

Linux - Java 8 入门安装与重装教程集锦

一、入门初始安装 1. 具体安装教程 1. linux 系统中如何安装java环境&#xff08;通过tar.gz文件&#xff09; 安装包下载链接 Java 的 tar.gz 安装包下载链接传送门 Linux 系统的 Java 环境变量配置教程 1. linux查看java版本&#xff0c;以及配置java home 2. Linux环…

stackqueue

这篇主要讲栈(stack)和队列(queue)&#xff0c;实际要学习的数据结构有三个&#xff1a;stack、queue、priority_queue 这些数据结构已经不属于容器了&#xff0c;而是容器适配器。 list的第二个参数是空间配置器&#xff0c;支持申请空间&#xff1b;而list和queue的第二个参…

Windows下利用Anaconda创建多个CUDA环境

参考 https://blog.csdn.net/qq_42395917/article/details/126237388 https://blog.csdn.net/qq_42406643/article/details/109545766 (待学习补充) https://blog.csdn.net/qq_43919533/article/details/125694437 (待学习补充) 安装cudatoolkit和cudnn # 前提是我已经安装了…

【Python 打包应用发布程序】零基础也能轻松掌握的学习路线与参考资料

Python是一种流行的编程语言&#xff0c;因其易学易用、灵活和高效而受到广泛关注和应用&#xff0c;尤其是在开发Web应用、数据科学和人工智能方面。Python的强大之处在于其丰富的第三方库和工具&#xff0c;可以让开发者轻松地构建复杂的应用程序和脚本工具。但是&#xff0c…

完全掌握git入门到精通各类免费书籍整理

大型软件项目开发&#xff0c;多人群组开发都离不开的版本控制工具 git&#xff0c;命令简单&#xff0c;想要完全掌握却需要付出一点时间。我们将一些评价较高的git免费学习资料网站做了整理&#xff0c;收录到 学习使用git完全指南各种免费书籍分享 完全掌握git入门到精通各…