三种策略改进的沙猫群优化算法(MSCSO),与白鲸、蜣螂、麻雀等多种算法进行比较,MATLAB代码...

本文主要是介绍三种策略改进的沙猫群优化算法(MSCSO),与白鲸、蜣螂、麻雀等多种算法进行比较,MATLAB代码...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

沙猫群优化算法(sand cat swarm optimiza⁃ tion,SCSO)是 2022年提出的元启发式优化算法,该算法灵感来源于沙猫的捕食行为,沙猫群会通过搜索阶段和捕食阶段获得食物。其中算法额外使用自适应的rG和R以达到搜索阶段和捕食阶段的无缝 切换。该算法具有寻优能力强、收敛速度快等特点,但仍存在全局探索能力较弱、算法后期易陷入局部最优等缺点。

此文复现一篇于2022年十月由Di Wu提出的沙猫群优化算法(MSCSO),文献采用三种策略对SCSO算法进行改进:三角形游走策略Levy飞行游走策略透镜成像反向学习。三种策略同样适合改进其他任意的智能优化算法。

Part 1 SCSO原理介绍

  • 种群初始化

与所有的元启发式优化算法一样,SCSO算法首先在范围内生成一个均匀分布的随机种群。初始化的具体的公式为:

09178122c9e69d41d5a61406a461db32.png

  • 搜索阶段

沙猫的猎物搜索机制依赖于低频噪声发射 .每只沙猫的表达式为 Xi=(xi1,xi2,xi3,⋯,xid )。前面提到,沙猫可以感知低于2 kHz的低频,在数学模型中,这个值将随着迭代过程的进行从2线性地降低为0,以达到逐渐靠近猎物而不会丢失或跳过的作用。因此为了搜索猎物,假设沙猫的敏感范围为2 kHz到0,SM 模拟了沙猫的听觉特性,其值为2,即

b3680de88b00bbffa1bae32ad3089743.png

其中:t是当前迭代次数;T是最大迭代次数。在搜索步骤中,每个当前搜索代理的位置更新都是基于一个随机位置.这样,搜索代理就能够在搜索空间中探索新的空间。为避免陷入局部最优,每只沙猫的灵敏度范围是不同的,即

74b32e8e39b7f32ef74a5ad38b345659.png

每只沙猫会根据最优解Pbc、自己当前位置Pc和其灵敏度范围r 更新自己的位置.因此沙猫能找到其他最好的猎物位置,新的位置位于当前位置和猎物位置之间,同时随机性保证了算法的低运行成本和低复杂度。

049be2b62021a157dd07eefded8b5059.png

  • 捕食阶段

最优位置Pb与当前位置Pc的距离的计算式为:

04ede561bbbc5c20b2ffd9b56f39f755.png

同时假设沙猫的灵敏度范围是一个圆,这样移动的方向就可以通过圆上的一个随机角度θ确定。由于所选的随机角度在0°到360°之间,所以其值将在−1到1之间。群体中的每个成员都能够在搜索空间中沿着不同的圆周方向移动,移动的距离为Pmd。SCSO算法利用轮盘选择算法为每只沙猫选择一个随机角度,用这种方法,沙猫可以接近狩猎位置,从而达到避免陷入局部最优的效果。迭代过程中的位置更新如图。

7353110adcc13d3b1d5993e88e8efb26.png

  • 平衡机制 

控制搜索阶段和捕食阶段之间转换的主要参数是R,其允许SCSO在两个阶段之间无缝切换。当|R|≤1时,沙猫的下一个位置可以是当前位置与狩猎位置之间的任意位置,否则沙猫的任务是在全局寻找一种新的可能的解决方案 。R和X(t+1)计算式为:

4b759c14b38b2057b9cd5e99ecd49e1a.png

Part 2 改进策略原理介绍

  • 三角形游走策略

在沙猫进行搜索过程中,沙猫会逐渐的向猎物靠近。三角游走策略是沙猫在靠近猎物的同时在周围进行游走。首先,得到沙猫和猎物之间的距离L1,在获得沙猫游走的步长范围L2。

c6cf3f4cc34bc5f95f07c9a4956dd135.png

6477008104fa955d874c614d2ca5c714.png

之后,根据下述公式定义行走的方向f9a6c1540891e52159d8d67b23988e2d.png

0cb5feab5bd7dccb117f1ccbd4aedb38.png

再采用下述公式求出获得沙猫游走后得到的位置。

92d5824e215837c076887f3087db0647.png

b16a7b89adbb57389709486dab28e111.png

  • Levy飞行游走策略

在攻击猎物时,沙猫与猎物的距离十分的接近。Levy飞行是一种非常有效的提供随机因子的数学方法。Levy飞行可以提供步长符合Levy分布的随机游走方法。但Levy飞行有时步长过长,为了更加符合沙猫攻击猎物的行为,在Levy飞行乘以常数 C=0.35,从而减少步长,使沙猫尽可能在猎物旁边进行游走。Levy飞行游走策略的公式如下所示。

9759788164bf7115d7b2ed780ed9c1be.png

  • 透镜成像反向学习策略

透镜成像反向学习主要的思想是以当前坐标为基准通过凸透镜成像的原理生成一个反向位置来扩大搜索范围,这样可以既能跳出当前位置,又可以扩大搜索范围,提高了种群的多样性。基于透镜成像原理的反向学习公式如下:

300ac2c5e8cf8863935955af28a1dad6.png

Part 3 结果展示

同样是在CEC2005函数集上进行测试,将改进的沙猫群优化算法(MSCSO)与白鲸优化算法(BWO),蜣螂优化算法(DBO),麻雀优化算法(SSA),霜冰优化算法(RIME),沙猫群优化算法(SCSO)共六种优化算法进行对比。实验结果如下:

1e62e181f231248dd173b27f90aefbd6.png

0f63c19e1ee35cac7fdb0df7a44201a9.png

c3bc784edc3c1595042181656f697e66.png

346048981423d3d2994907e2ac18124c.png

2a6808917e0cd5d7cab1d2e63420ea28.png

bc082afc3e3a915c5dd553247ab813f4.png

0497f09e885233e558e735c26fcced14.png

随机挑选了几个函数,经过测试效果还是相当不错的,经受住了来自五种算法的考验。

Part 4 代码展示

clear all 
clcPD_no=100;      %Number of sand cat
F_name='F2';     %Name of the test function
Max_iter=1000;    %Maximum number of iterations
[LB,UB,Dim,F_obj]=CEC2005(F_name); %Get details of the benchmark functions%% BWO    
[Best_pos,Best_score, BWO_cg_curve ] = BWO(PD_no,Max_iter,LB,UB,Dim,F_obj); % Call BWO
fprintf ('Best solution obtained by BWO: %s\n', num2str(Best_score,'%e  '));
display(['The best optimal value of the objective funciton found by BWO  for ' [num2str(F_name)],'  is : ', num2str(Best_pos)]);%% DBO    
[Best_pos,Best_score, DBO_cg_curve ] = DBO(PD_no,Max_iter,LB,UB,Dim,F_obj); % Call DBO
fprintf ('Best solution obtained by DBO: %s\n', num2str(Best_score,'%e  '));
display(['The best optimal value of the objective funciton found by DBO  for ' [num2str(F_name)],'  is : ', num2str(Best_pos)]);%% SSA    
[Best_pos,Best_score, SSA_cg_curve ] = SSA(PD_no,Max_iter,LB,UB,Dim,F_obj); % Call SSA
fprintf ('Best solution obtained by SSA: %s\n', num2str(Best_score,'%e  '));
display(['The best optimal value of the objective funciton found by SSA  for ' [num2str(F_name)],'  is : ', num2str(Best_pos)]);%% RIME    
[Best_pos,Best_score, RIME_cg_curve ] = RIME(PD_no,Max_iter,LB,UB,Dim,F_obj); % Call RIME
fprintf ('Best solution obtained by RIME: %s\n', num2str(Best_score,'%e  '));
display(['The best optimal value of the objective funciton found by RIME  for ' [num2str(F_name)],'  is : ', num2str(Best_pos)]);%% SCSO
[BsSCSO,BpSCSO,SCSO_cg_curve]=SCSO(PD_no,Max_iter,LB,UB,Dim,F_obj); % Call MSCSO
fprintf ('Best solution obtained by SCSO: %s\n', num2str(BsSCSO,'%e  '));
display(['The best optimal value of the objective funciton found by SCSO  for ' [num2str(F_name)],'  is : ', num2str(BpSCSO)]);%% MSCSO
[Best_PD,PDBest_P,MSCSO_cg_curve]=MSCSO(PD_no,Max_iter,LB,UB,Dim,F_obj); % Call MSCSO
fprintf ('Best solution obtained by MSCSO: %s\n', num2str(Best_PD,'%e  '));
display(['The best optimal value of the objective funciton found by MSCSO  for ' [num2str(F_name)],'  is : ', num2str(PDBest_P)]);CNT=40;
k=round(linspace(1,Max_iter,CNT)); %随机选CNT个点
% 注意:如果收敛曲线画出来的点很少,随机点很稀疏,说明点取少了,这时应增加取点的数量,100、200、300等,逐渐增加
% 相反,如果收敛曲线上的随机点非常密集,说明点取多了,此时要减少取点数量
iter=1:1:Max_iter;
figure('Position',[154   145   894   357]);
subplot(1,2,1);
func_plot(F_name);     % Function plot
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([F_name,'( x_1 , x_2 )'])
subplot(1,2,2);       % Convergence plot
h1 = semilogy(iter(k),SCSO_cg_curve(k),'m-^','linewidth',1);
hold on
h2 = semilogy(iter(k),DBO_cg_curve(k),'b-*','linewidth',1);
hold on
h3 = semilogy(iter(k),SSA_cg_curve(k),'k-s','linewidth',1);
hold on
h4 = semilogy(iter(k),RIME_cg_curve(k),'r-o','linewidth',1);
hold on
h5 = semilogy(iter(k),BWO_cg_curve(k),'y-+','linewidth',1);
hold on
h6 = semilogy(iter(k),MSCSO_cg_curve(k),'g-p','linewidth',1);
xlabel('Iteration#');
ylabel('Best fitness so far');
legend('SCSO','DBO','SSA','RIME','BWO','MSCSO');

参考文献

[1] Di Wu, Honghua Rao, Changsheng Wen, et al. Modified Sand Cat Swarm Optimization Algorithm for SolvingConstrained Engineering Optimization Problems[J]. Mathematics. 2022, 10(22), 4350.

[2]贾鹤鸣,王琢,文昌盛等.改进沙猫群优化算法的无人机三维路径规划[J].宁德师范学院学报(自然科学版),2023,35(02):171-179.

完整代码获取方式:点击下方卡片,后台回复关键字,不区分大小写

关键字:MSCSO

这篇关于三种策略改进的沙猫群优化算法(MSCSO),与白鲸、蜣螂、麻雀等多种算法进行比较,MATLAB代码...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/461703

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi