2024最新多目标优化算法:多目标螳螂搜索算法MOMSA求解46个多目标测试函数+1个工程应用+4种评价指标(提供MATLAB代码)

一、多目标螳螂搜索算法MOMSA

多目标螳螂搜索算法(Multi-objective Mantis Search Algorithm ,MOMSA)由Mohammed Jameel和Mohamed Abouhawwash于2024年提出,其灵感来自于螳螂独特的狩猎行为和性同类相食行为。所提出的 MOMSA 算法采用相同的底层 MSA 收敛机制,并结合精英非支配排序方法来估计帕累托最优解。此外,MOMSA采用拥挤距离机制来增强最优解对所有目标的覆盖范围。

参考文献:

1\]Mohammed Jameel, Mohamed Abouhawwash,**Multi-objective Mantis Search Algorithm (MOMSA): A novel approach for engineering design problems and validation** ,Computer Methods in Applied Mechanics and Engineering,Volume 422,2024,116840,ISSN 0045-7825,[https://doi.org/10.1016/j.cma.2024.116840.](https://doi.org/10.1016/j.cma.2024.116840. "https://doi.org/10.1016/j.cma.2024.116840.") ### 二、部分MATLAB代码 MOMSA**求解46** **个多目标测试函数(ZDT1、ZDT2、ZDT3、ZDT4、ZDT6、DTLZ1-DTLZ7、WFG1-WFG10、UF1-UF10、CF1-CF10、Kursawe、Poloni、Viennet2、Viennet3)** **以及** **1** **个工程应用(盘式制动器设计),并采用四种评价指标(IGD,GD,HV,SP)评价。** 多目标优化算法的评价指标主要用于衡量算法在解决多目标优化问题时的性能和效果。以下是几个常用的评价指标的介绍: 1. Inverted Generational Distance (IGD):IGD是一种衡量算法生成的解集与真实前沿之间距离的指标。它通过计算算法生成的解集中每个解与真实前沿之间的最小距离,并对所有解的距离进行平均来评估算法的性能。IGD值越小,表示算法生成的解集越接近真实前沿。 2. Generational Distance (GD):GD是一种衡量算法生成的解集与真实前沿之间距离的指标。与IGD类似,GD也是通过计算算法生成的解集中每个解与真实前沿之间的距离,并对所有解的距离进行平均来评估算法的性能。GD值越小,表示算法生成的解集越接近真实前沿。 3. Hypervolume (HV):HV是一种衡量算法生成的解集所占据的超体积大小的指标。它通过计算算法生成的解集与真实前沿之间的超体积来评估算法的性能。HV值越大,表示算法生成的解集所占据的超体积越大,即解集的多样性和覆盖面积越好。 4. Spread (SP):SP是一种衡量算法生成的解集的分布均匀性的指标。它通过计算算法生成的解集中相邻解之间的距离来评估算法的性能。SP值越大,表示算法生成的解集的分布越均匀,解集的多样性和覆盖面积越好。 ``` close all; clear ;  clc; %% % TestProblem测试问题说明: %一共46个多目标测试函数,详情如下: %1-5:ZDT1、ZDT2、ZDT3、ZDT4、ZDT6 %6-12:DZDT1-DZDT7 %13-22:wfg1-wfg10 %23-32:uf1-uf10 %33-42:cf1-cf10 %43-46:Kursawe、Poloni、Viennet2、Viennet3 %47 盘式制动器设计 温泽宇,谢珺,谢刚,续欣莹.基于新型拥挤度距离的多目标麻雀搜索算法[J].计算机工程与应用,2021,57(22):102-109. %% TestProblem=1;%1-47 MultiObj = GetFunInfo(TestProblem); MultiObjFnc=MultiObj.name;%问题名 % Parameters params.Np = 150;        % Population size params.Nr = 200;        % Repository size params.maxgen=100;    % Maximum number of generations numOfObj=MultiObj.numOfObj;%目标函数个数 D=MultiObj.nVar;%维度 f = MOMSA(params,MultiObj); X=f(:,1:D);%PS Obtained_Pareto=f(:,D+1:D+numOfObj);%PF if(isfield(MultiObj,'truePF'))%判断是否有参考的PF True_Pareto=MultiObj.truePF; %%  Metric Value % ResultData的值分别是IGD、GD、HV、Spacing  (HV越大越好,其他指标越小越好) ResultData=[IGD(Obtained_Pareto,True_Pareto),GD(Obtained_Pareto,True_Pareto),HV(Obtained_Pareto,True_Pareto),Spacing(Obtained_Pareto)]; else     %计算每个算法的Spacing,Spacing越小说明解集分布越均匀     ResultData=Spacing(Obtained_Pareto);%计算的Spacing end %% disp('Repository fitness values are stored in Obtained_Pareto'); disp('Repository particles positions are store in X'); ``` ### 三、部分结果 ![](https://file.jishuzhan.net/article/1766623378711515138/b47f09f4355687605fcaf603d1a52e96.webp) ![](https://file.jishuzhan.net/article/1766623378711515138/bbc31720e98f346268782c7c62ac3886.webp) ![](https://file.jishuzhan.net/article/1766623378711515138/3609b5cc62be75ef0b2afb7c1eebab7e.webp) ![](https://file.jishuzhan.net/article/1766623378711515138/edb6ba84dcfc9ce8b26070503ba6a086.webp) ![](https://file.jishuzhan.net/article/1766623378711515138/17fe5fd88b39ac1bae05fea26a86bc21.webp) ![](https://file.jishuzhan.net/article/1766623378711515138/7164e3e9e1da4ce5c5257d83408ddac4.webp) ### 四、完整MATLAB代码 [2024最新多目标优化算法:多目标螳螂搜索算法MOMSA求解46个多目标测试函数+1个工程应用+4种评价指标](https://mbd.pub/o/bread/ZZyVk5Zq "2024最新多目标优化算法:多目标螳螂搜索算法MOMSA求解46个多目标测试函数+1个工程应用+4种评价指标") ![](https://file.jishuzhan.net/article/1766623378711515138/a458b9b6bb3c80d05d1b48e466da1fda.webp) ![](https://file.jishuzhan.net/article/1766623378711515138/bc40c38121cb7da918c55400ec4be19f.webp)

相关推荐
Coder_Boy_5 小时前
技术发展的核心规律是「加法打底,减法优化,重构平衡」
人工智能·spring boot·spring·重构
牛奔5 小时前
Go 如何避免频繁抢占?
开发语言·后端·golang
会飞的老朱7 小时前
医药集团数智化转型,智能综合管理平台激活集团管理新效能
大数据·人工智能·oa协同办公
聆风吟º9 小时前
CANN runtime 实战指南:异构计算场景中运行时组件的部署、调优与扩展技巧
人工智能·神经网络·cann·异构计算
寻星探路9 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
Codebee11 小时前
能力中心 (Agent SkillCenter):开启AI技能管理新时代
人工智能
lly20240611 小时前
Bootstrap 警告框
开发语言
2601_9491465311 小时前
C语言语音通知接口接入教程:如何使用C语言直接调用语音预警API
c语言·开发语言
你撅嘴真丑12 小时前
第九章-数字三角形
算法
曹牧12 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言