改进收敛因子和比例权重的灰狼优化算法【期刊论文完美复现】(Matlab代码实现)

news/2025/2/22 21:43:35

2 灰狼优化算法

2.1 基本灰狼优化算法

灰狼优化算法是一种模拟灰狼捕猎自然群体行为的社会启发式优化算法,属于一种新型的群体智能优化算法。灰狼优化算法具有高度的灵活性,是当前较为流行的优化算法之一。灰狼优化算法主要分为三个阶段:追击猎物、包围猎物、攻击猎物。

假设灰狼群体由 N 个个体组成,假设它们的位置为 X i X_i Xi,群体成员的解为 X X X,优先解为 X g X_g Xg,第三步是攻击猎物,把其他个体 x x x 所执行的行为的数学模型如下:

X ( i + 1 ) = X ( i ) − A ⋅ D X(i+1) = X(i) - A \cdot D X(i+1)=X(i)AD

其中, A A A 表示当前随机变量, X X X C C C 是常数项, X i X_i Xi 是群体的当前位置, D D D 是当前位置的猎物位置。

2.2 改进灰狼优化算法(CGWO)

2.2.1 基于学习和变换的改进灰狼优化算法

文献[3]可知,当 α = 1 \alpha = 1 α=1时,灰狼群体将计划搜索范围表示简单,即为搜索范围较大。当 α = 1 \alpha = 1 α=1时,灰狼群体在有效搜索范围内逐步进行查找,即局部搜索,较有效。因此,目标函数的局部灰狼算法的局部搜索能力得到了增强。

由此学者们发现GWO算法的局部搜索能力和全局搜索能力有较大关系。由式(3)可看出,当灰狼收敛时,与位置变化不大,收敛则与灰狼优化算法的学习策略变化有关。于是我们选择不修改的过程并不一定是最佳的,在此回顾并修改的结果可以不完全模拟实际的优化结果。接下来,本文提出了一种基于学习规律变化的改进算法,其优化结果表达为:

a = a min + ( a initial − a min ) [ 1 + cos ⁡ ( ( t − 1 ) π / ( t max − 1 ) ) ]   /   2 a = a_{\text{min}} + \left( a_{\text{initial}} - a_{\text{min}} \right) \left[1 + \cos \left( (t-1) \pi / \left( t_{\text{max}} -1 \right) \right) \right] \, / \, 2 a=amin+(ainitialamin)[1+cos((t1)π/(tmax1))]/2

式中, a min a_{\text{min}} amin a initial a_{\text{initial}} ainitial 为初始值和最终值,本文取 a min = 2 a_{\text{min}} = 2 amin=2, a initial = 0 a_{\text{initial}} = 0 ainitial=0,为最小值, t max t_{\text{max}} tmax 为最大迭代次数, 0 ≤ t ≤ t max 0 \leq t \leq t_{\text{max}} 0ttmax,其变化图如图1所示。
在这里插入图片描述

图1:收敛后的变化图

由图1可以看出,原始收敛时的变化图是线性递减的,优化过程中相关的速度系数,优化后收敛时的变化是一个基于最优化率变化的曲线;其定义形式为:

a = a initial + ( a initial − a min ) ⋅ [ 1 − cos ⁡ ( ( t − 1 ) π / ( t max − 1 ) ) ]   /   2 a = a_{\text{initial}} + \left( a_{\text{initial}} - a_{\text{min}} \right) \cdot \left[1 - \cos \left( (t-1) \pi / \left( t_{\text{max}} - 1 \right) \right) \right] \, / \, 2 a=ainitial+(ainitialamin)[1cos((t1)π/(tmax1))]/2
初期减小的较慢,使得收敛因子α较长时间保持较大值,从而使A保持较大值的时间长些,以提高搜索效率;迭代后期减小的较快,使得α较长时间保持较小值,从而使A保持较小值的时间长些,以提高搜索精度。因此,平衡了算法的全局搜索和局部搜索能力。

2.2.2 引入动态权重策略

下面是常见的比例权重表示,文献[12]中给出了两种不同的分配权重的方法。

(1)第一种是加权平均,表达式如下:

X ( t + 1 ) = 5 X 1 + 3 X 2 + 2 X 3 10 X(t+1) = \frac{5X_1 + 3X_2 + 2X_3}{10} X(t+1)=105X1+3X2+2X3

加权平均值是一种静态加权,此时有α、β和δ狼的权重分别是5、3和2,代表金字塔的等级结构,然后权重之和等于10。

(2)第二种是基于适应度值的比例权重,表达式如下:

W α = f α + f β + f δ f α , W β = f α + f β + f δ f β , W δ = f α + f β + f δ f δ W_\alpha = \frac{f_\alpha + f_\beta + f_\delta}{f_\alpha}, \quad W_\beta = \frac{f_\alpha + f_\beta + f_\delta}{f_\beta}, \quad W_\delta = \frac{f_\alpha + f_\beta + f_\delta}{f_\delta} Wα=fαfα+fβ+fδ,Wβ=fβfα+fβ+fδ,Wδ=fδfα+fβ+fδ

X ( t + 1 ) = X 1 ⋅ W α + X 2 ⋅ W β + X 3 ⋅ W δ W α + W β + W δ X(t+1) = \frac{X_1 \cdot W_\alpha + X_2 \cdot W_\beta + X_3 \cdot W_\delta}{W_\alpha + W_\beta + W_\delta} X(t+1)=Wα+Wβ+WδX1Wα+X2Wβ+X3Wδ

其中 W α W_\alpha Wα W β W_\beta Wβ W δ W_\delta Wδ分别表示α、β、δ狼所占的权重, f α f_\alpha fα f β f_\beta fβ f δ f_\delta fδ分别表示α、β、δ狼的适应度值。根据它们的适应度来计算分配给三头狼的权重,从而使α狼在狩猎过程中占有更大的权重,然后是第二个领先的β狼,以δ狼的最低权重结束,理论上是对潜在猎物位置的了解较少(优化)。

(3)文献[13]给出一种不同的基于适应度值的比例权重,表达式如下:

W α = f α f α + f β + f δ , W β = f β f α + f β + f δ , W δ = f δ f α + f β + f δ W_\alpha = \frac{f_\alpha}{f_\alpha + f_\beta + f_\delta}, \quad W_\beta = \frac{f_\beta}{f_\alpha + f_\beta + f_\delta}, \quad W_\delta = \frac{f_\delta}{f_\alpha + f_\beta + f_\delta} Wα=fα+fβ+fδfα,Wβ=fα+fβ+fδfβ,Wδ=fα+fβ+fδfδ

X ( t + 1 ) = X 1 ⋅ W α + X 2 ⋅ W β + X 3 ⋅ W δ X(t+1) = X_1 \cdot W_\alpha + X_2 \cdot W_\beta + X_3 \cdot W_\delta X(t+1)=X1Wα+X2Wβ+X3Wδ

(4)文献[14]提出一种基于步长欧氏距离的比例权重,表达式如下:

W 1 = ∣ X 1 ∣ ∣ X 1 ∣ + ∣ X 2 ∣ + ∣ X 3 ∣ , W 2 = ∣ X 2 ∣ ∣ X 1 ∣ + ∣ X 2 ∣ + ∣ X 3 ∣ , W 3 = ∣ X 3 ∣ ∣ X 1 ∣ + ∣ X 2 ∣ + ∣ X 3 ∣ W_1 = \frac{|X_1|}{|X_1| + |X_2| + |X_3|}, \quad W_2 = \frac{|X_2|}{|X_1| + |X_2| + |X_3|}, \quad W_3 = \frac{|X_3|}{|X_1| + |X_2| + |X_3|} W1=X1+X2+X3X1,W2=X1+X2+X3X2,W3=X1+X2+X3X3

X ( t + 1 ) = X 1 ⋅ W 1 + X 2 ⋅ W 2 + X 3 ⋅ W 3 3 X(t+1) = \frac{X_1 \cdot W_1 + X_2 \cdot W_2 + X_3 \cdot W_3}{3} X(t+1)=3X1W1+X2W2+X3W3

其中 W 1 W_1 W1 W 2 W_2 W2 W 3 W_3 W3分别表示α狼对β、δ狼的学习率。

引入上述四种比例权重均可以加快算法的收敛速度,通过实验,可以发现引入文献[14]所提出的步长欧氏距离的比例权重效果更好。下面通过理论角度对运用基于步长欧氏距离的比例权重效果进行研究验证。

首先给出如下命题:

X ( 1 ) X^{(1)} X(1) X ( 2 ) X^{(2)} X(2) X ( 3 ) X^{(3)} X(3)是三角形的三个顶点,X是三角形中任意一点,则可以用 X ( 1 ) X^{(1)} X(1) X ( 2 ) X^{(2)} X(2) X ( 3 ) X^{(3)} X(3)三个点的坐标表示。
在这里插入图片描述

证明 任选一项点 X ( 2 ) X^{(2)} X(2),作一条连接 X ( 2 ) X^{(2)} X(2)与X的直线,并延长交于 X ( 1 ) X ( 3 ) X^{(1)}X^{(3)} X(1)X(3)连线上一点 Y Y Y。因X是 Y Y Y X ( 2 ) X^{(2)} X(2)连线上一点,故可用 X ( 1 ) X ( 3 ) X^{(1)}X^{(3)} X(1)X(3)线性表示为:

Y = α X ( 1 ) + ( 1 − α ) X ( 3 ) ( 0 < α < 1 ) Y = \alpha X^{(1)} + (1-\alpha) X^{(3)} \quad (0 < \alpha < 1) Y=αX(1)+(1α)X(3)(0<α<1)

又因 Y Y Y X ( 1 ) X ( 3 ) X^{(1)}X^{(3)} X(1)X(3)连线上一点,故

X = λ Y + ( 1 − λ ) X ( 2 ) ( 0 < λ < 1 ) X = \lambda Y + (1-\lambda) X^{(2)} \quad (0 < \lambda < 1) X=λY+(1λ)X(2)(0<λ<1)

Y Y Y的表达式代入上式得到:

X = λ [ α X ( 1 ) + ( 1 − α ) X ( 3 ) ] + ( 1 − λ ) X ( 2 ) = λ α X ( 1 ) + λ ( 1 − α ) X ( 3 ) + ( 1 − λ ) X ( 2 ) X = \lambda[\alpha X^{(1)} + (1-\alpha) X^{(3)}] + (1-\lambda) X^{(2)} = \lambda \alpha X^{(1)} + \lambda (1-\alpha) X^{(3)} + (1-\lambda) X^{(2)} X=λ[αX(1)+(1α)X(3)]+(1λ)X(2)=λαX(1)+λ(1α)X(3)+(1λ)X(2)

μ 1 = λ α \mu_1 = \lambda \alpha μ1=λα μ 2 = ( 1 − λ ) \mu_2 = (1-\lambda) μ2=(1λ) μ 3 = λ ( 1 − α ) \mu_3 = \lambda (1-\alpha) μ3=λ(1α) 这样就得到:

X = μ 1 X ( 1 ) + μ 2 X ( 2 ) + μ 3 X ( 3 ) ( ∑ μ i = 1 , 0 < μ i < 1 ) X = \mu_1 X^{(1)} + \mu_2 X^{(2)} + \mu_3 X^{(3)} \quad (\sum \mu_i = 1, 0 < \mu_i < 1) X=μ1X(1)+μ2X(2)+μ3X(3)(μi=1,0<μi<1)

假设α、β、δ狼的位置为三角形的三个顶点 X ( 1 ) X^{(1)} X(1) X ( 2 ) X^{(2)} X(2) X ( 3 ) X^{(3)} X(3),则当X是三角形的重心时,有 μ 1 = μ 2 = μ 3 = 1 3 \mu_1 = \mu_2 = \mu_3 = \frac{1}{3} μ1=μ2=μ3=31,此时对应于基本GWO算法中的位置更新公式。而利用基于步长的欧氏距离计算 μ i \mu_i μi,使得 μ i \mu_i μi算法的每一次迭代过程中不断变化,从而使得领导层的灰狼动态的指导狼群前进。

因此,本文引入文献[14]所提出的基于步长欧氏距离的比例权重。

[1]王秋萍,王梦娜,王晓峰.改进收敛因子和比例权重的灰狼优化算法[J].计算机工程与应用,2019,55(21):60-65+98.


http://www.niftyadmin.cn/n/5862787.html

相关文章

数据结构:哈希表(unordered_map)

unordered_map 是 C 标准库中的一种哈希表实现&#xff0c;它提供了基于键值对&#xff08;key-value&#xff09;的存储&#xff0c;提供了常数时间复杂度的查找、插入和删除键值对的操作。 初始化代码示例&#xff1a; #include <unordered_map> using namespace std…

Oops! 更改field的数据类型,影响到rabbitmq消费了...(有关于Java序列化)

程序中有如下entity类-LevyPaymentFlow Data TableName(value "levy_payment_flow", autoResultMap true) public class LevyPaymentFlow implements Serializable {private static final long serialVersionUID 1L;TableId(type IdType.AUTO)private String flo…

【git】合并多个提交记录

1.说明 有时候因为某些小修改会导致代码多了很多不必要的提交&#xff0c;如果希望合并这些commit记录&#xff0c;我们可以使用rebase或者reset命令完成合并 2.rebase 这种方式是通过变基操作完成的&#xff0c;它适用于已经push到远程的情况&#xff0c;当我们变基好了之后…

RocketMq\Kafka如何保障消息不丢失?

程序那点事 保证RocketMq和Kafka消息不丢失需考虑Producer发送、Broker存储、Consumer消费。需配置同步发送/刷盘、重试机制、幂等性生产&#xff0c;手动提交偏移量等策略。摘要由作者通过智能技术生成 RocketMq架构图 RocketMq消息不丢失 要想保证消息不丢失&#xff0c;需…

《重构-》

一、代码坏的味道 神秘命名 ​​​​​代码应该直观明了。要深思熟虑如何给函数、模块、变量和类命名&#xff0c;使它们能清晰地表明 自己的功能和用法。 重复代码 一旦有重复代码存在&#xff0c;阅读这些重复的代码时你就必须加倍仔细&#xff0c;留意其间细微的差异。如果…

git使用-克隆远程项目、分支管理

文章目录 克隆远程项目到本地1. 远程找到需要克隆的项目&#xff0c;复制ssh地址2. idea开启git版本控制&#xff08;如果已经开了&#xff0c;忽略此步骤&#xff09;3. clone远端项目4. 克隆完成 分支管理1. 新建分支2. 切换分支3. 合并分支4. 储存变化 克隆远程项目到本地 …

软件架构设计:软件工程

一、软件工程概述 软件工程的定义 软件工程是应用系统化、规范化、可量化的方法开发、运行和维护软件。 软件工程的目标 提高软件质量、降低开发成本、缩短开发周期。 软件生命周期 瀑布模型&#xff1a;需求分析→设计→编码→测试→维护。迭代模型&#xff1a;分阶段迭代开…

【Leetcode 每日一题】2209. 用地毯覆盖后的最少白色砖块

问题背景 给你一个下标从 0 0 0 开始的 二进制 字符串 f l o o r floor floor&#xff0c;它表示地板上砖块的颜色。 f l o o r [ i ] floor[i] floor[i] 为 ‘0’ 表示地板上第 i i i 块砖块的颜色是 黑色 。 f l o o r [ i ] floor[i] floor[i] 为’1’ 表示地板上第 i …