一、极光优化算法
极光优化算法(Polar Lights Optimization, PLO)是2024年提出的一种新型的元启发式优化算法,它从极光这一自然现象中汲取灵感。极光是由太阳风中的带电粒子在地球磁场的作用下,与地球大气层中的气体分子碰撞而产生的光显示。PLO算法通过模拟这些带电粒子的运动轨迹和动力学过程,提出了一种有效的优化策略,旨在解决复杂的优化问题。
算法原理
PLO算法的核心思想是模拟带电粒子在地球磁场中的运动,包括它们的旋转运动(gyration motion)、在极光椭圆区域内的行走(aurora oval walk),以及粒子间的碰撞(particle collision)。这些运动策略不仅模拟了自然界中粒子的行为,而且被设计用来平衡算法的全局探索能力和局部开发能力。
- 旋转运动(Gyration Motion):模拟带电粒子在地球磁场作用下沿磁力线的旋转运动。这种运动有助于算法在局部区域内进行细致的搜索,提高解的精度。
- 极光椭圆行走(Aurora Oval Walk):模拟带电粒子在极光椭圆区域内的自由移动,这种策略有助于算法进行全局探索,寻找更广泛的解空间。
- 粒子碰撞策略(Particle Collision Strategy):模拟带电粒子间的相互碰撞,这种策略有助于算法跳出局部最优解,增强解的多样性。
算法描述
PLO算法的实现步骤如下:
- 初始化:生成一个初始粒子群,每个粒子代表一个潜在的解。
- 适应度评估:对每个粒子计算其适应度值,即评估它们在优化问题中的表现。
- 更新最优解:根据适应度值更新全局最优解。
- 旋转运动:模拟带电粒子在地球磁场中的旋转运动,通过洛伦兹力和牛顿第二定律来描述粒子的运动方程。
- 极光椭圆行走:模拟带电粒子在极光椭圆区域内的行走,这种策略有助于算法进行全局探索。
- 粒子碰撞:模拟带电粒子间的相互碰撞,通过引入粒子碰撞策略来增强算法的多样性和逃避局部最优的能力。
- 迭代更新:重复上述步骤,直到满足停止条件(如达到最大迭代次数或解的质量满足要求)。
参考文献:
[1]Yuan, Chong, Dong Zhao, Ali Asghar Heidari, Lei Liu, Yi Chen and Huiling Chen. “Polar lights optimizer: Algorithm and applications in image segmentation and feature selection.” Neurocomputing 607 (2024): 128427.
二、多目标极光优化算法
针对单目标优化问题,极光优化算法(Polar Lights Optimization, PLO)已显示出其有效性。然而,在面对多目标优化问题时,需要一种能够同时处理多个冲突目标的算法。因此,本文提出多目标极光优化算法(Multi-objective Polar Lights Optimization, MOPLO)。MOPLO是PLO算法的多目标扩展,它能够有效地解决多目标优化问题。
为了验证MOPLO算法的性能,我们将其应用于一系列基准函数,包括ZDT1、ZDT2、ZDT3、ZDT4和ZDT6。这些基准函数广泛用于测试多目标优化算法的有效性。同时,为了全面评估该算法的收敛性和多样性,我们采用了六种性能评价指标(GD、IGD、HV、Spacing、Spread、Coverage),通过这些指标的综合评估,可以有效地衡量MOPLO算法在解决多目标优化问题时的性能表现。
MOPLO算法的执行流程如下:
- 种群初始化:首先,算法通过随机方式初始化一个种群,每个个体代表一个潜在的解决方案。
- 种群筛选:接着,算法对初始种群进行评估,并筛选出符合特定条件的个体。
- 子代生成:筛选后的个体通过交配操作产生新的子代个体。
- 环境选择:然后,算法使用环境选择算子对新生成的子代个体进行筛选,以确定哪些个体将参与下一轮迭代。
- 终止条件检查:算法持续迭代,直到满足预设的终止条件,如达到最大迭代次数或解的质量达到预定标准。
- Pareto解集确定:满足终止条件后,最后一次环境选择中保留的所有个体构成了近似的Pareto解集。
环境选择算子在这一过程中扮演着关键角色,它负责从子代个体中选择出能够支配种群中其他个体或者与其他个体互不支配的精英个体。这些精英个体代表了当前种群中的最优解。通过算法的迭代,每次迭代都选出精英个体,不断迭代这一过程,最终能够找到问题的解决方案。
2.1、六种性能评价指标介绍
-
Generational Distance (GD):
- GD指标用于衡量算法生成的非支配解集与真实帕累托前沿之间的平均距离。对于解集P中的每个点,找到其在参考集P*(通常是真实帕累托前沿的一个采样)中最近的点,然后计算它们之间的欧氏距离,最后取平均值。GD值越小,表示算法的收敛性越好,即解集越接近真实帕累托前沿。GD的优点是计算简单,但缺点是它仅衡量收敛性,无法评估多样性,且依赖于参考集的选择。
-
Inverted Generational Distance (IGD):
- IGD指标同时考虑了算法的收敛性和多样性。它计算真实帕累托前沿中的每个点到非支配解集中最近点的欧氏距离的平均值。IGD值越小,表示算法的性能越好,即解集在多样性和收敛性上都更接近真实帕累托前沿。IGD能够更全面地反映解集的性能。
-
Hypervolume (HV):
- HV指标用于衡量目标空间被非支配解集覆盖的程度。它需要一个参考点,通常是各个目标上的最大值形成的向量。HV值是算法求解得到的非占优解集与参考点之间形成的超立方体的体积。HV值越大,表示算法的收敛性和多样性越好。HV是一个综合性能指标,能够同时反映收敛性和多样性,且不需要先验知识。
-
Spacing:
- Spacing指标用于衡量解集中各个解的分布均匀性。它计算解集中每个解到其他解的最小距离的标准差。Spacing值越小,说明解集的分布越均匀。Spacing仅衡量解集的均匀性,而不考虑其广泛性。
-
Spread:
- Spread指标衡量解集在目标空间中的分布范围。它通常通过计算解集中最远两个解之间的距离来衡量。Spread值越大,表示解集的分布范围越广,反映了解集的多样性。
-
Coverage:
- Coverage指标用于衡量一个解集对另一个解集的覆盖能力。如果解集A的Coverage指标高于解集B,那么意味着解集A在某种程度上能够被解集B覆盖。这个指标通常用于比较两个解集的相对性能。
这些指标各有侧重点,GD和IGD主要关注算法的收敛性,而Spacing和Spread关注算法的多样性。HV是一个综合性指标,同时考虑了收敛性和多样性。Coverage则用于比较两个解集的相对覆盖能力。
2.2、部分MATLAB代码
%% 参数说明
%testProblem 测试问题序号
%Name 测试问题名称
%dim 测试问题维度
%numObj测试问题目标函数个数
%lb测试问题下界
%ub测试问题上界
%SearchAgents_no 种群大小
%Max_iter最大迭代次数
%Fbest 算法求得的POF
%Xbest 算法求得的POS
%TurePF 测试问题的真实pareto前沿
%Result 评价指标随迭代次数的变化值
testProblem=2;
[Name,dim,numObj,lb,ub]=GetProblemInfo(testProblem);%获取测试问题的相关信息
SearchAgents_no=200;%种群大小
Max_iter=200;%最大迭代次数
[Fbest,Xbest,TurePF,Result] = MOPLO(Max_iter,SearchAgents_no,Name,dim,numObj,lb,ub);%算法求解
2.3、部分结果
三、完整MATLAB代码
见下方名片