编程语言
首页 > 编程语言> > 基于改进正弦余弦算法的函数寻优算法

基于改进正弦余弦算法的函数寻优算法

作者:互联网

文章目录

一、理论基础

1、基本正弦余弦算法

正弦余弦算法(SCA)原理简单易实现,仅利用正弦和余弦函数的性质实现对搜索空间的全局探索与局部开发,通过迭代进化不断优化目标函数解集。
假设种群规模为 N N N,搜索空间维度为 D D D,将优化目标问题的每个解映射为搜索空间中每个个体的位置,则第 i ( i = 1 , 2 , ⋯   , N ) i(i=1,2,\cdots,N) i(i=1,2,⋯,N)个个体在 D D D维搜索空间中的位置可表示为 x i = ( x i 1 , x i 2 , ⋯   , x i D ) x_i=(x_{i1},x_{i2},\cdots,x_{iD}) xi​=(xi1​,xi2​,⋯,xiD​)。首先,在搜索空间中随机初始化 N N N个个体位置;然后,根据目标函数计算个体适应度值;最后,选择并保存当代最优个体适应度值及其位置。在算法的每一次迭代中,个体根据式(1)更新位置: x i d t + 1 = { x i d t + r 1 × s i n ( r 2 ) × ∣ r 3 P d t − x i d ∣ , r 4 < 0.5 x i d t + r 1 × c o s ( r 2 ) × ∣ r 3 P d t − x i d ∣ , r 4 ≥ 0.5 (1) x_{id}^{t+1}=\begin{dcases}x_{id}^t+r_1×sin(r_2)×|r_3P_d^t-x_{id}|,\quad r_4<0.5\\x_{id}^t+r_1×cos(r_2)×|r_3P_d^t-x_{id}|,\quad r_4≥0.5\end{dcases}\tag{1} xidt+1​={xidt​+r1​×sin(r2​)×∣r3​Pdt​−xid​∣,r4​<0.5xidt​+r1​×cos(r2​)×∣r3​Pdt​−xid​∣,r4​≥0.5​(1)其中, t t t为当前迭代次数, x i d t x_{id}^t xidt​为第 t t t次迭代时第 i i i个个体在第 d d d维空间中的位置, P d T P_d^T PdT​为第 t t t次迭代后算法在第 d d d维空间的全局最优位置。
在式(1)中有4个主要参数,其中 r 1 r_1 r1​为正弦余弦振幅调节系数,定义如式(2)所示, r 1 r_1 r1​决定着第 i i i个个体下一次迭代的移动方向。 r 2 ∈ [ 0 , 2 π ] , r 3 ∈ [ 0 , 2 ] r_2∈[0,2\pi],r_3∈[0,2] r2​∈[0,2π],r3​∈[0,2]和 r 4 ∈ [ 0 , 1 ] r_4∈[0,1] r4​∈[0,1]均为随机数,其中, r 2 r_2 r2​决定着第 i i i个个体下一次迭代的移动距离; r 3 r_3 r3​为全局最优个体权重系数,当 r 3 > 1 r_3>1 r3​>1时 P d t P_d^t Pdt​在第 t + 1 t+1 t+1次迭代中产生作用,反之则无作用; r 4 r_4 r4​为判别系数,当 r 4 < 0.5 r_4<0.5 r4​<0.5时利用正弦函数式进行迭代寻优,反之则利用余弦函数式进行优化更新。 r 1 = a ( 1 − t / T ) (2) r_1=a(1-t/T)\tag{2} r1​=a(1−t/T)(2)其中, a a a为正常数, T T T为最大迭代次数。

2、改进正弦余弦算法

(1)基于双曲正弦调节因子和动态余弦波权重的位置更新

由式(2)可知,原始 r 1 r_1 r1​为单调递减的线性函数,在平衡算法的全局与局部搜索能力方面表现欠佳,因此,受启发于双曲正弦函数的波形变化,提出一种非线性振幅调节因子 r s i n h r_{sinh} rsinh​,定义为: r s i n h = − T λ ⋅ s i n h ( − ω ⋅ t 3 T 3 ) + θ (3) r_{sinh}=-\frac T\lambda\cdot sinh(-\omega\cdot\frac{t^3}{T^3})+\theta\tag{3} rsinh​=−λT​⋅sinh(−ω⋅T3t3​)+θ(3)其中, λ \lambda λ和 ω \omega ω为调节系数,取值分别为 λ = 5 , ω = 0.01 \lambda=5,\omega=0.01 λ=5,ω=0.01; θ \theta θ为位移量,经多次实验得知 θ \theta θ为1时,算法在基准函数中取得的优化结果及标准差最优,因此本文将其取值定义为 θ = 1 \theta=1 θ=1。
进一步,为了使当代个体位置信息 x i d t x_{id}^t xidt​能随着迭代次数而逐步被充分利用,受启发于余弦函数波形曲线,提出一种动态余弦波惯性权重 k k k,使算法不局限于学习全局最优值而提高收敛精度,定义为: k = γ [ 1 − c o s ( π ⋅ t 5 / T 5 ) ] (4) k=\gamma[1-cos(\pi\cdot t^5/T^5)]\tag{4} k=γ[1−cos(π⋅t5/T5)](4)其中, γ \gamma γ为权重调节因子,取值为0.5。
综上所述,将改进的位置更新式定义为: x i d t + 1 = { k ⋅ x i d t + r s i n h × s i n ( r 2 ) × ∣ r 3 P d t − x i d ∣ , r 4 < 0.5 k ⋅ x i d t + r s i n h × c o s ( r 2 ) × ∣ r 3 P d t − x i d ∣ , r 4 ≥ 0.5 (5) x_{id}^{t+1}=\begin{dcases}k\cdot x_{id}^t+r_{sinh}×sin(r_2)×|r_3P_d^t-x_{id}|,\quad r_4<0.5\\ k\cdot x_{id}^t+r_{sinh}×cos(r_2)×|r_3P_d^t-x_{id}|,\quad r_4≥0.5\end{dcases}\tag{5} xidt+1​={k⋅xidt​+rsinh​×sin(r2​)×∣r3​Pdt​−xid​∣,r4​<0.5k⋅xidt​+rsinh​×cos(r2​)×∣r3​Pdt​−xid​∣,r4​≥0.5​(5)通过式(5)中递减速率变化和动态余弦波自调节机制,实现算法全局探索能力与局部开发能力的平衡。

(2)基于拉普拉斯分布和高斯分布的动态混合变异

首先,引入文献[1]中提出的早熟收敛鉴定方法,以判断算法是否已近似陷入局部极值。定义第 t t t次迭代时所有个体的适应度方差 μ t \mu^t μt为: μ t = ∑ i = 1 N [ ( f i t − f m e a n t ) / f μ t ] (6) \mu^t=\sum_{i=1}^N[(f_i^t-f_{mean}^t)/f_\mu^t]\tag{6} μt=i=1∑N​[(fit​−fmeant​)/fμt​](6)其中, f i t f_i^t fit​为第 i i i个个体在第 t t t次迭代时的适应度值, f m e a n t f_{mean}^t fmeant​为所有个体在第 t t t次迭代时的总适应度值的平均值, f μ t f_\mu^t fμt​为 μ t \mu^t μt的限定因子。 f μ t f_\mu^t fμt​定义为: f μ t = { m a x ∣ f i t − f m e a n t ∣ , m a x ∣ f i t − f m e a n t ∣ > 1 1 ,     o t h e r w i s e (7) f_\mu^t=\begin{dcases}max|f_i^t-f_{mean}^t|,\quad max|f_i^t-f_{mean}^t|>1\\1,\quad\quad\quad\quad\quad \quad\quad \,\,\,otherwise\end{dcases}\tag{7} fμt​={max∣fit​−fmeant​∣,max∣fit​−fmeant​∣>11,otherwise​(7)然后,定义第 t t t次迭代时种群中个体间距 δ t \delta^t δt为: δ t = 1 N L ∑ i = 1 N ∑ d = 1 D ( x i d t − x m e a n t ) 2 (8) \delta^t=\frac1{NL}\sum_{i=1}^N\sqrt{\sum_{d=1}^D(x_{id}^t-x_{mean}^t)^2}\tag{8} δt=NL1​i=1∑N​d=1∑D​(xidt​−xmeant​)2 ​(8)其中, L L L为搜索空间的最大对角长度; d d d为当前搜索空间的维数,取值于 [ 1 , D ] [1,D] [1,D]的整数; x i d t x_{id}^t xidt​为第 i i i个个体在第 t t t代时于第 d d d维空间的位置; x m e a n t x_{mean}^t xmeant​为所有个体在第 t t t代时于第 d d d维空间的位置平均值。
由于算法达到全局收敛或发生早熟收敛时,种群中个体都将聚集靠拢,即种群适应度方差 μ t \mu^t μt和个体间距 δ t \delta^t δt取值均接近于0,因此,为了确实区分两种收敛状态,设当 μ t < 1 0 − 6 \mu^t<10^{-6} μt<10−6且 δ t < 1 0 − 3 \delta^t<10^{-3} δt<10−3同时满足时,则判定算法已陷入局部最优。
最后,提出一种随迭代次数动态自适应调整的拉普拉斯与高斯混合变异策略,能在判定算法近似早熟收敛的同时,使其有效跳出局部极值。为了有效利用搜索空间中更多的随机数,设拉普拉斯分布 L a p ( a , b ) Lap(a,b) Lap(a,b)中参数 a = 1 , b = 2 a=1,b=2 a=1,b=2;高斯分布 G ( m , n ) G(m,n) G(m,n)中参数 m = 0 , n = 1 m=0,n=1 m=0,n=1,因此,将基于动态混合策略的变异更新式定义为: x i d t + 1 = [ w 1 ⋅ L a p ( 1 , 2 ) + w 2 ⋅ G ( 0 , 1 ) + 1 ] ⋅ x i d t { w 1 = 1 − t 3 / T 3 w 2 = t 3 / T 3 (9) \begin{aligned}&x_{id}^{t+1}=[w_1\cdot Lap(1,2)+w_2\cdot G(0,1)+1]\cdot x_{id}^t\\ &\begin{dcases}w_1=1-t^3/T^3\\w_2=t^3/T^3\end{dcases}\end{aligned}\tag{9} ​xidt+1​=[w1​⋅Lap(1,2)+w2​⋅G(0,1)+1]⋅xidt​{w1​=1−t3/T3w2​=t3/T3​​(9)已知拉普拉斯随机数 L a p ( 1 , 2 ) Lap(1,2) Lap(1,2)相比高斯随机数 G ( 0 , 1 ) G(0,1) G(0,1)有更大的波动范围,在式(9) 中, L a p ( 1 , 2 ) Lap(1,2) Lap(1,2)的权重系数 w 1 w_1 w1​在前期取值相对较大,使算法能利用更多的随机数,并以较大变异步长在搜索空间中探索未知更优解;在优化后期,种群将收敛至最优解邻域,且随着算法迭代进化, w 1 w_1 w1​逐渐减小,而 G ( 0 , 1 ) G(0,1) G(0,1)的权重系数 w 2 w_2 w2​不断增大,而 G ( 0 , 1 ) G(0,1) G(0,1)较小的变异步长,便于算法在最优解邻域搜索更优解,在增强算法局部开发能力的同时,对算法后期收敛速度影响较小。

二、算法流程图

在这里插入图片描述

图1 动态混合变异策略流程

三、仿真实验与结果分析

实验中,设置ESCA的种群规模为 N = 30 N=30 N=30,最大迭代次数为 T = 500 T = 500 T=500;每组实验独立运行50次,取平均函数值进行对比展示。以F1、F2、F3为例。
在这里插入图片描述

图2 F1

在这里插入图片描述

图3 F2

在这里插入图片描述

图4 F3

综上所述,通过在不同形态函数上的优化实验,结果表明ESCA相比GSA、WOA、基本SCA及其改进算法,具有更高的收敛精度、更快的收敛速度和更好的鲁棒性,验证了改进策略的有效性及优越性。

四、参考文献

[1] Dai Y , Wei Y , Jian C , et al. Seismic Wavelet Estimation Based on Adaptive Chaotic Embedded Particle Swarm Optimization Algorithm[C]// Fifth International Symposium on Computational Intelligence & Design. IEEE Computer Society, 2012.
[2] 何庆, 徐钦帅, 魏康园. 基于改进正弦余弦算法的无线传感器节点部署优化[J]. 计算机应用, 2019(7).

五、Matlab仿真程序

下载地址:
https://download.csdn.net/download/weixin_43821559/18359856

标签:迭代,寻优,正弦,个体,算法,quad,余弦
来源: https://blog.csdn.net/weixin_43821559/article/details/116379200