采用动态权重和概率扰动策略改进的灰狼优化算法-附代码

本文主要是介绍采用动态权重和概率扰动策略改进的灰狼优化算法-附代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

采用动态权重和概率扰动策略改进的灰狼优化算法

文章目录

  • 采用动态权重和概率扰动策略改进的灰狼优化算法
    • 1.灰狼优化算法
    • 2. 改进灰狼优化算法
      • 2.1 引入权值因子
      • 2. 2 概率扰动策略
    • 3.实验结果
    • 4.参考文献
    • 5.Matlab代码
    • 6.Python代码

摘要: 针对基本灰狼优化(GWO)算法存在易陷入局部最优,进而导致搜索精度偏低的问题,提出了一种改进的GWO(IGWO)算法。一方面,通过引入由 GWO 算法系数向量构成的权值因子,动态调整算法的位置向量更新方程;另一方面,通过采用概率扰动策略,增强算法迭代后期的种群多样性,从而提升算法跳出局部最优的能力。

1.灰狼优化算法

基础灰狼算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107716390

2. 改进灰狼优化算法

2.1 引入权值因子

基本 GWO 算法通过计算三个最佳灰狼位置的平均值来更新灰狼位置,这种策略并没有考虑三头狼在群体狩猎活动中的贡献度问题。由于 GWO 算法的 狼 α 并不一定是全局最优解,这时在不断迭代中,随着其余狼 ω 向这三头狼逼近,这就容易陷入局部最优 。本文从最佳灰狼贡献问题角度设计一种权重因子,用来提升GWO算法的寻优能力。由于GWO算法中的系数向量 A 和 C 是动态随机的,而权重因子也应该随着寻优过程非线性调整变化,为此本文设计的权重因子来源于系数向量 A A A C C C 。在基本 G W O \mathrm{GWO} GWO 算法中, A 1 、 A 2 、 A 3 A_{1} 、 A_{2} 、 A_{3} A1A2A3 以及 C 1 C_{1} C1 C 2 、 C 3 \boldsymbol{C}_{2} 、 \boldsymbol{C}_{3} C2C3 是不相同的,在这里为了保证权重因子更新的相关联 性, 设计 A 1 、 A 2 \boldsymbol{A}_{1} 、 \boldsymbol{A}_{2} A1A2 A 3 \boldsymbol{A}_{3} A3 相同, C 1 、 C 2 \boldsymbol{C}_{1} 、 \boldsymbol{C}_{2} C1C2 C 3 \boldsymbol{C}_{3} C3 相同, 如下:
A 1 = A 2 = A 3 = 2 a ⋅ r 1 − a C 1 = C 2 = C 3 = 2 r 2 \begin{aligned} &\boldsymbol{A}_{1}=\boldsymbol{A}_{2}=\boldsymbol{A}_{3}=2 a \cdot \boldsymbol{r}_{1}-a \\ &\boldsymbol{C}_{1}=\boldsymbol{C}_{2}=\boldsymbol{C}_{3}=2 \boldsymbol{r}_{2} \end{aligned} A1=A2=A3=2ar1aC1=C2=C3=2r2
那么, 设计的位置向量权重因子分别为:
w 1 = ∣ A 1 ⋅ C 1 ∣ ∣ A 1 ⋅ C 1 ∣ + ∣ A 2 ⋅ C 2 ∣ + ∣ A 3 ⋅ C 3 ∣ = 1 3 w 2 = ∣ A 2 ⋅ C 2 ∣ w 1 + ∣ A 2 ⋅ C 2 ∣ + ∣ A 3 ⋅ C 3 ∣ = 3 ∣ A 1 ⋅ C 1 ∣ 1 + 6 ∣ A 1 ⋅ C 1 ∣ \begin{aligned} &w_{1}=\frac{\left|\boldsymbol{A}_{1} \cdot \boldsymbol{C}_{1}\right|}{\left|\boldsymbol{A}_{1} \cdot \boldsymbol{C}_{1}\right|+\left|\boldsymbol{A}_{2} \cdot \boldsymbol{C}_{2}\right|+\left|\boldsymbol{A}_{3} \cdot \boldsymbol{C}_{3}\right|}=\frac{1}{3} \\ &w_{2}=\frac{\left|\boldsymbol{A}_{2} \cdot \boldsymbol{C}_{2}\right|}{w_{1}+\left|\boldsymbol{A}_{2} \cdot \boldsymbol{C}_{2}\right|+\left|\boldsymbol{A}_{3} \cdot \boldsymbol{C}_{3}\right|}=\frac{3\left|\boldsymbol{A}_{1} \cdot \boldsymbol{C}_{1}\right|}{1+6\left|\boldsymbol{A}_{1} \cdot \boldsymbol{C}_{1}\right|} \end{aligned} w1=A1C1+A2C2+A3C3A1C1=31w2=w1+A2C2+A3C3A2C2=1+6A1C13A1C1
w 3 = ∣ A 3 ⋅ C 3 ∣ w 1 + w 2 + ∣ A 3 ⋅ C 3 ∣ = 18 ∣ A 1 ⋅ C 1 ∣ 2 + 3 ∣ A 1 ⋅ C 1 ∣ 18 ∣ A 1 ⋅ C 1 ∣ 2 + 18 ∣ A 1 ⋅ C 1 ∣ + 1 \begin{aligned} w_{3}=& \frac{\left|\boldsymbol{A}_{3} \cdot \boldsymbol{C}_{3}\right|}{w_{1}+w_{2}+\left|\boldsymbol{A}_{3} \cdot \boldsymbol{C}_{3}\right|}=\\ & \frac{18\left|\boldsymbol{A}_{1} \cdot \boldsymbol{C}_{1}\right|^{2}+3\left|\boldsymbol{A}_{1} \cdot \boldsymbol{C}_{1}\right|}{18\left|\boldsymbol{A}_{1} \cdot \boldsymbol{C}_{1}\right|^{2}+18\left|\boldsymbol{A}_{1} \cdot \boldsymbol{C}_{1}\right|+1} \end{aligned} w3=w1+w2+A3C3A3C3=18A1C12+18A1C1+118A1C12+3A1C1
因此,得到新的位置更新公式为:
X ( t + 1 ) = w 1 X 1 + w 2 X 2 + w 3 X 3 3 \boldsymbol{X}(t+1)=\frac{w_{1} \boldsymbol{X}_{1}+w_{2} \boldsymbol{X}_{2}+w_{3} \boldsymbol{X}_{3}}{3} X(t+1)=3w1X1+w2X2+w3X3

2. 2 概率扰动策略

随着 GWO 算法迭代次数的不断增加,算法寻优逐渐趋于收敛,一旦收敛于局部最优很难跳出。在算法种群更新中加入扰动机制可以有效提升算法跳出局部最优的能力 。本文设计带有一定概率的扰动来增强算法寻优后期的种群多样性,为摆脱局部收敛创造有利条件。对于概率扰动策略,在以往的一些优化算法中有所研究,如胡宏梅等 提出采用随机概率扰动方式作为基本粒子群算法的全局更新条件,从而增强全局寻优区域的搜索能力,但它采用的是模拟退火算法的退火概率,计算过于复杂;张伟提出在差分进化算法中运用小概率扰动操作来增强种群的多样性,但它采用固定的概率形式,无法在不同迭代过程中充分发挥扰动策略。为此,本文设计一种简便且高效的扰动概率公式为:
P = ( G − 1 ) e ( t − 1 ) / T 4 G P=\frac{(G-1) \mathrm{e}^{(t-1) / T}}{4 G} P=4G(G1)e(t1)/T
其中: P P P 为扰动概率; G G G 为优化问题的维度; T T T 为最大迭代次 数。算法迭代初期, 扰动概率较小, 以便算法快速寻找全局最 优解; 算法迭代后期, 扰动概率增加, 增强了种群多样性。一般 来说 T T T 是一个较大的常数, 当算法迭代至后期 t → T t \rightarrow T tT, 扰动概 率 P = ( 1 − 1 / G ) e ( t / T − 1 / T ) 4 → ( 1 − 1 / G ) e 4 P=\frac{(1-1 / G) \mathrm{e}^{(t / T-1 / T)}}{4} \rightarrow \frac{(1-1 / G) \mathrm{e}}{4} P=4(11/G)e(t/T1/T)4(11/G)e 。灰狼个体进行扰动 的公式为:
M ( t + 1 ) = l b + r 3 ⋅ ( u b − l b ) ; r 3 < P \boldsymbol{M}(t+1)=\boldsymbol{l b}+\boldsymbol{r}_{3} \cdot(\boldsymbol{u} \boldsymbol{b}-\boldsymbol{l b}) ; \quad \boldsymbol{r}_{3}<P M(t+1)=lb+r3(ublb);r3<P
其中: M \boldsymbol{M} M 为扰动后的个体; l b \boldsymbol{l b} lb 为灰狼个体位置的下界; u b \boldsymbol{u} \boldsymbol{b} ub 为灰 狼个体位置的上界; ; r 3 ; \boldsymbol{r}_{3} ;r3 [ 0 , 1 ] [0,1] [0,1] 之间取值的随机向量。扰动后 的灰狼个体基于贪婪机制进行更新, 更新公式为:
X ( t + 1 ) = { M ( t + 1 ) , f ( M ( t + 1 ) ) < f ( X ( t + 1 ) ) X ( t + 1 ) , 其他  \boldsymbol{X}(t+1)= \begin{cases}\boldsymbol{M}(t+1), & f(\boldsymbol{M}(t+1))<f(\boldsymbol{X}(t+1)) \\ \boldsymbol{X}(t+1), & \text { 其他 }\end{cases} X(t+1)={M(t+1),X(t+1),f(M(t+1))<f(X(t+1)) 其他 
其中: f ( M ( t + 1 ) ) f(\boldsymbol{M}(t+1)) f(M(t+1)) f ( X ( t + 1 ) ) f(\boldsymbol{X}(t+1)) f(X(t+1)) 分别表示第 t + 1 t+1 t+1 代扰动个 体 M \boldsymbol{M} M 和灰狼个体 X \boldsymbol{X} X 的目标函数值。

3.实验结果

请添加图片描述

4.参考文献

[1]陈闯,Ryad Chellali,邢尹.采用动态权重和概率扰动策略改进的灰狼优化算法[J].计算机应用,2017,37(12):3493-3497+3508.

5.Matlab代码

6.Python代码

这篇关于采用动态权重和概率扰动策略改进的灰狼优化算法-附代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu