1 论文简介
《Non-Dominated Sorting Whale Optimization Algorithm (NSWOA): A Multi-Objective Optimization Algorithm for Solving Engineering Design Problems》是由 Pradeep Jangir 和 Narottam Jangir 于 2017 年发表在《Global Journal of Researches in Engineering: F Electrical and Electronics Engineering》上的一篇论文。该论文针对现实世界中普遍存在的、目标相互冲突的多目标优化问题(例如,设计产品时需要同时最小化成本和最大化性能),提出了名为非支配排序鲸鱼优化算法(NSWOA)的核心方法。该方法通过将新颖的鲸鱼优化算法(WOA)与非支配排序、拥挤距离机制和外部档案集相结合,能够有效搜索并保存一系列最优折衷解(即帕累托最优前沿)。NSWOA 因其在收敛速度、解的分布均匀性以及应对复杂约束方面的良好表现,被广泛应用于标准测试函数、机械结构设计(如四杆桁架、减速器)以及电力系统经济排放调度等复杂工程领域,为求解多目标优化问题提供了一个高效的新工具,在进化计算与多目标优化领域具有一定的影响力。
2 算法原理
NSWOA 算法是鲸鱼优化算法(WOA)的多目标扩展版本,其核心在于引入非支配排序和拥挤距离机制来引导种群朝真实的帕累托前沿进化,并利用外部档案集保存历史最优非支配解。
步骤 1:初始化与适应度评估
首先,初始化鲸鱼种群,随机生成一组解作为鲸鱼的位置。计算每个位置对应的所有目标函数值,即适应度。
步骤 2:位置更新策略(源自 WOA)
鲸鱼的位置更新模拟了其包围猎物和气泡网捕食的行为,由以下数学公式描述:
包围猎物:鲸鱼识别当前最优解(猎物)并朝其移动。
- 距离向量计算: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
其中,X ⃗ ∗ ( t ) \vec{X}^*(t)X∗(t)是当前迭代中的最优位置向量,X ⃗ ( t ) \vec{X}(t)X(t)是当前位置向量。系数向量A ⃗ \vec{A}A和C ⃗ \vec{C}C的计算方式为:
A ⃗ = 2 a ⃗ ⋅ r ⃗ 1 − a ⃗ , C ⃗ = 2 ⋅ r ⃗ 2 \vec{A} = 2\vec{a} \cdot \vec{r}_1 - \vec{a}, \quad \vec{C} = 2 \cdot \vec{r}_2A=2a⋅r1−a,C=2⋅r2
这里a ⃗ \vec{a}a在迭代中从 2 线性减小到 0,r ⃗ 1 \vec{r}_1r1和r ⃗ 2 \vec{r}_2r2是[ 0 , 1 ] [0,1][0,1]内的随机向量。
气泡网攻击(开发阶段):鲸鱼以螺旋路径逼近猎物。
- 螺旋更新位置:
X ⃗ ( t + 1 ) = D ⃗ ′ ⋅ e b l ⋅ 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)∣表示鲸鱼与当前最优解的距离,b bb是定义螺旋形状的常数,l ll是[ − 1 , 1 ] [-1,1][−1,1]内的随机数。
- 螺旋更新位置:
算法以 50% 的概率在收缩包围机制(当p < 0.5 p < 0.5p<0.5且∣ A ⃗ ∣ < 1 |\vec{A}| < 1∣A∣<1时,使用包围猎物公式)和螺旋更新机制(当p ≥ 0.5 p \ge 0.5p≥0.5时)之间选择。
- 搜索猎物(探索阶段):当∣ A ⃗ ∣ > 1 |\vec{A}| > 1∣A∣>1时,鲸鱼不围绕当前最优解,而是随机选择一条鲸鱼作为参考进行全局探索。
- 距离向量:D ⃗ = ∣ C ⃗ ⋅ X ⃗ rand − X ⃗ ∣ \vec{D} = |\vec{C} \cdot \vec{X}_{\text{rand}} - \vec{X}|D=∣C⋅Xrand−X∣
- 位置更新:
X ⃗ ( t + 1 ) = X ⃗ rand − A ⃗ ⋅ D ⃗ \vec{X}(t+1) = \vec{X}_{\text{rand}} - \vec{A} \cdot \vec{D}X(t+1)=Xrand−A⋅D
其中,X ⃗ rand \vec{X}_{\text{rand}}Xrand是当前种群中的一个随机位置向量。
步骤 3:非支配排序与档案集维护
- 对当前种群和外部档案集中的所有解进行非支配排序。不被任何其他解支配的解被分配 Rank 1(最高等级),仅被一个解支配的解分配 Rank 2,依此类推。
- 使用拥挤距离计算同一非支配等级中解的密度。拥挤距离越大,说明该解周围越“空旷”,多样性越好。
- 将新的非支配解加入档案集。如果档案集已满,则优先移除拥挤距离最小的解(即最拥挤区域的解),以保持解的分布性。
步骤 4:领导者选择
在 WOA 的位置更新公式中,需要选择一个领导者(即X ⃗ ∗ \vec{X}^*X∗)。在 NSWOA 中,领导者从档案集中选择。选择概率与解的等级成反比,公式为:
P i = c / Rank i P_i = c / \text{Rank}_iPi=c/Ranki
其中,c cc是一个大于 1 的常数,Rank i \text{Rank}_iRanki是解i ii的非支配等级。这确保了更高等级(更优)的解有更大的概率被选为领导者,引导种群进化。
步骤 5:迭代与终止
重复步骤 2 至步骤 4,直到满足最大迭代次数。最终,外部档案集中保存的解集即为算法找到的近似帕累托最优前沿。
3 实验结果
4 参考文献
[1] Jangir P, Jangir N. Non-dominated sorting whale optimization algorithm (NSWOA): a multi-objective optimization algorithm for solving engineering design problems[J]. Glob. J. Res. Eng, 2017, 17: 15-42.
5 改进方向
- 改进非支配排序鲸鱼优化算法,然后在阈值分割领域进行应用。
- 改进阈值分割函数获取图像不同维度的特征,然后应用非支配排序鲸鱼优化算法获取阈值。
- 不同领域图像数据集处理。面向不同领域图像的特征,设计不同的阈值分割函数,然后应用非支配排序鲸鱼优化算法获取阈值。
- 彩色图像处理。
- 将优化算法推广至多目标领域。
6 MATLAB 代码
代码中包含详尽的注释!