多目标鲸鱼优化算法(Multi‑Objective Whale Optimization Algorithm, MOWOA)是基于单目标鲸鱼优化算法(WOA)扩展而来的多目标元启发式算法,核心是将座头鲸气泡网捕食行为与帕累托最优、非支配排序、外部存档等多目标优化机制融合,在平衡全局探索与局部开发的同时,高效逼近多目标优化问题(MOP)的帕累托最优前沿(PF)。其兼具WOA参数少、收敛快的优势,又适配多目标冲突场景,是工程与科学多目标优化的主流算法之一。
参考文献:
[1]I. R. Kumawat, S. J. Nanda and R. K. Maddila, “Multi-objective whale optimization,” TENCON 2017 – 2017 IEEE Region 10 Conference, Penang, Malaysia, 2017, pp. 2747-2752, doi: 10.1109/TENCON.2017.8228329.
一、算法基础与核心思想
1. 单目标WOA原理(MOWOA的基础)
WOA模拟座头鲸气泡网捕食的三种行为:
-
包围猎物(Encircling Prey):向当前最优解靠近
D⃗=∣C⃗⋅X⃗∗(t)−X⃗(t)∣\\vec{D}=|\\vec{C}\\cdot\\vec{X}^*(t)-\\vec{X}(t)|D=∣C⋅X∗(t)−X(t)∣
X⃗(t+1)=X⃗∗(t)−A⃗⋅D⃗\\vec{X}(t+1)=\\vec{X}^*(t)-\\vec{A}\\cdot\\vec{D}X(t+1)=X∗(t)−A⋅D
其中:A⃗=2ar1⃗−a\\vec{A}=2a\\vec{r_1}-aA=2ar1−a,C⃗=2r2⃗\\vec{C}=2\\vec{r_2}C=2r2;aaa从2线性递减到0;r1⃗,r2⃗∈[0,1]\\vec{r_1},\\vec{r_2}\\in[0,1]r1,r2∈[0,1]随机向量;X⃗∗\\vec{X}^*X∗为当前最优解。 -
气泡网攻击(Bubble-net Attack):两种策略(概率ppp选择)
- 收缩包围(Shrinking Encircling):∣A∣<1|A|<1∣A∣<1时,缩小搜索范围(局部开发)
- 螺旋更新(Spiral Updating):沿螺旋路径逼近最优解
X⃗(t+1)=D⃗′⋅ebl⋅cos(2πl)+X⃗∗(t)\\vec{X}(t+1)=\\vec{D}'\\cdot e^{bl}\\cdot\\cos(2\\pi l)+\\vec{X}^*(t)X(t+1)=D′⋅ebl⋅cos(2πl)+X∗(t)
其中:D⃗′=∣X⃗∗(t)−X⃗(t)∣\\vec{D}'=|\\vec{X}^*(t)-\\vec{X}(t)|D′=∣X∗(t)−X(t)∣;bbb为螺旋形状常数;l∈[−1,1]l\\in[-1,1]l∈[−1,1]随机数。
-
随机搜索(Search for Prey):∣A∣>1|A|>1∣A∣>1时,随机选择个体引导,扩大搜索范围(全局探索)
D⃗=∣C⃗⋅X⃗rand(t)−X⃗(t)∣\\vec{D}=|\\vec{C}\\cdot\\vec{X}_{rand}(t)-\\vec{X}(t)|D=∣C⋅Xrand(t)−X(t)∣
X⃗(t+1)=X⃗rand(t)−A⃗⋅D⃗\\vec{X}(t+1)=\\vec{X}_{rand}(t)-\\vec{A}\\cdot\\vec{D}X(t+1)=Xrand(t)−A⋅D
2. MOWOA的核心扩展(多目标适配)
MOWOA在WOA基础上,引入多目标优化核心机制:
- 帕累托支配(Pareto Dominance):判断解的优劣,寻找非支配解集
- 非支配排序(Non-dominated Sorting):将种群划分为不同前沿(Front),优先保留前沿1的解
- 拥挤距离(Crowding Distance):衡量解的分布稀疏度,维持种群多样性
- 外部存档(External Archive):存储全局非支配解,作为迭代引导
- 领导者选择(Leader Selection):从存档中选解引导搜索,避免单一个体主导
二、MOWOA算法流程(详细步骤)
1. 初始化
- 随机生成初始种群X⃗i(i=1,2,…,N)\\vec{X}_i(i=1,2,…,N)Xi(i=1,2,…,N),NNN为种群规模
- 计算每个个体的多目标适应度值
- 初始化外部存档(Archive),存入初始非支配解
- 设置迭代次数TmaxT_{max}Tmax、参数aaa、bbb、ppp等
2. 迭代更新(核心循环)
For 迭代次数t=1t=1t=1 to TmaxT_{max}Tmax:
更新控制参数
- a=2−2tTmaxa=2-\\frac{2t}{T_{max}}a=2−Tmax2t(线性递减)
- 随机生成r1⃗,r2⃗,l,p\\vec{r_1},\\vec{r_2},l,pr1,r2,l,p(p∈[0,1]p\\in[0,1]p∈[0,1])
- 计算A⃗=2ar1⃗−a\\vec{A}=2a\\vec{r_1}-aA=2ar1−a,C⃗=2r2⃗\\vec{C}=2\\vec{r_2}C=2r2
个体位置更新(基于多目标引导)
For 每个鲸鱼个体X⃗i\\vec{X}_iXi:
- 从外部存档中选择一个领导者解X⃗∗\\vec{X}^*X∗(常用随机/拥挤距离选择)
- 按概率ppp选择更新策略:
- Case 1:p≤0.5p\\le0.5p≤0.5
- 若∣A∣≤1|A|\\le1∣A∣≤1:包围/收缩,用X⃗∗\\vec{X}^*X∗更新
X⃗i(t+1)=X⃗∗(t)−A⃗⋅∣C⃗⋅X⃗∗(t)−X⃗i(t)∣\\vec{X}_i(t+1)=\\vec{X}^*(t)-\\vec{A}\\cdot|\\vec{C}\\cdot\\vec{X}^*(t)-\\vec{X}_i(t)|Xi(t+1)=X∗(t)−A⋅∣C⋅X∗(t)−Xi(t)∣ - 若∣A∣>1|A|>1∣A∣>1:随机搜索,选随机个体X⃗rand\\vec{X}_{rand}Xrand更新
X⃗i(t+1)=X⃗rand(t)−A⃗⋅∣C⃗⋅X⃗rand(t)−X⃗i(t)∣\\vec{X}_i(t+1)=\\vec{X}_{rand}(t)-\\vec{A}\\cdot|\\vec{C}\\cdot\\vec{X}_{rand}(t)-\\vec{X}_i(t)|Xi(t+1)=Xrand(t)−A⋅∣C⋅Xrand(t)−Xi(t)∣
- 若∣A∣≤1|A|\\le1∣A∣≤1:包围/收缩,用X⃗∗\\vec{X}^*X∗更新
- Case 2:p>0.5p>0.5p>0.5
- 螺旋气泡网攻击
X⃗i(t+1)=∣X⃗∗(t)−X⃗i(t)∣⋅ebl⋅cos(2πl)+X⃗∗(t)\\vec{X}_i(t+1)=|\\vec{X}^*(t)-\\vec{X}_i(t)|\\cdot e^{bl}\\cdot\\cos(2\\pi l)+\\vec{X}^*(t)Xi(t+1)=∣X∗(t)−Xi(t)∣⋅ebl⋅cos(2πl)+X∗(t)
- 螺旋气泡网攻击
- Case 1:p≤0.5p\\le0.5p≤0.5
环境选择(种群与存档更新)
- 合并当前种群+外部存档,得到混合种群
- 对混合种群执行非支配排序,划分前沿
- 按前沿优先级+拥挤距离筛选,保留NNN个个体作为新种群
- 更新外部存档:仅保留混合种群中的非支配解,控制存档规模
终止判断
- 达到TmaxT_{max}Tmax则停止,返回外部存档的帕累托最优解集
三、关键机制详解
1. 非支配排序与拥挤距离
- 非支配排序:将解按支配关系分层,前沿1为最优非支配集
- 拥挤距离:同一前沿内,解的目标空间分布度量;距离越大,多样性越好,用于筛选与存档维护
2. 外部存档(Archive)
- 作用:存储全局最优非支配解,作为迭代引导,避免丢失优质解
- 维护策略:
- 新解加入前,剔除被支配解
- 存档溢出时,按拥挤距离删除分布密集的解
- 常用网格法或拥挤距离法管理存档
3. 领导者选择策略
MOWOA不再依赖单一全局最优,而是从外部存档选领导者,常见策略:
- 随机选择:简单高效,保持多样性
- 拥挤距离优先:选分布稀疏的解,提升全局探索
- 偏好导向:按决策者偏好选解,适配工程决策
四、MOWOA的特点与优势
1. 核心优势
- 原理简洁,参数少:仅需种群规模、迭代次数、螺旋常数bbb等,易实现
- 探索-开发平衡好:aaa线性递减、∣A∣|A|∣A∣控制全局/局部搜索,避免早熟
- 多目标适配性强:结合帕累托机制,有效求解冲突目标
- 收敛速度快:相比NSGA-II、MOPSO等,在部分测试集上收敛更快
2. 局限性
- 高维、大规模问题时,非支配排序复杂度高
- 需合理设置存档规模,过小易丢失解,过大增加计算量
- 对离散/组合优化问题,需额外编码适配
五、应用场景
MOWOA广泛用于多目标优化决策场景:
- 工程设计:结构轻量化+强度优化、电路参数多目标设计
- 能源系统:风电/光伏出力优化(成本+效率+环保)
- 路径规划:机器人路径(距离+时间+能耗)
- 图像处理:特征选择(准确率+维度)、图像检索
- 通信网络:资源分配(吞吐量+延迟+能耗)
六、MOWOA应用
MOWOA用于求解46个多目标测试函数(ZDT1、ZDT2、ZDT3、ZDT4、ZDT6、DTLZ1-DTLZ7、WFG1-WFG10、UF1-UF10、CF1-CF10、Kursawe、Poloni、Viennet2、Viennet3)以及1个工程应用(盘式制动器设计),并采用IGD、GD、HV、SP进行评价。
6.1部分代码
close all;
clear ;
clc;
%%
% TestProblem测试问题说明:
%一共46个多目标测试函数,详情如下:
%1-5:ZDT1、ZDT2、ZDT3、ZDT4、ZDT6
%6-12:DZDT1-DZDT7
%13-22:wfg1-wfg10
%23-32:uf1-uf10
%33-42:cf1-cf10
%43-46:Kursawe、Poloni、Viennet2、Viennet3
%47 盘式制动器设计 温泽宇,谢珺,谢刚,续欣莹.基于新型拥挤度距离的多目标麻雀搜索算法[J].计算机工程与应用,2021,57(22):102-109.
%%
TestProblem=47;%1-47
MultiObj = GetFunInfo(TestProblem);
MultiObjFnc=MultiObj.name;%问题名
% Parameters
params.Np = 100; % Population size
params.Nr = 100; % Repository size
params.maxgen =100; % Maximum number of generations
[x,f] = MOwoa(params,MultiObj);
6.2部分结果







