求解函数优化问题的改进鲸鱼优化算法

2024-03-08 23:20

本文主要是介绍求解函数优化问题的改进鲸鱼优化算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、理论基础
    • 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)=S1X (t)S2A 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)=S1X rand(t)S2A D ,A1p<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)=S1X (t)+D eblcos(2πl),p0.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} V i(t+1)=X i(t)+F(X r1(t)X r2(t))(6)其中, V → i ( t + 1 ) \overrightarrow V_i(t+1) V i(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) X r1(t)X r2(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} X i(t+1)={V i(t+1),fit(V i(t+1))<fit(X i(t))X i(t+1),fit(V i(t+1))fit(X i(t))(7)

二、EWOA算法流程图

在这里插入图片描述

图1 EWOA算法流程图

三、仿真实验与结果分析

实验中,设置算法的种群规模为 N = 30 N=30 N=30,最大迭代次数为 T = 500 T=500 T=500。以F1、F2、F3为例。
在这里插入图片描述

图2 F1

在这里插入图片描述

图3 F2

在这里插入图片描述

图4 F3

实验结果表明,本文算法具有较好的有效性和优越性。

四、参考文献

[1] 何庆, 魏康园, 徐钦帅. 求解函数优化问题的改进鲸鱼优化算法[J]. 微电子学与计算机, 2019, 36(4): 72-77+83.

这篇关于求解函数优化问题的改进鲸鱼优化算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT

Redis出现中文乱码的问题及解决

《Redis出现中文乱码的问题及解决》:本文主要介绍Redis出现中文乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 问题的产生2China编程. 问题的解决redihttp://www.chinasem.cns数据进制问题的解决中文乱码问题解决总结

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分