多目标进化算法详述-MOEA/D与NSGA2优劣比较

多目标进化算法详述-MOEA/D与NSGA2优劣比较多目标进化算法系列1.多目标进化算法(MOEA)概述2.多目标优化-测试问题及其Pareto前沿3.多目标进化算法详述-MOEA/D与NSGA2优劣比较4.多目标进化算法-约束问题的处理方法NSGA-II由KalyanmoyDeb等人于2002年在文章”AFastandElitistMultiobjectiveGeneticAlgorithm:…

大家好,又见面了,我是你们的朋友全栈君。

多目标进化算法系列

  1. 多目标进化算法(MOEA)概述
  2. 多目标优化-测试问题及其Pareto前沿
  3. 多目标进化算法详述-MOEA/D与NSGA2优劣比较
  4. 多目标进化算法-约束问题的处理方法
  5. 基于C#的多目标进化算法平台MOEAPlat实现
  6. MOEAD中聚合函数等高线分析
  7. MOEAD中一种使解更均匀分布的聚合函数介绍

NSGA-II由Kalyanmoy Deb等人于2002年在文章”A Fast and Elitist Multiobjective Genetic Algorithm: NSGA-II”中提出,是对1994年提出的NSGA的改进,相比于NSGA,NSGA2的改进主要两点:

  1. 提出一种快速非支配排序,使得Pareto支配排序的时间复杂度由 O ( N 3 ) O(N^3) O(N3)优化到 O ( N 2 ) O(N^2) O(N2)
  2. 提出一种拥挤距离来衡量解的分布性,并基于此选择种群中的合适的个体

NSGA-II的提出,为多目标进化算法的一大进步,特别是其基于Pareto支配关系的框架被后来许多算法采用,如NSGA-III,VaEA等。同时,NSGA-II对于低维多目标优化问题效果是不错的,但是对于高维多目标优化问题,其首先面对的便是由于其基于Pareto支配关系所导致的选择压力过小的问题,其次,便是拥挤距离在高维空间不适用,计算复杂度也比较高。

MOEA/D由张青富老师等人于2007年在文章”MOEA/D: A Multiobjective Evolutionary Algorithm Based on Decomposition”中提出。MOEA/D将一个多目标优化问题转换为多个标量子问题,且每一个子问题由一个均匀分布的权重向量构成,对于每生成一个新解,则基于聚合函数对该子问题附近的解进行替换。MOEA/D的优时如下:

  1. 收敛更快,计算复杂度低;
  2. 对于比较简单的PF,由于指导进化的权重向量是均匀分布的,因此MOEA/D所得到的解分布比较均匀

MOEA/D的提出为多目标进化算法提供了一种新的解决方案,基于MOEA/D的算法随后遍地开花,MOEA/DD,MOEA/D-STM,MOEA/D-SAS等。标准的MOEA/D对于低维简单PF的多目标优化问题效果是很好的,但对于复杂PF的问题,其分布性将会大打折扣,同时,对于高维多目标优化问题,其分布性也不能得到保证,效果也比较差。

下面比较两种算法的优劣:

  1. 从低维多目标优化问题(2-,3-目标)看:
    低维情况也要分两种情况考虑,一种是简单的PF的MOP,一种是复杂PF的MOP。
    首先来看简单的PF的情况。以2维的DTLZ1为例,下面两张图分别是NSGA-II和MOEA/D得到的2维DTLZ1的散点图。

NSGA-II
MOEA/D
很显然,对于2维DTLZ1,MOEA/D无论在均匀度上面,还是收敛性上面都优于NSGA-II。
下面再看复杂PF的情况,在此以有long tail 和 sharp peak的PF的F1为例,下面两张图就是NSGA-II和MOEA/D得到的近似解的散点图。

NSGA-II
MOEA/D
不难看出,对于F1来说,NSGA-II的效果是优于MOEA/D的,这主要是因为MOEA/D基于均匀分布的权重向量来指导进化的进行,但对于这类复杂PF的MOP,单位超平面上分布均匀的权重向量并不能保证解的均匀分布性。
3. 从高维看
NSGA-II 首先存在选择压力过小的问题 再就是拥挤距离的计算及其复杂
MOEA/D 在高维情况下分布性也不是很好

但总的来看,不管低维还是高维,MOEA/D比NSGA-II的速度快很多。

QQ交流群:399652146

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144609.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CSS 下拉菜单_下拉菜单html

    CSS 下拉菜单_下拉菜单html使用CSS创建一个鼠标移动上去后显示下拉菜单的效果。

    2025年8月11日
    5
  • 单片机开发系列(一)之Keil 5 安装使用教程「建议收藏」

    单片机开发系列(一)之Keil 5 安装使用教程「建议收藏」、Keil安装教程   -Keil5安装包 链接:https://pan.baidu.com/s/1QitX09pqh6uZVdjj48Dllw密码:69yx   -下载链接中的安装包,进行安装,在安装完成后,开始以下的激活步骤   -运行安装的Keil5点击File->liselicensemanagement,将图片中的CID进行复制 …

    2022年5月23日
    47
  • 全网最详细完备的class类文件结构解析

    全网最详细完备的class类文件结构解析写在前面本文隶属于专栏《100个问题搞定Java虚拟机》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构和文献引用请见100个问题搞定Java虚拟机解答Class文件是一组以8位字节为基础单位的二进制流,不同的数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有任何空隙存在。这些数据项目由无符号数和表来存储数据,按照顺序依次是:1.魔数和Class文件的版本2.常量池3.访问标志4.类索引、父类索引与接口索引集合5.字段表

    2022年5月6日
    58
  • http://extasp.net/ 浴火重生

    http://extasp.net/ 浴火重生

    2021年8月1日
    59
  • 字符串转小数 java(java中string转int)

    javastring小数点转long[2021-01-3019:30:55]简介:在php中可以直接使用“floatval”函数去除小数点后的0,floatval函数的语法是“floatfloatval(mixed$var)”,使用该函数转换既可以保留有效的小数点,也可以去掉后面多余的0php保留小数点后两位且不四舍五入的方法:使用函数substr,代码为【echosprin…

    2022年4月12日
    466
  • uo什么意思_2018五大学科集训队

    uo什么意思_2018五大学科集训队uoj#418. 【集训队作业2018】三角形(线段树合并)

    2022年4月21日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号