多目标海洋捕食者算法(MOMPA)(Matlab代码)

目录

1 概述

2 海洋捕食者算法

3 Matlab部分数值实验

4 Matlab代码 

5 一点小智慧

 

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时,捕食者的最佳觅食策略是保持原位,而不管猎物的步长如何。

                    

多目标海洋捕食者算法(MOMPA)(Matlab代码)_第1张图片

                                     图 1.三段式觅食过程

海洋捕食者具有很强的记忆力,使它们能够记住每次成功捕食的位置。此过程是通过在 MPA 中存储来实现的。迭代后,将每个解决方案与当前最佳解决方案进行比较,如果存在更好的解决方案,则将其替换为当前最佳解决方案。MPA 的算法流程如算法 2所示。

多目标海洋捕食者算法(MOMPA)(Matlab代码)_第2张图片

3 Matlab部分数值实验

多目标海洋捕食者算法(MOMPA)(Matlab代码)_第3张图片

 多目标海洋捕食者算法(MOMPA)(Matlab代码)_第4张图片多目标海洋捕食者算法(MOMPA)(Matlab代码)_第5张图片

多目标海洋捕食者算法(MOMPA)(Matlab代码)_第6张图片

4 Matlab代码 

多目标海洋捕食者算法(MOMPA)(Matlab代码)_第7张图片

 完整代码点这里:多目标海洋捕食者算法(MOMPA)(Matlab代码)

5 一点小智慧

     《塔木德》上说:“不能空口白舌说谎——当你面对一个无赖的时候,可以破例。”
     犹太商人在商业场上见识多了,少不了也碰上类似的麻烦,怎么解决,还是智取为上。有则故事是这么说的 
     梅西克是个服装商,向布商克罗扬批发了1200马克的布料,却一直没付钱。克罗扬叫伙计去收了几次账,梅西克每次都溜掉,避而不见;给他寄催款单,梅西克又不理不睬。为此,克罗扬束手无策,连声叹气。
     这时,一个新来的店员对他说:
     “我有一个讨债的秘方。您不妨先写一封催款信给梅西克,叫他尽快归还1800马克的债,瞧瞧他有什么反应,再作打算。”
     克罗扬采纳了这位店员的办法,给梅西克去了一封信。果然,才2天,梅西克回信来了,信中说:  “克罗扬,你怎么讹我1800马克?随信附上1200马克,以后再也不来你这儿批货了,要打官司吗?你准输。”
     克罗扬还有必要同他打官司吗?
     店员的这则讨债秘方实际上是一个相当巧妙的以攻为守的攻心战术。本来克罗扬确实处于纯粹的守势,主动权一点不在他手上,梅西克只要避而不见,克罗扬就拿他毫无办法。总不能为1200马克去打官司。
     但反过来,从梅西克避而不见上可以看出,他对这笔债务倒还是承认的,只是想拖着不还,而不是彻底赖帐。这就使店员的以讹诈之计有了心理基础:拖欠1200马克不还的梅西克,可以高枕无忧,尽让克罗扬一个人着急,要打官司也可以先让他忙乎,大不了到时候还给他,并没有额外的损失。而现在1200马克突然变成了1800马克,这就由不得梅西克不出来辩解了,因为仍然像对待催款单那样置之不理,就意味着默认了克罗扬开出的单,次数多了,日后真打起官司来,再要证明只拖欠1200马克就麻烦了,何况就是拖欠1200马克也好做不好说。原先是想占别人的便宜,哪能让别人把便宜占了去?占了理的梅西克不能不说个清楚,可这样一来,原先主动的梅西克变成了纯粹的被动,他不能再避而不见了。只要他一露面,1200马克也就露面了。因为犹太商人一般很少有空口白舌说谎的习惯。
     犹太人所主张的是:对付一个正常的客户要诚实守信;对待不讲信用的人,方式也可以灵活些。 

你可能感兴趣的:(#,电气期刊论文,算法,matlab)