当前位置: 首页 > article >正文

【数学建模】(智能优化算法)鲸鱼优化算法(Whale Optimization Algorithm)详解与应用

鲸鱼优化算法(Whale Optimization Algorithm)详解与应用

文章目录

  • 鲸鱼优化算法(Whale Optimization Algorithm)详解与应用
    • 1. 引言
    • 2. 算法原理
      • 2.1 生物学基础
      • 2.2 数学模型[^3]
        • 1. 包围猎物阶段
        • 2. 气泡网攻击(螺旋更新)
        • 3. 随机搜索猎物(全局探索)
        • 完整算法伪代码
        • 关键参数说明表
      • 2.3 改进方向中的数学扩展
    • 3. 算法实现步骤
    • 4. 算法优势与特点
    • 5. 应用领域
    • 6. 算法变体与改进
    • 7. 代码实现示例
    • 8. 与其他优化算法的比较
    • 9. 总结与展望
    • 参考资料


1. 引言

鲸鱼优化算法(Whale Optimization Algorithm, WOA)是一种基于生物行为的全局优化算法,由Mirjalili等人在2016年首次提出。该算法的灵感来源于座头鲸群体捕食的策略,特别是它们独特的泡泡网捕食行为。1

作为一种新型的群体智能优化算法,WOA在许多领域展现出了优越的性能,甚至在某些应用场景中表现出远超传统算法的优势。随着人工智能和优化算法的不断发展,鲸鱼优化算法已成为研究热点之一。2

2. 算法原理

2.1 生物学基础

鲸鱼优化算法模拟了座头鲸的捕食行为。座头鲸在捕食时会包围猎物,并沿着螺旋路径形成独特的气泡网来完成捕食。这种行为是算法设计的核心灵感来源。3

鲸鱼的气泡捕食行为

2.2 数学模型4

鲸鱼优化算法主要包含三种行为模式的数学建模:

1. 包围猎物阶段

鲸鱼通过以下公式更新位置来包围猎物:

{ D = ∣ C ⋅ X ∗ ( t ) − X ( t ) ∣ X ( t + 1 ) = X ∗ ( t ) − A ⋅ D \begin{cases} D = |C \cdot X^*(t) - X(t)| \\ X(t+1) = X^*(t) - A \cdot D \end{cases} {D=CX(t)X(t)X(t+1)=X(t)AD

其中:

  • X ( t ) X(t) X(t) 是当前个体位置
  • X ∗ ( t ) X^*(t) X(t) 是当前最优个体位置
  • A A A C C C 是系数向量,计算方式为:
    A = 2 a ⋅ r 1 − a C = 2 ⋅ r 2 A = 2a \cdot r_1 - a \\ C = 2 \cdot r_2 A=2ar1aC=2r2
  • a a a 从2线性递减到0(迭代控制参数):
    a = 2 − t ⋅ ( 2 T max ) a = 2 - t \cdot \left(\frac{2}{T_{\text{max}}}\right) a=2t(Tmax2)
  • r 1 , r 2 r_1, r_2 r1,r2 是[0,1]内的随机向量
2. 气泡网攻击(螺旋更新)

鲸鱼以螺旋路径逼近猎物:

X ( t + 1 ) = D ′ ⋅ e b l ⋅ cos ⁡ ( 2 π l ) + X ∗ ( t ) X(t+1) = D' \cdot e^{bl} \cdot \cos(2\pi l) + X^*(t) X(t+1)=Deblcos(2πl)+X(t)

其中:

  • D ′ = ∣ X ∗ ( t ) − X ( t ) ∣ D' = |X^*(t) - X(t)| D=X(t)X(t) 表示个体与最优解的距离
  • b b b 是定义螺旋形状的常数(通常设为1)
  • l l l 是[-1,1]间的随机数

实际实现中,包围和螺旋行为以50%概率切换:

X ( t + 1 ) = { X ∗ ( t ) − A ⋅ D if  p < 0.5 D ′ ⋅ e b l ⋅ cos ⁡ ( 2 π l ) + X ∗ ( t ) if  p ≥ 0.5 X(t+1) = \begin{cases} X^*(t) - A \cdot D & \text{if } p < 0.5 \\ D' \cdot e^{bl} \cdot \cos(2\pi l) + X^*(t) & \text{if } p \geq 0.5 \end{cases} X(t+1)={X(t)ADDeblcos(2πl)+X(t)if p<0.5if p0.5

3. 随机搜索猎物(全局探索)

∣ A ∣ ≥ 1 |A| \geq 1 A1时,个体随机搜索:

{ D = ∣ C ⋅ X rand − X ( t ) ∣ X ( t + 1 ) = X rand − A ⋅ D \begin{cases} D = |C \cdot X_{\text{rand}} - X(t)| \\ X(t+1) = X_{\text{rand}} - A \cdot D \end{cases} {D=CXrandX(t)X(t+1)=XrandAD

其中 X rand X_{\text{rand}} Xrand是当前种群中的随机个体位置。

完整算法伪代码
1. 初始化鲸鱼种群Xi (i=1,2,...,n)
2. 计算每个个体的适应度
3. X* = 当前最优个体
4. while (t < 最大迭代次数) do
5.    for 每个个体 do
6.        更新a, A, C, l, p
7.        if (p < 0.5) then
8.            if (|A| < 1) then
9.                按公式(1)更新位置(包围猎物)
10.           else
11.               随机选择X_rand
12.               按公式(3)更新位置(随机搜索)
13.           end if
14.       else
15.           按公式(2)更新位置(气泡网攻击)
16.       end if
17.       检查边界并计算新适应度
18.       更新X*(如果找到更优解)
19.   end for
20.   t = t + 1
21. end while
22. return X*
关键参数说明表
参数数学表示作用典型取值/范围
种群大小n影响算法全局搜索能力30-50
迭代次数T_max控制算法运行时间问题相关
收敛因子a平衡探索与开发2→0线性递减
螺旋形状常数b控制螺旋形状1(常数)
随机概率p选择更新策略[0,1]均匀随机
随机系数l螺旋运动参数[-1,1]均匀随机

2.3 改进方向中的数学扩展

  1. 自适应参数改进
    a = 2 ( 1 − t T max ) k ( k > 1 时为非线性递减 ) a = 2(1 - \frac{t}{T_{\text{max}}})^k \quad (k>1时为非线性递减) a=2(1Tmaxt)k(k>1时为非线性递减)

  2. 混合算法改进
    X new = w ⋅ X WOA + ( 1 − w ) ⋅ X OtherAlgorithm X_{\text{new}} = w \cdot X_{\text{WOA}} + (1-w) \cdot X_{\text{OtherAlgorithm}} Xnew=wXWOA+(1w)XOtherAlgorithm

  3. 多目标优化扩展
    Minimize  [ f 1 ( x ) , f 2 ( x ) , . . . , f k ( x ) ] \text{Minimize } [f_1(x), f_2(x), ..., f_k(x)] Minimize [f1(x),f2(x),...,fk(x)]
    采用Pareto支配关系更新最优解集

3. 算法实现步骤

  1. 初始化:随机生成鲸鱼种群位置
  2. 适应度评估:计算每个个体的适应度值
  3. 更新最优解:找到当前种群中的最优解
  4. 位置更新
    • 根据概率 p p p选择更新策略
    • p < 0.5 p<0.5 p<0.5,根据 ∣ A ∣ |A| A的值决定是执行包围猎物还是搜索猎物
    • p ≥ 0.5 p≥0.5 p0.5,执行气泡网攻击策略
  5. 迭代:重复步骤2-4直到满足终止条件
  6. 输出:返回最优解3

4. 算法优势与特点

鲸鱼优化算法具有以下几个显著特点:

  1. 全局搜索能力强:通过模拟鲸鱼的随机搜索行为,算法具有较强的全局搜索能力
  2. 局部开发能力优秀:螺旋更新机制使算法在找到潜在最优解后能够进行精细的局部搜索
  3. 参数设置简单:相比其他元启发式算法,WOA的参数较少且易于调整
  4. 收敛速度快:在多数测试函数上表现出较快的收敛速度4 2

5. 应用领域

鲸鱼优化算法已在多个领域得到广泛应用:

  1. 工程优化问题:如结构设计优化、参数优化等
  2. 机器学习:特征选择、分类器优化、神经网络训练
  3. 能源系统:电力系统优化、可再生能源调度
  4. 图像处理:图像分割、目标识别
  5. 调度问题:作业调度、资源分配1 2

6. 算法变体与改进

随着研究的深入,研究人员提出了多种鲸鱼优化算法的变体和改进版本:

  1. 二进制鲸鱼优化算法:用于解决离散优化问题
  2. 多目标鲸鱼优化算法:处理具有多个冲突目标的优化问题
  3. 混合鲸鱼优化算法:与其他算法(如粒子群、遗传算法等)结合,取长补短
  4. 自适应鲸鱼优化算法:通过动态调整参数提高算法性能4 2

7. 代码实现示例

以下是Python版本的鲸鱼优化算法基本框架:

import numpy as np
import matplotlib.pyplot as pltdef WOA(objective_function, dim, lb, ub, max_iter, search_agents_no):# 初始化种群positions = np.random.uniform(lb, ub, (search_agents_no, dim))# 初始化最优解fitness = np.zeros(search_agents_no)for i in range(search_agents_no):fitness[i] = objective_function(positions[i])leader_pos = positions[np.argmin(fitness)].copy()leader_score = np.min(fitness)# 迭代优化convergence_curve = np.zeros(max_iter)for t in range(max_iter):a = 2 - t * (2 / max_iter)  # a从2线性递减到0for i in range(search_agents_no):r1 = np.random.random()r2 = np.random.random()A = 2 * a * r1 - aC = 2 * r2p = np.random.random()if p < 0.5:if abs(A) < 1:# 包围猎物D = abs(C * leader_pos - positions[i])positions[i] = leader_pos - A * Delse:# 搜索猎物rand_leader_index = np.random.randint(0, search_agents_no)X_rand = positions[rand_leader_index]D = abs(C * X_rand - positions[i])positions[i] = X_rand - A * Delse:# 气泡网攻击distance_to_leader = abs(leader_pos - positions[i])b = 1  # 定义螺旋形状l = np.random.random() * 2 - 1positions[i] = distance_to_leader * np.exp(b * l) * np.cos(2 * np.pi * l) + leader_pos# 边界处理positions[i] = np.clip(positions[i], lb, ub)# 更新适应度new_fitness = objective_function(positions[i])# 更新领导者if new_fitness < leader_score:leader_score = new_fitnessleader_pos = positions[i].copy()convergence_curve[t] = leader_scorereturn leader_pos, leader_score, convergence_curve

3

8. 与其他优化算法的比较

与其他常见的群体智能优化算法相比,鲸鱼优化算法具有一定的优势:

  1. 相比粒子群算法(PSO):WOA具有更强的全局搜索能力,不易陷入局部最优
  2. 相比遗传算法(GA):WOA参数更少,实现更简单,且在许多测试函数上收敛速度更快
  3. 相比蚁群算法(ACO):WOA在连续优化问题上表现更好
  4. 相比人工蜂群算法(ABC):WOA在平衡全局搜索和局部开发方面有更好的机制4 2

9. 总结与展望

鲸鱼优化算法作为一种新兴的群体智能优化算法,凭借其简单高效的特点,在众多领域展现出良好的应用前景。随着研究的深入,算法的改进和应用范围还将进一步扩展。

未来研究方向可能包括:

  1. 算法理论基础的深入研究
  2. 参数自适应调整机制的优化
  3. 与深度学习等技术的结合
  4. 在更多实际工程问题中的应用验证1 2

参考资料


  1. 鲸鱼优化算法(Whale Optimization Algorithm,WOA). CSDN博客. https://blog.csdn.net/qq_39297053/article/details/137440233 ↩︎ ↩︎ ↩︎

  2. 鲸鱼优化算法研究综述. 自动化学报. https://www.arocmag.cn/abs/2022.06.0347 ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  3. 超详细| 鲸鱼优化算法原理及其实现(Matlab/Python). CSDN博客. https://blog.csdn.net/sfejojno/article/details/133624149 ↩︎ ↩︎ ↩︎

  4. 智能优化算法|鲸鱼优化算法. 知乎专栏. https://zhuanlan.zhihu.com/p/690046477 ↩︎ ↩︎ ↩︎ ↩︎

相关文章:

【数学建模】(智能优化算法)鲸鱼优化算法(Whale Optimization Algorithm)详解与应用

鲸鱼优化算法(Whale Optimization Algorithm)详解与应用 文章目录 鲸鱼优化算法(Whale Optimization Algorithm)详解与应用1. 引言2. 算法原理2.1 生物学基础2.2 数学模型[^3]1. 包围猎物阶段2. 气泡网攻击&#xff08;螺旋更新&#xff09;3. 随机搜索猎物&#xff08;全局探索…...

【深度洞察】解码饮料行业破局点:场景革命

当东鹏特饮以 “大瓶装 防尘盖” 精准解决货车司机的场景化需求&#xff0c;当农夫山泉通过 “冷藏版东方树叶” 打开年轻白领的早餐场景 —— 这些现象级案例背后&#xff0c;是饮料行业底层逻辑的深刻变革&#xff1a;真正的市场增量&#xff0c;藏在对消费场景的极致拆解中…...

工业科学级天文相机:跨界融合的高精密成像解决方案

随着国内科技的快速发展&#xff0c;工业相机领域正悄然兴起一场"天文级"的技术革命。这类兼具工业设备可靠性与天文观测精度的特殊相机&#xff0c;正在半导体制造、天文观测、空间探测等领域开辟新的应用疆域。其核心技术突破不仅体现在传感器性能的提升&#xff0…...

回文日期2

#include <bits/stdc.h> using namespace std; bool huiwen(int date) {int tempdate;int r0;while(temp>0){rr*10temp%10;temp/10;}return dater; }int main() {// 请在此输入您的代码int n,m;cin>>n>>m;int tempfn/100,tempem/100;int yearfn/10000,mon…...

Ubuntu搭建Pytorch环境

Ubuntu搭建Pytorch环境 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Ubuntu搭建Pytorch环境前言一、Anaconda二、Cuda1.安装流程2、环境变量&#…...

图书管理系统(Python)

运行结果&#xff1a; 源代码&#xff1a; # 定义一个图书类 class Book: def __init__(self, title, author, isbn): self.title title self.author author self.isbn isbn def show_info(self): print(f"{self.title},{self.author},{self.isbn}") # 图书列表…...

大模型本地部署系列(3) Ollama部署QwQ[阿里云通义千问]

大家好&#xff0c;我是AI研究者&#xff0c; 今天教大家部署 一个阿里云通义千问大模型。 QwQ大模型简介 QwQ是由阿里云通义千问&#xff08;Qwen&#xff09;团队推出的开源推理大模型&#xff0c;专注于提升AI在数学、编程和复杂逻辑推理方面的能力。其核心特点包括&#x…...

操作系统 4.1-I/O与显示器

外设工作起来 操作系统让外设工作的基本原理和过程&#xff0c;具体来说&#xff0c;它概括了以下几个关键步骤&#xff1a; 发出指令&#xff1a;操作系统通过向控制器中的寄存器发送指令来启动外设的工作。这些指令通常是通过I/O指令&#xff08;如out指令&#xff09;来实现…...

前端-Vue3

1. Vue3简介 2020年9月18日&#xff0c;Vue.js发布版3.0版本&#xff0c;代号&#xff1a;One Piece&#xff08;n 经历了&#xff1a;4800次提交、40个RFC、600次PR、300贡献者 官方发版地址&#xff1a;Release v3.0.0 One Piece vuejs/core 截止2023年10月&#xff0c;最…...

Facebook账号类型一览

对于跨境出海从业者来说&#xff0c;Facebook是必不可少的内容营销和广告投放平台。针对Facebook的营销策略和发挥空间都很丰富&#xff0c;因此了解Facebook账号的类型、特点、适用场景和相关工具还是很有用的。 一、账号类型及特点 1.小黑号 无主页、无好友、无历史操作&am…...

Kotlin 通用请求接口设计:灵活处理多样化参数

在 Kotlin 中设计一个通用的 ControlParams 类来处理不同的控制参数&#xff0c;有几种常见的方法&#xff1a;方案1&#xff1a;使用密封类&#xff08;Sealed Class&#xff09; sealed class ControlParamsdata class LightControlParams(val brightness: Int,val color: S…...

Java学习手册:Java基本语法与数据类型

Java语言以其简洁明了的语法和强大的数据类型系统而闻名。掌握Java的基本语法和数据类型是成为一名合格Java开发者的第一步。本文将深入探讨Java的基本语法结构和数据类型&#xff0c;帮助读者打下坚实的基础。 Java的基本语法 Java语言的语法设计简洁而强大&#xff0c;强调…...

通过扣子平台将数据写入飞书多维表格

目录 1.1 创建飞书开放平台应用 1.2 创建飞书多维表格 1.3 创建扣子平台插件 1.1 创建飞书开放平台应用 1.1.1 打开地址&#xff1a;飞书开放平台&#xff0c;点击创建应用 注&#xff1a;商店应用需要申请ISV资质&#xff0c;填写企业主体信息&#xff0c;个人的话&#x…...

C++-Mongoose(2)-https-server-openssl

OpenSSL生成HTTPS自签名证书 - 简书 1.Openssl windowsubuntu下载http://www.openssl.vip/download1.VS2019编译OpenSSL 2.VS2019编译第一个OpenSSL项目 1.ubuntu编译OpenSSL 3.0 2.编写第一个OpenSSL 1.windows下编译OpenSSL 安装vs2019 perl nasm安装activePerl…...

【GDB】调试程序的基本命令和用法(Qt程序为例)

1. 引言 GDB&#xff08;GNU Debugger&#xff09;是一个强大的命令行调试工具&#xff0c;它可以帮助开发者在程序运行时查找和修复错误。当调试Qt程序时&#xff0c;GDB同样适用&#xff0c;并且能够帮助开发者定位诸如数组越界挂死等复杂问题。 2. 基本命令 2.1 启动GDB …...

力扣DAY46-50 | 热100 | 二叉树:展开为链表、pre+inorder构建、路径总和、最近公共祖先、最大路径和

前言 中等 、困难 √&#xff0c;越来越有手感了&#xff0c;二叉树done&#xff01; 二叉树展开为链表 我的题解 前序遍历树&#xff0c;当遇到左子树为空时&#xff0c;栈里pop节点&#xff0c;取右子树接到左子树位置&#xff0c;同时断开该右子树与父节点的连接&#x…...

服务器DNS失效

服务器异常 xx.t.RequestException: java.net.UnknownHostException: test.ac.xxxx.cn现象分析 本地测试正常&#xff0c;说明域名本身无问题。服务器 DNS 解析异常&#xff0c;导致 UnknownHostException。**服务器可正常解析 ****baidu.com**&#xff0c;说明网络正常&#…...

用excel做九乘九乘法表

公式&#xff1a; IF($A2>B 1 , 1, 1,A2 & “" & B$1 & “” & $A2B$1,”")...

企业数据安全如何保障?深度解析AIGC系统源码本地化部署

—从数据加密到权限管控&#xff0c;构建企业级AI安全防线 企业AIGC面临的5大数据安全风险 1. 数据出境违规 典型场景&#xff1a; 使用ChatGPT处理客户信息 → 数据经美国服务器中转 → 违反《个人信息保护法》第38条某金融公司因通过Midjourney生成宣传图&#xff0c;导致产…...

《妖风》-来自DeepSeek

《妖风》 周明揉了揉酸胀的眼睛&#xff0c;电脑屏幕上的Excel表格已经模糊成一片绿色的小格子。窗外&#xff0c;三月的阳光懒洋洋地洒进来&#xff0c;带着春天特有的那种让人昏昏欲睡的温暖。办公室里中央空调的嗡嗡声像是一首催眠曲&#xff0c;他的眼皮越来越重。 "…...

鬼泣:蓄力攻击

文章目录 蓄力攻击&#xff1a;有两个动作&#xff0c;蓄力时触发蓄力动作&#xff0c;攻击时触发攻击动作1.蓄力动作2.攻击动作 浮空上挑1.蓄力对齐位置 2.攻击 下劈斩1.蓄力对齐位置 2.攻击 beiwuf debug事件分发器发送&#xff1a;调用发送器即可发送消息接收&#xff1a;绑…...

企业指标设计方法指南

该文档聚焦企业指标设计方法,适用于企业中负责战略规划、业务运营、数据分析、指标管理等相关工作的人员,如企业高管、部门经理、数据分析师等。 主要内容围绕指标设计展开:首先指出指标设计面临的困境,包括权责不清、口径不统一、缺乏标准规范、报表体系混乱、指标…...

CSS学习02 动态列数表格开发,解决多组数据布局与边框重合问题

概要 在前端开发中&#xff0c;表格常用于展示结构化数据。当数据组的字段数量不统一时&#xff08;如有的行包含 3 组数据&#xff0c;有的行包含 2 组或 1 组&#xff09;&#xff0c;传统固定列数的表格会出现结构错位、边框重合等问题。本文通过 HTML/CSS 规范方法&#x…...

加载js/mjs模块时服务器返回的 MIME 类型不对导致模块被拒绝执行

浏览器报错 Failed to load module script: The server responded with a non-JavaScript MIME type of "text/html". Strict MIME type checking is enforced for module scripts per HTML spec.Understand this errorAI 核心问题 浏览器加载模块脚本&#xff08;如…...

大唐杯省赛安排来了!还有7天,该如何准备?

(一&#xff09;赛道一:工程实践赛 1、理论赛阶段由参赛队伍使用两台电脑分别登录学唐平台作答&#xff0c;仿真实践赛阶段为参赛队伍共用一台电脑&#xff0c;以竞赛小组方式共同作答&#xff08;按照报名顺序&#xff0c;用第1选手账号登录仿真平台&#xff09;。最终统计理…...

iframe学习与应用场景指南

一、iframe核心原理与学习路径 1. 嵌套网站的本质原理 技术特性&#xff1a; • 浏览器为每个iframe创建独立的window对象和DOM环境 • 资源独立加载&#xff1a;子页面拥有自己的CSS/JS/Cookie作用域 • 跨域限制&#xff1a;同源策略下无法直接访问DOM&#xff08;需CORS或…...

WebGL数学手记:矩阵基础

一、矩阵的定义 矩阵&#xff0c;数学术语。在数学中&#xff0c;矩阵&#xff08;Matrix&#xff09;是一个按照长方阵列排列的复数或实数集合。 1.英文发音&#xff08;Matrix&#xff09; Matrix的发音类似于中文的[美吹克斯]&#xff0c;知道它的发音。方便后期看教程时…...

IO流——字符输入输出流:FileReader FileWriter

一、文件字符输入流&#xff1a;FileReader 作用&#xff1a;以内存为基准&#xff0c;可以把文件中的数据以字符的形式读入到内存中去 public class Test5 {public static void main(String[] args) {try (Reader fr new FileReader("E:\\IDEA\\JavaCodeAll\\file-io-t…...

Graphpad Prism for Mac医学绘图

Graphpad Prism for Mac医学绘图 一、介绍 GraphPad Prism for Mac是一款功能强大、易于使用的科学和统计分析软件&#xff0c;适用于各种类型的数据处理和可视化需求。无论您是进行基础研究、临床试验还是学术写作&#xff0c;GraphPad Prism for Mac都能为您短时间内做出最…...

使用人工智能大模型腾讯元宝,如何免费快速做高质量的新闻稿?

今天我们学习使用人工智能大模型腾讯元宝&#xff0c;如何免费快速做高质量的新闻稿&#xff1f; 手把手学习视频地址&#xff1a;https://edu.csdn.net/learn/40402/666431 第一步在腾讯元宝对话框中输入如何协助老师做新闻稿&#xff0c;通过提问&#xff0c;我们了解了老师…...