1 概述
本文提出了最近提出的海洋捕食者算法(MPA)的多目标版本,称为多目标海洋捕食者算法(MOMPA)。在此算法中,引入了一个外部归档组件来存储到目前为止找到的非主导帕累托最优解。基于精英选择方法,提出一种顶级捕食者选择机制,从档案中选择有效的解决方案作为顶级捕食者,模拟捕食者的觅食行为。利用CEC2019多模态多目标基准函数对所提算法的性能进行了评价,并与9种最先进的多目标元启发式算法进行了比较。此外,利用7个多目标工程设计问题(车侧撞击问题、齿轮系设计问题、焊接梁设计问题、盘式制动器设计问题、两条桁架设计问题、弹簧设计问题和悬臂梁设计问题)进一步验证了所提算法的有效性。结果表明,所提出的MOMPA算法不仅提供了非常有竞争力的结果,而且优于其他算法。
与单目标相比,多目标的最大优点是可以同时处理多个冲突目标,并获得一组帕累托最优解。解决方案集包含更有效的信息,可以为决策者提供更多的参考信息。与多目标算法相对应的单目标算法也相应发展起来。主要原因是单目标算法在解决复杂的多目标问题方面存在许多障碍。海洋捕食者算法(MPA)是Faramarzi等人最近提出的一种基于群智能的算法。该算法模拟了海洋捕食者的猎物狩猎行为,其中捕食者根据与猎物的相遇率,采用最优觅食策略。MPA算法具有参数少、计算速度快、计算精度高等特点,目前还没有多目标版本,因此可以考虑将其转换为多目标版本来解决多目标优化问题。各种多目标优化算法已在文献中列出,但根据NF定理,从逻辑上证明没有一种算法可以解决所有优化的问题,因此研究人员开发新的算法或增强现有算法的性能。该定理不仅适用于单目标优化算法,也适用于多目标优化算法。这也是这项工作的动机。基于海洋捕食者算法,提出一种新的多目标优化算法,即多目标海洋捕食者算法(MOMPA)。
2 海洋捕食者算法
本文结构如下:
1.存档组件集成到MPA中,以存储迄今为止发现的非主导帕累托最优解决方案。
2.提出一种顶级捕食者选择机制,从档案中选择相邻解数最少的解,并确定其作为群体搜索的指南。
3.通过使用上述两个组成部分,提出了MPA的多目标版本。
4.使用CEC2019多目标测试套件和七个工程设计问题评估了MOMPA的性能,并与几种最先进的多目标算法进行了比较。
本文的其余部分组织如下:第2节介绍了多目标优化问题的基本概念以及在多目标优化领域所做的相关研究工作。第3节介绍了海洋捕食者算法,并提出了一种多目标海洋捕食者算法。第4节介绍了多目标海洋捕食者算法。第5节介绍了结果和讨论。在第6节中,使用了七个工程示例来测试MOMPA的性能。此外,实验结果在第7节中进行了深入分析。最后,第8部分是对未来工作的总结和展望。
最近,Faramarzi等人提出了一种新的高效元启发式算法,称为海洋捕食者算法。该算法模仿海洋捕食者的行为,它们使用Levy和Brownian运动作为它们捕食猎物的最佳觅食机制。捕食者的觅食行为主要有三个阶段,根据捕食者和猎物之间的速度比不同而划分,Levy和Brownian运动将在这三个阶段交替进行,图1显示了捕食者三阶段觅食的示意图。当捕食者和猎物之间的速度比v很小,等于0.1时,捕食者的最佳失落策略是Levy运动,无论此时猎物是Levy运动还是布朗运动。此阶段是算法的探索阶段。当v近似等于1时,捕食者和猎物的速度相等,如果猎物以Levy步移,则捕食者以布朗步移。当速度比v大于10时,捕食者的最佳觅食策略是保持原位,而不管猎物的步长如何。
海洋捕食者具有很强的记忆力,使它们能够记住每次成功捕食的位置。此过程是通过在 MPA 中存储来实现的。迭代后,将每个解决方案与当前最佳解决方案进行比较,如果存在更好的解决方案,则将其替换为当前最佳解决方案。MPA 的算法流程如算法 2所示。
数学模型:
详细数学模型及解释见第4部分。
3 Matlab部分数值实验
参考文献
[1] X. Zhang, Y. Tian, R. Cheng, and Y. Jin, An efficient approach to
nondominated sorting for evolutionary multiobjective optimization, IEEE
Transactions on Evolutionary Computation, 2015, 19(2): 201-213.
[2] X. Zhang, Y. Tian, R. Cheng, and Y. Jin, A decision variable
clustering based evolutionary algorithm for large-scale many-objective
optimization, IEEE Transactions on Evolutionary Computation, 2018, 22(1):
97-112.
5 多目标海洋捕食者算法(MOMPA)求解旅行商问题
5.1 旅行商知识
这篇博客总结过,很详细:运筹学——图论与最短距离
5.2 运行结果
function Draw_Path(Path,X) %{输入:待画路线 城市的坐标位置;输出:旅行商的路线} R = [Path(1,:) Path(1,1)]; % 一共有n个城市,但是这里R有n+1个值,是为了让路径最后再回到起点 A = X(R,:); %根据R将坐标顺序存入A中 row = size(A,1); %实际上row=n+1 %% 绘图 figure; hold on plot(X(:,1),X(:,2),'ro') %X(:,1),X(:,2)分别代表的X轴坐标和Y轴坐标 for i = 2:row [arrowx,arrowy] = dsxy2figxy(gca,A(i-1:i,1),A(i-1:i,2)); %dsxy2figxy坐标转换函数,记录两个点 annotation('textarrow',arrowx,arrowy,'HeadWidth',3,'color',[1,0,1]); %将这两个点连接起来 end hold off %% 绘制路线图 figure(2); xlabel('横坐标x') ylabel('纵坐标y') title('旅行商轨迹图') end