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

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

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

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

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

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

  4. MODA
    多目标蜻蜓算法(MODA)是一种模拟自然界蜻蜓行为的元启发式优化算法,专门设计来解决具有多个冲突目标的优化问题。这种算法通过模拟蜻蜓的觅食、领地防御和飞行行为,将其转化为搜索策略,并利用Pareto支配关系来处理多个目标,从而找到一组Pareto最优解。

  5. 多目标人工蜂鸟算法MOAHA
    在这里插入图片描述

在多目标优化中,评价指标用于衡量算法性能,特别是它们在逼近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代码

五种多目标算法(MOAHA、NSGA2、NSGA3、SPEA2、MODA)在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)ZDT4
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、完整MATLAB代码

见下方名片

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java 输入与输出之 NIO【非阻塞式IO】【NIO核心原理】探索之【一】
  • C语言——字符函数、字符串函数和内存函数
  • 计算机网络面试真题总结(六)
  • QT 与 C++实现基于[ TCP ]的聊天室界面
  • led护眼台灯对眼睛好吗?台灯护眼是真的吗?一文告诉你答案
  • 单例模式在实现webserver这个项目中起到了什么作用
  • 如何完美备份自己的微博,即使是封号之后
  • 【北森-注册安全分析报告-无验证方式导致安全隐患】
  • Ubuntu系统使用Docker部署中文版trilium并实现远程编辑笔记
  • 游戏+AI
  • 人大金仓数据库常见运维方式整理
  • 视频压缩工具大PK:四款神器让你轻松压缩不卡顿
  • Mysql系列—4.Mysql安装
  • Python中csv文件的操作3
  • PyQt 迁移到 PySide
  • 0基础学习移动端适配
  • 2017年终总结、随想
  • docker容器内的网络抓包
  • Golang-长连接-状态推送
  • HashMap ConcurrentHashMap
  • interface和setter,getter
  • java8-模拟hadoop
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Magento 1.x 中文订单打印乱码
  • MobX
  • mongodb--安装和初步使用教程
  • Netty源码解析1-Buffer
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 对象引论
  • 分布式熔断降级平台aegis
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 前端面试题总结
  • 前端面试之CSS3新特性
  • 深度学习中的信息论知识详解
  • 想写好前端,先练好内功
  • 找一份好的前端工作,起点很重要
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #pragma multi_compile #pragma shader_feature
  • (1)常见O(n^2)排序算法解析
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (简单) HDU 2612 Find a way,BFS。
  • (一) springboot详细介绍
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转载)CentOS查看系统信息|CentOS查看命令