本文主要是介绍求解函数优化问题的改进鲸鱼优化算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 一、理论基础
- 1、基本鲸鱼优化算法
- 2、改进鲸鱼优化算法
- (1)自适应非线性位置更新
- (2)引入差分变异操作
- 二、EWOA算法流程图
- 三、仿真实验与结果分析
- 四、参考文献
一、理论基础
1、基本鲸鱼优化算法
请参考这里。
2、改进鲸鱼优化算法
(1)自适应非线性位置更新
本文将自适应策略引入WOA算法的位置更新公式中,加快算法收敛速度、提高算法的寻优精度。具体公式如下: X → ( t + 1 ) = S 1 ⋅ X → ∗ ( t ) − S 2 ⋅ A → ⋅ D → , ∣ A ∣ < 1 p < 0.5 (1) \overrightarrow X(t+1)=S_1\cdot\overrightarrow X^*(t)-S_2\cdot\overrightarrow A\cdot\overrightarrow D,\quad |A|<1\,\,\, p<0.5\tag{1} X(t+1)=S1⋅X∗(t)−S2⋅A⋅D,∣A∣<1p<0.5(1) X → ( t + 1 ) = S 1 ⋅ X → r a n d ( t ) − S 2 ⋅ A → ⋅ D → , ∣ A ∣ ≥ 1 p < 0.5 (2) \overrightarrow X(t+1)=S_1\cdot\overrightarrow X_{rand}(t)-S_2\cdot\overrightarrow A\cdot\overrightarrow D,\quad |A|≥1\,\,\, p<0.5\tag{2} X(t+1)=S1⋅Xrand(t)−S2⋅A⋅D,∣A∣≥1p<0.5(2) X → ( t + 1 ) = S 1 ⋅ X → ∗ ( t ) + D → ′ ⋅ e b l ⋅ c o s ( 2 π l ) , p ≥ 0.5 (3) \overrightarrow X(t+1)=S_1\cdot\overrightarrow X^*(t)+\overrightarrow D'\cdot e^{bl}\cdot cos(2\pi l),\quad p≥0.5\tag{3} X(t+1)=S1⋅X∗(t)+D′⋅ebl⋅cos(2πl),p≥0.5(3)其中, S 1 S_1 S1和 S 2 S_2 S2分别为当前最优位置和包围步长的自适应调整系数,具体公式表示为: S 1 = − γ ⋅ [ c o s ( π ⋅ t T ) − λ ] (4) S_1=-\gamma\cdot[cos(\pi\cdot \frac tT)-\lambda]\tag{4} S1=−γ⋅[cos(π⋅Tt)−λ](4) S 2 = γ ⋅ [ c o s ( π ⋅ t T ) + λ ] (5) S_2=\gamma\cdot[cos(\pi\cdot\frac tT)+\lambda]\tag{5} S2=γ⋅[cos(π⋅Tt)+λ](5)其中, γ \gamma γ表示 S 1 S_1 S1和 S 2 S_2 S2变化取值范围; λ \lambda λ表示 S 1 S_1 S1和 S 2 S_2 S2取值步长,其取值分别为0.5和1。
从式(4)和式(5)不难看出,自适应调整系数 S 1 S_1 S1随着算法迭代进化呈非线性增大趋势,使种群能够充分朝向精英猎物位置移动;而 S 2 S_2 S2随着算法迭代进化而不断减小,使种群在进化后期具有较小的包围步长而加快收敛速度,从而实现算法全局探索与局部搜索能力的平衡,同时加快算法收敛速度,提高算法的寻优精度。
(2)引入差分变异操作
本文针对WOA算法容易陷入局部最优这一问题,引入差分变异思想,改善算法易陷入局部最优及出现早熟收敛现象。
差分变异思想具体描述如下:
(1)变异操作
选取当前种群中较优的鲸鱼个体进行变异,能够有效扩大算法的搜索域,避免算法陷入局部最优。具体操作如下: V → i ( t + 1 ) = X → i ( t ) + F ( X → r 1 ( t ) − X → r 2 ( t ) ) (6) \overrightarrow V_i(t+1)=\overrightarrow X_i(t)+F(\overrightarrow X_{r_1}(t)-\overrightarrow X_{r_2}(t))\tag{6} Vi(t+1)=Xi(t)+F(Xr1(t)−Xr2(t))(6)其中, V → i ( t + 1 ) \overrightarrow V_i(t+1) Vi(t+1)表示变异后的第 i i i只鲸鱼的位置; F F F表示缩放比例因子; X → r 1 ( t ) − X → r 2 ( t ) \overrightarrow X_{r_1}(t)-\overrightarrow X_{r_2}(t) Xr1(t)−Xr2(t)表示当前迭代次数下鲸鱼位置的差异向量。
(2)选择操作
选择操作是将变异后的新个体与原始个体进行比较,判断其适应度值是否较优,如果较优,则保留,否则舍弃。差分进化算法中通常采用贪婪选择,具体公式如下: X → i ( t + 1 ) = { V → i ( t + 1 ) , f i t ( V → i ( t + 1 ) ) < f i t ( X → i ( t ) ) X → i ( t + 1 ) , f i t ( V → i ( t + 1 ) ) ≥ f i t ( X → i ( t ) ) (7) \overrightarrow X_i(t+1)=\begin{dcases}\overrightarrow V_i(t+1),\quad fit(\overrightarrow V_i(t+1))<fit(\overrightarrow X_i(t))\\\overrightarrow X_i(t+1),\quad fit(\overrightarrow V_i(t+1))≥fit(\overrightarrow X_i(t))\end{dcases}\tag{7} Xi(t+1)={Vi(t+1),fit(Vi(t+1))<fit(Xi(t))Xi(t+1),fit(Vi(t+1))≥fit(Xi(t))(7)
二、EWOA算法流程图
三、仿真实验与结果分析
实验中,设置算法的种群规模为 N = 30 N=30 N=30,最大迭代次数为 T = 500 T=500 T=500。以F1、F2、F3为例。
实验结果表明,本文算法具有较好的有效性和优越性。
四、参考文献
[1] 何庆, 魏康园, 徐钦帅. 求解函数优化问题的改进鲸鱼优化算法[J]. 微电子学与计算机, 2019, 36(4): 72-77+83.
这篇关于求解函数优化问题的改进鲸鱼优化算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!