当前位置: 首页 > news >正文

五种多目标优化算法(NSGA3、MOPSO、MOGWO、NGSA2、SPEA2)性能对比,包含47个多目标测试函数,6种评价指标,MATLAB代码

一、五种多目标算法及六种评价指标简介

  1. 多目标灰狼优化算法(MOGWO)
    MOGWO是由Mirjalili等人在2016年提出的,基于灰狼优化算法(GWO)的多目标版本。它引入了存档机制和改进的头狼选择方式,以处理多目标问题中的Pareto最优解。MOGWO通过在优化过程中存储和检索最合适的非支配解,并采用轮盘赌的方式从存档中选择头狼,以保持种群多样性并提高算法性能 。

  2. 多目标粒子群优化(MOPSO)
    MOPSO是一种基于粒子群优化(PSO)的多目标优化算法。它通过引入领导粒子的选择机制和粒子的多样性保持策略来解决多目标问题。MOPSO能够同时逼近Pareto最优前沿,并保持了解的多样性 。

  3. 非支配排序遗传算法II(NSGA-II)
    NSGA-II由Deb等人在1992年提出,是一种经典的多目标优化算法。它使用非支配排序和拥挤度计算来维持种群多样性。NSGA-II在处理最多三个目标的问题时表现良好,但对于高维多目标问题,其性能可能会下降 。

  4. SPEA2
    SPEA2(Strength Pareto Evolutionary Algorithm 2)是SPEA的改进版本,它在保持Pareto解的同时,引入了适应度共享和档案策略来提高种群多样性。SPEA2通过考虑个体间的相似性来避免种群早熟收敛 。

  5. NSGA-III
    NSGA-III是Deb在2013年提出的,用于解决高维多目标优化问题。它采用参考点基于的非支配排序方法,并引入了种群的自适应标准化和关联操作,以提高算法在高维问题上的性能和多样性 。

在多目标优化中,评价指标用于衡量算法性能,特别是它们在逼近Pareto最优前沿和保持解的多样性方面的表现。以下是一些常用的多目标评价指标的介绍:

  1. Inverse Generational Distance (IGD)
    IGD是一种衡量算法生成的非支配解集与真实Pareto前沿之间距离的指标。它计算了每个真实Pareto前沿的点到最近非支配解的距离的总和,并取平均值。IGD值越小,表示算法生成的解集与真实Pareto前沿越接近。

  2. Generational Distance (GD)
    GD是IGD的一个变体,它计算了每个非支配解到真实Pareto前沿最近点的距离的总和,并取平均值。GD值越小,表示算法生成的解集在Pareto前沿上分布得越好。

  3. Hypervolume (HV)
    HV指标衡量的是算法生成的非支配解集所覆盖的区域大小。通常,这个区域是在目标函数的最小值和最大值之间定义的。HV值越大,表示算法生成的解集在目标函数空间中覆盖的范围越广。

  4. Coverage
    Coverage指标衡量一个算法生成的Pareto前沿覆盖另一个算法生成的Pareto前沿的比例。如果算法A的Coverage指标高于算法B,那么意味着算法A生成的Pareto前沿在某种程度上包含了算法B生成的Pareto前沿。

  5. Spread
    Spread指标衡量算法生成的非支配解集在Pareto前沿上的分散程度。高的Spread值意味着解集在前沿上分布得更均匀,没有聚集在某个区域。

  6. Spacing
    Spacing是衡量算法生成的非支配解集中各个解之间平均距离的指标。Spacing值越小,表示解集内部的解越密集,多样性越高。

IGD和GD可以评估算法的逼近能力,而HV、Spread和Spacing可以评估算法的多样性保持能力。Coverage则可以用来比较不同算法生成的Pareto前沿的覆盖范围。

二、部分MATLAB代码

五种多目标算法(NSGA3、MOPSO、MOGWO、NGSA2、SPEA2)在46个多目标测试函数(ZDT1、ZDT2、ZDT3、ZDT4、ZDT6、DTLZ1-DTLZ7、WFG1-WFG10、UF1-UF10、CF1-CF10、Kursawe、Poloni、Viennet2、Viennet3)以及1个工程应用(盘式制动器设计)上实验,并采IGD、GD、HV、Coverage、Spread、Spacing六种评价指标进行评价。

close all;
clear ;
clc;
addpath('./metric/')%添加算法路径
%%
% 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=36;%测试函数1-47
MultiObj = GetFunInfo(TestProblem);
MultiObjFnc=MultiObj.name;%问题名
% Parameters
params.Np = 100;        % Population size 种群大小
params.Nr = 100;        % Repository size 外部存档
params.maxgen=50;    % Maximum number of generations 最大迭代次数
numOfObj=MultiObj.numOfObj;%目标函数个数
%% 算法求解,分别得到paretoPOS和paretoPOF

三、部分结果

(1)Viennet3
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(2)ZDT3
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
(3)盘式制动器设计
在这里插入图片描述
在这里插入图片描述

四、完整MATLAB代码

见下方名片

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vllm 部署GLM4模型进行 Zero-Shot 文本分类实验,让大模型给出分类原因,准确率可提高6%
  • 【Linux网络】CGI技术
  • Linux静态ip/动态ip配置/bond链路聚合/网卡多ip配置
  • 大数据技术之Zookeeper服务器动态上下线监听(6)
  • [新手入门]1台电脑+1个电视+2个软件(sunshine+moonlight) 解决黑神话悟空没有hdmi线的痛...
  • 金银齐飞白银破30,黄金续创新高
  • 【Linux】如何快速查看 linux 服务器有几个cpu
  • 19c库启动报ORA-600 kcbzib_kcrsds_1---惜分飞
  • C语言占领游戏
  • 【一步一步手把手教会你】Deep_live_cam一键克隆动态的目标对象
  • 用AI来学习英语口语(白嫖,所以稍微麻烦些)
  • Python数据可视化库之bqplot使用详解
  • OpenMax算法详解:深度学习中的高效开集识别技术
  • 注册安全分析报告:助通信息
  • 前端环境搭建:node.js、npm的下载和安装
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Android开源项目规范总结
  • Apache Pulsar 2.1 重磅发布
  • iOS编译提示和导航提示
  • JavaScript中的对象个人分享
  • React 快速上手 - 07 前端路由 react-router
  • React的组件模式
  • Vue2.0 实现互斥
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 多线程 start 和 run 方法到底有什么区别?
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 基于web的全景—— Pannellum小试
  • 使用parted解决大于2T的磁盘分区
  • 应用生命周期终极 DevOps 工具包
  • 优化 Vue 项目编译文件大小
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #pragma预处理命令
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (Git) gitignore基础使用
  • (第30天)二叉树阶段总结
  • (附源码)计算机毕业设计高校学生选课系统
  • (汇总)os模块以及shutil模块对文件的操作
  • (三)uboot源码分析
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (转)nsfocus-绿盟科技笔试题目
  • .CSS-hover 的解释
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET CLR Hosting 简介
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .Net MVC4 上传大文件,并保存表单
  • @RequestMapping 和 @GetMapping等子注解的区别及其用法
  • [20171113]修改表结构删除列相关问题4.txt
  • [Avalon] Avalon中的Conditional Formatting.
  • [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager失败
  • [EWS]查找 文件夹
  • [imx9]DDR test Tool for imx9
  • [LeetCode] Max Points on a Line