一、伞蜥优化算法
伞蜥优化算法(Frilled Lizard Optimization ,FLO) 是2024年提出的一种新颖的元启发式算法,它模仿了伞蜥在其自然栖息地中独特的狩猎行为。该算法的核心原则被详细地描述并数学结构化为两个不同的阶段:(i) 探索阶段,模仿蜥蜴对猎物的突然攻击;(ii) 开发阶段,模拟蜥蜴在进食后退到树梢的行为。FLO算法的灵感来源于伞蜥(Chlamydosaurus kingii)的两种特征行为:一是伞蜥在狩猎期间的坐等狩猎策略;二是伞蜥在进食后爬树的行为。基于这些行为,FLO算法被设计成两个阶段:探索阶段和开发阶段。在探索阶段,算法模拟伞蜥的捕食方式;在开发阶段,算法模拟伞蜥餐后撤退到树上的行为。
FLO算法流程
- 初始化:随机初始化伞蜥种群的位置。
- 探索阶段:模拟伞蜥的狩猎行为,通过快速移动寻找猎物。
- 开发阶段:模拟伞蜥进食后撤退到树上的行为,进行局部搜索以细化解决方案。
- 评估:评估每个伞蜥的适应度,选择最佳解决方案。
- 更新:根据适应度更新伞蜥的位置。
- 终止条件:如果满足终止条件(如达到最大迭代次数或找到满意的解决方案),则停止算法;否则,返回步骤2继续迭代。
FLO算法步骤
- 初始化种群:在问题解决空间中随机初始化伞蜥种群的位置。
- 计算适应度:对每个伞蜥进行评估,确定其作为解决方案的适应度。
- 探索阶段:
- 模拟伞蜥的快速攻击行为,通过随机选择和替换策略更新伞蜥的位置。
- 评估新位置的适应度,并与当前最佳适应度进行比较。
- 开发阶段:
- 模拟伞蜥撤退到树上的行为,进行局部搜索以改进解决方案。
- 更新伞蜥的位置,以寻找更优的解决方案。
- 更新最佳解决方案:如果新找到的解决方案比当前最佳解决方案更好,则更新最佳解决方案。
- 检查终止条件:如果满足预设的终止条件(如达到最大迭代次数或达到预定的适应度阈值),则输出最佳解决方案并停止算法;否则,返回步骤2继续迭代。
[1]Ibraheem Abu Falahah,Osama Al-Baik,Saleh Alomari,Gulnara Bektemyssova,Saikat Gochhait,Irina Leonova,OmParkash Malik,Frank Werner,Mohammad Dehghani.Frilled Lizard Optimization: A Novel Bio-Inspired Optimizer for Solving Engineering Applications[J].Computers, Materials & Continua,2024,79(6):3631-3678
二、多目标伞蜥优化算法
针对单目标优化问题,伞蜥优化算法已显示出其有效性。然而,在面对多目标优化问题时,需要一种能够同时处理多个冲突目标的算法。因此,本文提出多目标伞蜥优化算法(Multi-objective Frilled Lizard Optimization , MOFLO)。MOFLO是FLO算法的多目标扩展,它能够有效地解决多目标优化问题。
为了验证MOFLO算法的性能,用于求解基准函数DTLZ1-DTLZ9。这些基准函数广泛用于测试多目标优化算法的有效性。同时,为了全面评估该算法的收敛性和多样性,我们采用了六种性能评价指标(GD、IGD、HV、Spacing、Spread、Coverage),通过这些指标的综合评估,可以有效地衡量MOFLO算法在解决多目标优化问题时的性能表现。
MOFLO算法的执行流程如下:
- 种群初始化:首先,算法通过随机方式初始化一个种群,每个个体代表一个潜在的解决方案。
- 种群筛选:接着,算法对初始种群进行评估,并筛选出符合特定条件的个体。
- 子代生成:筛选后的个体通过交配操作产生新的子代个体。
- 环境选择:然后,算法使用环境选择算子对新生成的子代个体进行筛选,以确定哪些个体将参与下一轮迭代。
- 终止条件检查:算法持续迭代,直到满足预设的终止条件,如达到最大迭代次数或解的质量达到预定标准。
- 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] = MOFLO(Max_iter,SearchAgents_no,Name,dim,numObj,lb,ub);%算法求解
2.3、部分结果
三、完整MATLAB代码
见下方名片
标签:种群,Multi,迭代,解决方案,解集,收敛性,算法,优化 From: https://blog.csdn.net/weixin_46204734/article/details/143954367