1. 概述

本文将详细介绍 鲸鱼优化算法(Whale Optimization Algorithm, WOA) 的原理与实现。WOA 是一种元启发式优化算法,模仿座头鲸的捕食行为,适用于解决复杂的数值优化问题。

我们将从算法的基本概念讲起,逐步解析其数学模型,并通过一个简单的优化示例帮助理解其运行机制。


2. 什么是鲸鱼优化算法?

鲸鱼优化算法(WOA)是一种基于群体智能的元启发式优化算法,由 Mirjalili 和 Lewis 于 2016 年提出,用于解决数值优化问题。其灵感来源于座头鲸独特的捕食方式 —— 气泡网捕食法(bubble-net hunting)

这类算法通常用于解决传统优化方法难以处理的问题,比如高维、非线性、多峰函数等。


3. 座头鲸的捕食行为

座头鲸是世界上体型最大的哺乳动物之一,具有高度的社会性和智能行为。它们采用一种独特的捕食策略 —— 气泡网捕食法

  • 领头鲸发现猎物后下潜约12米,围绕猎物形成螺旋状气泡
  • 辅助鲸通过声音协调捕食节奏
  • 其他鲸鱼则排列成队形,协同攻击猎物

这种行为可以形象地表示为如下图示:

Whales search randomly for a pry


4. 鲸鱼优化算法的数学模型

WOA 的核心思想是模拟座头鲸的捕食行为,分为三个阶段:

  1. 探索阶段(Exploration Phase):随机搜索猎物
  2. 围猎阶段(Encircling Phase):围绕猎物移动
  3. 开发阶段(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 的完整流程图:

Copy of Flowchart of whale Optimization algorithm

流程如下:

  1. 初始化鲸鱼种群和参数
  2. 评估每个个体的适应度
  3. 设置最大迭代次数
  4. 进入迭代循环:
    • 探索猎物(Equation 1)
    • 围猎(Equation 5)
    • 气泡网攻击(Equation 8)
    • 更新参数 $\vec{a}, \vec{A}, \vec{C}, p$
  5. 判断是否达到最大迭代次数,若未达到则继续迭代

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 的优势在于其简单性和可扩展性,适合用于工程优化、机器学习超参数调优等领域。


原始标题:Whale Optimization Algorithm