多目标进化算法详述-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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • gg修改器怎么编写lua脚本

    gg修改器怎么编写lua脚本gg修改器怎么编写lua脚本,gg修改器编写Lua脚本的例子从搜索冻结值的数10.搜索前7次的结果被冻结为8的值。gg.searchNumber(’10’,gg.TYPE_DWORD)localt=gg.getResults(7)fori,vinipairs(t)dot[i].value=’8’t[i].freeze=trueendgg.a…

    2025年9月15日
    7
  • 成长——新的开始,一切都是美好的

    我们都要满怀希望和爱,这样生活一定会朝着美好和阳光!

    2022年2月26日
    331
  • SQL注入-报错注入[通俗易懂]

    SQL注入-报错注入[通俗易懂]sql注入之报错注入的演示与介绍

    2022年9月29日
    1
  • Google Buzz 里 90% 的内容都是 “非人类”「建议收藏」

    Google Buzz 里 90% 的内容都是 “非人类”「建议收藏」距GoogleBuzz发布还不到10周,尽管Google一直在改进它,但似乎人们还是没有陷入Google的社交圈子。来自PostRank的统计,有90%的GoogleBuzz都是机器人发出来的,其中最多的是从twitter同步过来的内容,占到62%还多,而来自feeds的也有26%多,尽有不到11%的内容是真实的人肉发出来的。也就是说,GoogleBuzz的用户们还是习…

    2022年10月15日
    2
  • MQTTBox客户端工具(Windows版)

    MQTTBox是一个带有可视化的界面的MQTT的客户端工具.工具特性:创建连接到相同或不同MQTT代理的多个并发MQTT客户端TCP,SSL/TLS,Web套接字和安全的Web套接字支持创建具有多种连接设置的MQTT客户端-最后的遗留,keepAlive,连接超时等等用户名/密码认证连接,断开连接,重新连接MQTT客户端到代理的选项将消息从同一MQTT客户端发布到多个主题从同一MQTT客户端订阅多个主题支持单级(+)和多级(#)订阅主题单击即可复制,重新发布有效负载查看已发

    2022年4月4日
    1.7K
  • String.Format使用方法[通俗易懂]

    String.Format使用方法[通俗易懂]1、作为參数多个參数intm[]=newint{a,b,c,d};string.format("{0}{1}{2}",m);一个參数privateconststr

    2022年7月3日
    61

发表回复

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

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