路径规划|多目标海洋捕食者算法(MOMPA)求解最短路径问题(Matlab代码实现)

 💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰

🚀支持:🎁🎁🎁如果觉得博主的文章还不错或者您用得到的话,可以关注一下博主,如果三连收藏支持就更好啦!这就是给予我最大的支持!

                                                           

📋📋📋本文目录如下:⛳️⛳️⛳️

目录

1 概述

2 海洋捕食者算法

3 Matlab部分数值实验

5 多目标海洋捕食者算法(MOMPA)求解旅行商问题

5.1 旅行商知识

5.2 运行结果

6 Matlab代码实现


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所示。

数学模型:

\text { Elite }=\left[\begin{array}{cccc} X_{1,1}^{I} & X_{1,2}^{I} & \cdots & X_{1, D}^{I} \\ X_{2,1}^{I} & X_{2,2}^{I} & \cdots & X_{2, D}^{I} \\ \vdots & \vdots & \vdots & \vdots \\ \vdots & \vdots & \vdots & \vdots \\ \vdots & \vdots & \vdots & \vdots \\ X_{N, 1}^{I} & X_{N, 2}^{I} & \cdots & X_{N, D}^{I} \end{array}\right]_{N \times D}

\text { Prey }=\left[\begin{array}{cccc} X_{1,1} & X_{1,1} & \cdots & X_{1, D} \\ X_{2,1} & X_{2,2} & \cdots & X_{2, D} \\ X_{3,1} & X_{3,2} & \cdots & X_{3, D} \\ \vdots & \vdots & \vdots & \vdots \\ \vdots & \vdots & \vdots & \vdots \\ X_{N, 1} & X_{N, 2} & \cdots & X_{N, D} \end{array}\right]_{N \times D}

\text { Elite }=\left[\begin{array}{cccc} X_{1,1}^{1} & X_{1,2}^{1} & \cdots & X_{1, D}^{1} \\ X_{2,1}^{2} & X_{2,2}^{2} & \cdots & X_{2, D}^{2} \\ \vdots & \vdots & \vdots & \vdots \\ X_{k, 1}^{k} & X_{k, 2}^{k} & \cdots & X_{k, D}^{k} \\ X_{k+1,1}^{1} & X_{k+1,2}^{1} & \cdots & X_{k+1, D}^{1} \\ \vdots & \vdots & \vdots & \vdots \\ X_{N, 1}^{m} & X_{N, 2}^{m} & \cdots & X_{N, D}^{m} \end{array}\right]_{N \times D}

详细数学模型及解释见第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

6 Matlab代码实现

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值