基于采蜜机制的正弦余弦算法
文章目录
- 一、理论基础
- 1、标准正弦余弦算法
- 2、基于采蜜机制的正弦余弦算法
- (1)每个个体采用相同的参数r1r_1r1、r2r_2r2、r3r_3r3和r4r_4r4
- (2)按幂递减函数自适应调整参数r1r_1r1
- (3)动态调整参数r3r_3r3
- (4)贪婪选择策略
- (5)蜂群采蜜机制
- (6)更改空间位置更新方程
- 3、改进算法的具体步骤
- 二、仿真实验与分析
- 三、参考文献
一、理论基础
1、标准正弦余弦算法
请参考这里。
2、基于采蜜机制的正弦余弦算法
(1)每个个体采用相同的参数r1r_1r1、r2r_2r2、r3r_3r3和r4r_4r4
由于SCA在一次迭代中,r1r_1r1本身是采用统一的计算公式,即所有个体都采用相同的r1r_1r1。因此,将SCA中参数r2r_2r2、r3r_3r3和r4r_4r4的位置从每个个体的维度循环内改为维度循环外,使每个个体采用相同的参数r1r_1r1、r2r_2r2、r3r_3r3和r4r_4r4,并使每个个体的所有维度以相同方式与比例进行搜索,提高算法的搜索效率。参数位置调整后种群多样性有所降低,之后采用侦察蜂算子以提高种群多样性。另外,参数r1r_1r1采用幂递减函数自适应调整,平衡算法的全局探索能力和局部开发能力。
(2)按幂递减函数自适应调整参数r1r_1r1
本文调整参数r1r_1r1为幂递减函数,表达式见公式(1):r1=a×[1−(tT)s](1)r_1=a×\left[1-\left(\frac tT\right)^s\right]\tag{1}r1=a×[1−(Tt)s](1)其中,sss为调整参数,主要作用是调整非线性幂递减函数的下降速率。
图1反映了算法在最大迭代次数为1000时参数r1r_1r1按线性递减函数(SCA)、指数递减函数(ESCA)和幂递减函数的变化趋势。从图中可以看出,在算法的整个迭代过程中,标准SCA曲线是匀速下降的。相比标准SCA,ESCA曲线随着迭代次数的增加,r1r_1r1逐渐变小,与SCA下降规律相似,体现出算法全局探索能力和局部开发能力的有机协调;SCAHGM曲线与SCA下降规律不同,在前期迭代次数最小,r1r_1r1较大,当迭代次数大于500时,曲线出现转折,之后执行算法的局部开发阶段,中后期随着迭代次数的持续增加,r1r_1r1非线性递减,逐渐为0,体现出算法在前期全局探索能力最强,到中后期局部开发能力增强。
由于标准SCA中正余弦算子具有优异的全局探索能力,但局部开发能力较弱,因此本文调整参数r1r_1r1为幂递减函数以更好地平衡算法的全局探索能力和局部开发能力。
图1 r1r_1r1递减曲线对比图
(3)动态调整参数r3r_3r3
算法前期,r3r_3r3在[0,2][0,2][0,2]之间随机取值,有利于算法的全局搜索,但到中后期既要注重算法的全局探索能力,更要加强算法的局部开发能力,同时要发挥目标最优解对优化过程的实际引导作用,提高算法的优化精度。因此,在算法中后期,r3r_3r3以一定概率取常数1,减少随机性,加快算法的搜索速度。参数r3r_3r3的调整策略详见公式(2):r3={1t>T⋅ξand rand(0,1)<ψrand(0,2)otherwise(2)r_3=\begin{dcases}1\quad\quad\quad\quad\,\,\,\, t>T\cdot\xi\text{ and rand(0,1)}<\psi\\\text{rand(0,2)}\quad \text{otherwise}\end{dcases}\tag{2}r3={1t>T⋅ξ and rand(0,1)<ψrand(0,2)otherwise(2)其中,ξ\xiξ和ψ\psiψ分别为[0,1][0,1][0,1]之间的调整参数和随机数。
(4)贪婪选择策略
根据个体iii的空间位置XiX_iXi和按更新策略产生的新个体空间位置new_Xinew\_X_inew_Xi的函数值f(⋅)f(\cdot)f(⋅),选择较优个体进入下一代。对于最小化问题,其选择策略按公式(3)进行,同时按照公式(4)更新limitlimitlimit。Xit+1={new_Xit,f(new_Xit)<f(Xit)Xit,f(new_Xit)≥f(Xit)(3)X_i^{t+1}=\begin{dcases}new\_X_i^t,\quad f(new\_X_i^t)<f(X_i^t)\\X_i^t,\quad\quad\quad\,\, f(new\_X_i^t)≥f(X_i^t)\end{dcases}\tag{3}Xit+1={new_Xit,f(new_Xit)<f(Xit)Xit,f(new_Xit)≥f(Xit)(3)limit={limit+1,f(new_Xit)≥f(Xit)0,f(new_Xit)<f(Xit)(4)limit=\begin{dcases}limit+1,\quad f(new\_X_i^t)≥f(X_i^t)\\0,\quad\quad\quad\quad\,\,\, f(new\_X_i^t)<f(X_i^t)\end{dcases}\tag{4}limit={limit+1,f(new_Xit)≥f(Xit)0,f(new_Xit)<f(Xit)(4)
(5)蜂群采蜜机制
本文利用ABC算法中的采蜜蜂算子增强SCA的局部开发能力,提高算法的优化精度。在迭代过程中,以一定概率交替执行正余弦算子或采蜜蜂算子,同时利用侦察蜂算子防止算法陷入局部极值,提高全局探索能力,较好地平衡SCA的全局探索和局部开发阶段。
- 采蜜蜂采蜜行为
采蜜蜂算子具有较强的局部开发能力,采蜜蜂根据搜索公式(5)进行邻域搜索并产生新蜜源,同时评估其质量,再采用贪婪选择策略更新蜜源。new_Xi=Xi+rand()(Xi−Xk)(5)new\_X_i=X_i+\text{rand()}(X_i-X_k)\tag{5}new_Xi=Xi+rand()(Xi−Xk)(5)其中,rand()\text{rand()}rand()为[−1,1][-1,1][−1,1]之间的随机数,k∈{1,2,⋯,N}k\in\{1,2,\cdots,N\}k∈{1,2,⋯,N},kkk随机选取,且k≠ik≠ik=i,NNN为蜜蜂总数。 - 侦察蜂行为
侦察蜂主要搜寻在蜂巢周围潜在的蜜源。当连续停留的次数limitlimitlimit达到一定的阈值LimitLimitLimit仍未找到更优空间位置时,即表明陷入了局部最优,此后蜜蜂的角色由采蜜蜂或观察蜂转变为侦察蜂,并按照随机分布重新搜索随机产生新蜜源。
(6)更改空间位置更新方程
因正弦函数sin(r2)\sin(r_2)sin(r2)取正值和负值的概率相等,去掉位置更新方程中的绝对值符号也无妨,故本文引入该方法并将空间位置更新方程改写为:Xijt+1={Xijt+r1×sin(r2)×(r3Pjt−Xijt)r4<0.5Xijt+r1×cos(r2)×(r3Pjt−Xijt)r4≥0.5(6)X_{ij}^{t+1}=\begin{dcases}X_{ij}^t+r_1×\sin(r_2)×\left(r_3P_j^t-X_{ij}^t\right)\quad r_4<0.5\\X_{ij}^t+r_1×\cos(r_2)×\left(r_3P_j^t-X_{ij}^t\right)\,\,\,\,\, r_4≥0.5\end{dcases}\tag{6}Xijt+1={Xijt+r1×sin(r2)×(r3Pjt−Xijt)r4<0.5Xijt+r1×cos(r2)×(r3Pjt−Xijt)r4≥0.5(6)
3、改进算法的具体步骤
SCAHGM的具体步骤如下:
Step1:初始化参数,如种群规模NNN,空间维度DDD,阈值LimitLimitLimit,当前迭代次数iteriteriter,最大迭代次数maxCyclemaxCyclemaxCycle及常数aaa等,随机产生初始种群;
Step2:计算种群中每个个体的函数值,并记录全局最优解;
Step3:根据一定的概率PPP判断执行正余弦算子阶段还是采蜜蜂算子阶段。若执行正余弦算子阶段,转向Step4,否则,执行采蜜蜂算子阶段,转向Step5;
Step4:在正余弦算子阶段,随机产生参数r2r_2r2和r4r_4r4,并根据公式(1)(2)计算参数r1r_1r1和r3r_3r3的值,随后再以公式(6)更新每个个体的空间位置,转向Step6;
Step5:在采蜜蜂算子阶段,根据公式(5)产生新蜜源;
Step6:根据目标函数计算每个个体的函数值;
Step7:执行贪婪选择策略,按照公式(3)更新每个个体,按照公式(4)更新limitlimitlimit;
Step8:更新全局最优解;
Step9:执行侦察蜂算子,若搜索限制次数达到LimitLimitLimit,采蜜蜂变为侦察蜂,并随机产生新蜜源。
Step10:是否达到算法设定的收敛条件(如maxCyclemaxCyclemaxCycle或目标精度)?若是,停止迭代并输出最优值,否则转向Step3。
二、仿真实验与分析
为了测试SCAHGM的性能,本文将其与标准SCA进行对比。实验中,算法种群规模N=30N=30N=30,维度D=30D=30D=30,对应的最大迭代次数maxCycle=1000maxCycle=1000maxCycle=1000,常数a=2a=2a=2。SCAHGM中其他参数设置:Limit=140,ξ=0.5,ψ=0.6,P=0.5Limit=140,\xi=0.5,\psi=0.6,P=0.5Limit=140,ξ=0.5,ψ=0.6,P=0.5。本文以文献[1]中F5、F6(单峰)、F8、F11(多峰)、F15、F23(固定维度多峰)为例。两种算法独立运行30次。
结果显示如下:
函数:F5
SCA:最优值: 27.5307,最差值:2943.9893,平均值:264.7663,标准差:568.1974
SCAHGM:最优值: 22.8522,最差值:24.9662,平均值:23.9555,标准差:0.51126
函数:F6
SCA:最优值: 3.9369,最差值:5.8304,平均值:4.4979,标准差:0.36139
SCAHGM:最优值: 3.3056e-08,最差值:3.3673e-06,平均值:6.0237e-07,标准差:7.5355e-07
函数:F8
SCA:最优值: -5223.2657,最差值:-3457.9833,平均值:-3989.088,标准差:422.5731
SCAHGM:最优值: -11641.5852,最差值:-7130.3083,平均值:-9813.1442,标准差:1088.7876
函数:F11
SCA:最优值: 0.00084329,最差值:0.97721,平均值:0.33125,标准差:0.30445
SCAHGM:最优值: 0,最差值:0,平均值:0,标准差:0
函数:F15
SCA:最优值: 0.00032097,最差值:0.0015488,平均值:0.0010401,标准差:0.000408
SCAHGM:最优值: 0.00030749,最差值:0.0012232,平均值:0.00044131,标准差:0.00031843
函数:F23
SCA:最优值: -9.8707,最差值:-0.94368,平均值:-3.8102,标准差:2.0455
SCAHGM:最优值: -10.5364,最差值:-5.1285,平均值:-8.8252,标准差:2.448
结果表明,SCAHGM较标准SCA具有更佳的寻优性能。
三、参考文献
[1] 王联国, 刘小娟. 基于采蜜机制的正弦余弦算法及其在机械优化设计中的应用[J]. 中国机械工程, 2021, 32(21): 2577-2589.
基于采蜜机制的正弦余弦算法相关推荐
- 基于改进正弦余弦算法的函数寻优算法
文章目录 一.理论基础 1.基本正弦余弦算法 2.改进正弦余弦算法 (1)基于双曲正弦调节因子和动态余弦波权重的位置更新 (2)基于拉普拉斯分布和高斯分布的动态混合变异 二.算法流程图 三.仿真实验与 ...
- 【智能优化算法-正弦余弦算法】基于反向正弦余弦算法求解高维优化问题附matlab代码
1 内容介绍 提出一种改进的正弦余弦算法(简记为ISCA).受粒子群优化(PSO)算法的启发,引入惯性权重以提高正弦余弦算法的收敛精度和加快收敛速度.此外,采取反向学习策略产生初始个体以提高种群的多样 ...
- 求解高维优化问题的改进正弦余弦算法
文章目录 一.理论基础 1.正弦余弦算法 2.改进的正弦余弦算法 (1)反向学习初始化 (2)修改个体位置更新方程 (3)算法步骤 二.仿真实验与结果分析 1.测试函数 2.实验结果 (1)和原始SC ...
- (SCA)正弦余弦算法SCA: A Sine Cosine Algorithm(代码可复制粘贴)
[优化算法]正弦余弦算法(SCA):SCA: A Sine Cosine Algorithm 论文题目:SCA is a novel algorithm for solving single-obje ...
- 【FPGA教程案例2】基于vivado核的NCO正弦余弦发生器设计与实现
FPGA教程目录 MATLAB教程目录 -------------------------------------------------------------------------------- ...
- MATLAB算法实战应用案例精讲-【智能优化算法】 正弦余弦算法(SCA)(附MATLAB和Python代码实现)
目录 前言 算法原理 数学模型 算法思想 算法步骤
- 自学习策略和Levy飞行的正弦余弦优化算法-附代码
自学习策略和Levy飞行的正弦余弦优化算法 文章目录 自学习策略和Levy飞行的正弦余弦优化算法 1.正余弦算法 2. 改进的正弦余弦优化算法 2.1 自学习策略 2.2 停滞扰动策略 3.实验结果 ...
- 自学习策略和Lévy飞行的正弦余弦优化算法
文章目录 一.理论基础 1.正弦余弦优化算法 2.改进的正弦余弦优化算法 (1)自学习策略 (2)停滞扰动策略 (3)SCASL寻优步骤 二.仿真结果及分析 三.参考文献 一.理论基础 1.正弦余弦优 ...
- 混合正弦余弦算法和 Lévy飞行的麻雀算法-附代码
混合正弦余弦算法和 Lévy飞行的麻雀算法 文章目录 混合正弦余弦算法和 Lévy飞行的麻雀算法 1.麻雀搜索算法 2. 改进麻雀算法 2.1 融合正弦余弦算法(SCA)思想 2.2 Lévy飞行策略 ...
最新文章
- 基于Android和WI-FI通信的智能家居系统
- java不使用IDE导入json
- 解决ueditor jquery javascript 取值问题
- Java数组相关知识
- MySQL筛选重复数据
- 新上线的APP怎样推广才更获客呢?
- REVIT插件 | 建模助手这次的版本更新,BIMer都笑了
- 阿里云P10技术专家褚霸:我是一个程序员
- C/C++犯二程度计算
- 嵌入式物联网软件开发实战系列(STM32+FreeRTOS)
- 2018个人年度总结:我是如何从嵌入式开发到服务器开发对接天猫精灵、小爱智能音箱服务器!懵懂 | 奋斗 | 进阶 | 信心
- 特价机票退票费高达80% 律师称航班延误应补偿-特价机票-退票费-霸王条款
- 2022年CISP证书有啥用
- 2021年危险化学品生产单位安全生产管理人员考试题及危险化学品生产单位安全生产管理人员最新解析
- 如何用代码设置滚动条的位置?
- 圣思园——Java SE Lesson 16
- H3C WLAN基本配置
- hdu 1170 Balloon Comes!(水题)
- openldap备份脚本
- 物理层一致性(Compliance)测试
热门文章
- 锐龙R7 4750U 怎么样 相当于什么水平
- JVM虚拟机面试典籍30+ | 大别山码将
- VS2012中自定义工具“MyApplicationCodeGenerator”与文件“My Project\Application.myapp”相关联,但在项目中找不到该自定义工具的输出
- (简单)华为荣耀9i LLD-AL20的Usb调试模式在哪里开启的方法
- 关于企业战略管理的书,这些经典教材值得推荐
- 鬼谷八荒流派收集(1)流血风剑
- Webstorm Chinese Language教程,简单有效
- java static int_Java中static关键字概述
- Exposure Fusion
- 碧蓝航线怎么注销服务器,碧蓝航线三大服务器暂时关闭注册 防初始号炸服 提前做好防护工作...