1. 概述
本文将详细介绍 鲸鱼优化算法(Whale Optimization Algorithm, WOA) 的原理与实现。WOA 是一种元启发式优化算法,模仿座头鲸的捕食行为,适用于解决复杂的数值优化问题。
我们将从算法的基本概念讲起,逐步解析其数学模型,并通过一个简单的优化示例帮助理解其运行机制。
2. 什么是鲸鱼优化算法?
鲸鱼优化算法(WOA)是一种基于群体智能的元启发式优化算法,由 Mirjalili 和 Lewis 于 2016 年提出,用于解决数值优化问题。其灵感来源于座头鲸独特的捕食方式 —— 气泡网捕食法(bubble-net hunting)。
这类算法通常用于解决传统优化方法难以处理的问题,比如高维、非线性、多峰函数等。
3. 座头鲸的捕食行为
座头鲸是世界上体型最大的哺乳动物之一,具有高度的社会性和智能行为。它们采用一种独特的捕食策略 —— 气泡网捕食法:
- 领头鲸发现猎物后下潜约12米,围绕猎物形成螺旋状气泡
- 辅助鲸通过声音协调捕食节奏
- 其他鲸鱼则排列成队形,协同攻击猎物
这种行为可以形象地表示为如下图示:
4. 鲸鱼优化算法的数学模型
WOA 的核心思想是模拟座头鲸的捕食行为,分为三个阶段:
- 探索阶段(Exploration Phase):随机搜索猎物
- 围猎阶段(Encircling Phase):围绕猎物移动
- 开发阶段(Exploitation Phase):使用气泡网攻击猎物
下面我们分别介绍这三个阶段的数学模型。
4.1 探索阶段:随机搜索模型
在该阶段,搜索代理(鲸鱼)通过随机选择其他代理的位置来更新自身位置:
$$ \vec{D} = |\vec{C} \cdot \vec{X}{\text{rand}} - \vec{X}| $$ $$ \vec{X}(t+1) = \vec{X}{\text{rand}} - \vec{A} \cdot \vec{D} $$
其中:
- $\vec{X}_{\text{rand}}$:从当前种群中随机选取的位置
- $\vec{A}, \vec{C}$:系数向量
这些系数的计算公式如下:
$$ \vec{A} = 2 \cdot \vec{a} \cdot \vec{r} - \vec{a} $$ $$ \vec{C} = 2 \cdot \vec{r} $$
其中:
- $\vec{r}$:[0,1] 之间的随机向量
- $\vec{a}$:从 2 线性递减到 0 的参数
4.2 围猎模型
在围猎阶段,鲸鱼会围绕当前最优解进行移动:
$$ D = |\vec{C} \cdot \vec{X}'(t) - \vec{X}(t)| $$ $$ \vec{X}(t+1) = \vec{X}'(t) - \vec{A} \cdot D $$
其中:
- $\vec{X}'$:当前最优解位置
- $\vec{X}$:当前鲸鱼位置
- $\vec{A}, \vec{C}$:如上定义的系数向量
4.3 开发阶段:气泡网攻击模型
此阶段模拟座头鲸围绕猎物做螺旋状运动,结合两种策略:
- 收缩包围机制(Shrinking Encircling Mechanism)
- 螺旋更新机制(Spiral Updating Mechanism)
4.3.1 收缩包围机制
$\vec{A}$ 在 [-a, a] 范围内随机取值,随着迭代次数增加,a 从 2 递减到 0。
4.3.2 螺旋更新机制
鲸鱼与猎物之间的距离计算如下:
$$ \vec{D}'' = |\vec{X}'(t) - \vec{X}(t)| $$
螺旋更新公式为:
$$ \vec{X}(t+1) = \vec{D}'' \cdot e^{bl} \cdot \cos(2\pi l) + \vec{X}' $$
其中:
- $l$:[-1,1] 之间的随机数
- $b$:螺旋形状常数
4.3.3 混合策略
最终位置更新公式如下:
$$ \vec{X}(t+1) = \begin{cases} \vec{X}'(t) - \vec{A} \cdot D & \text{if } p < 0.5 \ \vec{D}'' \cdot e^{bl} \cdot \cos(2\pi l) + \vec{X}' & \text{if } p \ge 0.5 \end{cases} $$
其中 $p$ 是随机概率,表示选择哪种方式更新位置。
5. 鲸鱼优化算法流程图
下面是一个 WOA 的完整流程图:
流程如下:
- 初始化鲸鱼种群和参数
- 评估每个个体的适应度
- 设置最大迭代次数
- 进入迭代循环:
- 探索猎物(Equation 1)
- 围猎(Equation 5)
- 气泡网攻击(Equation 8)
- 更新参数 $\vec{a}, \vec{A}, \vec{C}, p$
- 判断是否达到最大迭代次数,若未达到则继续迭代
6. 示例演示
我们通过一个简单的二维优化问题来演示 WOA 的执行过程。
6.1 问题定义
目标函数如下:
$$ \text{Fitness} = 4X(1)^2 - 2.1X(1)^4 + \frac{1}{3}X(1)^6 + X(1)X(2) - 4X(2)^2 + 4X(2)^4 $$
目标是找到使 Fitness 最小的 $X(1), X(2)$。
6.2 初始化参数
- 种群数量:5
- 最大迭代次数:100
- 初始 $a=2$,线性递减到 0
- $\vec{A}, \vec{C}$ 按公式(3)和(4)生成
6.3 初始种群及适应度
编号 | X(1) | X(2) | Fitness |
---|---|---|---|
1 | -1.5002 | -1.4834 | 16.0964 |
2 | -3.0340 | 3.3083 | 1.4945 |
3 | -2.4892 | 0.8526 | 2.1752 |
4 | 1.1604 | 0.4972 | 1.4192 ✅ |
5 | -0.2671 | 4.1719 | 2.4043 |
当前最优解为第 4 个个体,Fitness = 1.4192。
6.4 更新策略
根据 $p$ 的值选择更新方式:
$$ \begin{cases} \text{若 } p < 0.5 \text{,使用 Equation 5 和 6} \ \text{若 } p \ge 0.5 \text{,使用 Equation 7 和 8} \end{cases} $$
6.5 迭代更新
- 每次迭代更新所有鲸鱼的位置
- 更新 $\vec{a}, \vec{A}, \vec{C}, p$
- 重新评估 Fitness
- 若达到最大迭代次数,输出最优解
7. 总结
✅ WOA 是一种基于生物行为的元启发式优化算法
✅ 模拟座头鲸的捕食策略,包括探索、围猎和气泡网攻击
✅ 适用于高维、非线性、多峰优化问题
❌ 收敛速度和局部最优问题仍需结合其他策略优化
⚠️ 建议在实际应用中结合问题特性调整参数
WOA 的优势在于其简单性和可扩展性,适合用于工程优化、机器学习超参数调优等领域。