笔者最近在学习有关多目标优化的内容,并对内容进行一些整理。这篇文章算是笔者的一篇个人学习笔记,也希望能对他人提供一定的帮助,若有不足之处,也欢迎指正和建议。

注:本文中所举例子均为最小化问题。

一.多目标优化的基本概念

(1)  多目标优化问题(Multiobjective optimization problem,MOP)

一个多目标优化问题可以用下面的数学形式来表述:

其中,x为决策向量,所在空间称为决策空间;F(x)为目标向量,所在空间称为目标空间,由m个目标函数组成,在多目标优化中,m一般为2或3,相对应的,单目标优化的m=1.

(2)   支配(Dominance)

对于两个解x与y,若对于任意i=1,2,...,m,均有fi(x)<=fi(y),且存在i,使fi(x)<fi(y), 则称x支配y,记为

简单记忆方法:全部小于等于,至少1个小于。

(3)   Pareto最优

Pareto最优原为经济学中的一个概念,在多目标优化中,由于对于不同目标的优化通常是互相矛盾的,故引入该概念。在多目标优化中,若对于解x*,当且仅当x*不被任何其他解支配,称x*为Pareto最优解,由所有Pareto最优解构成的集合,称为Pareto集(Pareto Set),记为PS。相对应的,PS中所有解在目标空间中对应的目标函数值的集合称为Pareto前沿(Pareto Front),记为PF。

(注意,Pareto最优的概念仅是说该解不被其他解支配,并不是说该解可以支配其他所有解。)

二.NSGA-II

(1) NSGA-II简介

NSGA-II,全称为Non-dominated Sorting Genetic Algorithm-II,即非支配排序遗传算法,是一种基于支配的多目标优化算法。从其全称我们可以看出,NSGA-II本质上是一种遗传算法,其选择、交叉、变异算子均与遗传算法相同。那么,NSGA-II相较于普通的GA,有什么不同呢?笔者认为,NSGA-II主要多了两个部分,其一就是其算法名中提到的,非支配排序其二则是拥挤距离的定义以及基于其的精英保留策略。下面,我们就分开来介绍下这两个部分。

(2) 非支配排序

非支配排序的原理可以用这幅图来进行解释,如图,对于一整个种群,首先选出当前的Pareto最优解,记为支配等级1;将支配等级1中的解排除后,再从剩余种群中选出Pareto最优解,记为支配等级2;以此类推,直到整个种群被分级完毕。在各支配等级中,每个解和当前等级中的其他任意解均互不支配,支配等级较前(数字较小)的解支配支配等级较后(数字较大)的解。这就是非支配排序。

在实际操作过程中,由于发现最初的非支配排序流程时间复杂度较高,为,其中M为目标数目,N为种群大小。因此,本文提出了一种快速非支配排序方法,将时间复杂度从降为了。其流程如下:

1.对于种群P中的所有个体p,统计支配其的解的个数和其支配的个体的集合。统计结束后,将当前的个体全部加入集合中,并计其支配等级为1。

2.  

 

(相当于消除支配等级1的解对其的支配,即相当于将支配等级1的个体“移出”当前种群)。

if 

(将q加入F2中)

end

end

end

3.对中的个体,计其支配等级为2,并重复2中的操作,以此类推,直到整个种群排序完毕。

(3)  拥挤距离

除了非支配排序外,NSGA-II还定义了拥挤距离的概念,我们同样用图来进行解释:

如图,对于二目标问题,对于当前的解i(图中黑点i),拥挤距离定义为其相邻解i-1和i+1所形成的四边形的周长,注意,在作图时,这个四边形中不应包含除i外的其他解。由此可见,对于一个解,其拥挤距离越大,这个解周围就越稀疏,选取这样的解,对于保持种群的多样性有益。对于边界解(图中黑点0和l),我们计其拥挤距离为无穷。

(4) NSGA-II流程

有了快速非支配排序和拥挤距离的概念,我们接下来就可以阐述NSGA-II的工作流程.

如图是NSGA-II的简要流程,首先,对于当前种群,我们使用遗传算法的选择、交叉、变异算子,产生与其个体数目相同的子代,将合并,记为,并对进行快速非支配排序,注意,此时的个体数目为2N(,各为N)。

非支配排序完后,根据支配等级顺序,依次将各等级个体加入下一种群中,直至当前等级个体不能全部放入为止。如图中,F1、F2个体可以全部放入,而F3不能全部放入。

此时,对当前等级个体(图中为F3)按照拥挤距离进行排序,并将拥挤距离较大的个体依次加入下一种群中,直到填满为止(个体数达到N)。此时,将剩余的解全部淘汰。接下来的流程依次类推,直到达到终止条件为止。

通过对NSGA-II流程的阐述,我们可以看到,NSGA-II首先会将支配等级较前的个体加入当前种群,这是算法对收敛性的保证;此外,NSGA-II还会对最后一层个体按照拥挤距离排序,优先选择拥挤距离较大的个体,即边界解和密度较稀疏的个体会被优先保留,这体现了算法对多样性的保证。因此,NSGA-II算法可以同时做到对收敛性和多样性的保证。

(5) NSGA-II的优点与缺点

NSGA-II的优点正如上文提到,由于注意对边界解的保留,所以其在解决一些极凸或极凹问题时会较优优势,可以保留较多的边界解。

如图为NSGA-II对于极凸PF面的处理,可以看到,使用NSGA-II可以保留较多的边界解。

NSGA-II的缺点同样很明显,前文也有提到,NSGA-II是一种基于支配的多目标优化算法。而根据支配的定义,我们可以看到,当多目标优化问题的维度越大时,我们越难找到这种支配关系,甚至可能无法找到,从而使整个种群都互不支配,这样,基于支配的算法就失去了意义。因此,NSGA-II,以及其他基于支配的多目标优化算法,都不适合解决高维多目标优化问题(一般我们认为m>3即为高维问题),或者又称为Many-Objective Problem(MaOP)。

参考文献:

K. Deb, A. Pratap, S. Agarwal and T. Meyarivan, "A fast and elitist multiobjective genetic algorithm: NSGA-II," in IEEE Transactions on Evolutionary Computation, vol. 6, no. 2, pp. 182-197, April 2002, doi: 10.1109/4235.996017.

H. Li, Q. Zhang and J. Deng, "Biased Multiobjective Optimization and Decomposition Algorithm," in IEEE Transactions on Cybernetics, vol. 47, no. 1, pp. 52-66, Jan. 2017, doi: 10.1109/TCYB.2015.2507366.

Wang, Z., Li, Q., Yang, Q. et al. The dilemma between eliminating dominance-resistant solutions and preserving boundary solutions of extremely convex Pareto fronts. Complex Intell. Syst. (2021). https://doi.org/10.1007/s40747-021-00543-2

特别感谢:

遗传算法之NSGA-Ⅱ原理分析和代码解读 - 知乎

[多目标优化算法]1.NSGA-II——非支配排序遗传算法相关推荐

  1. 【优化调度】基于matlab非支配排序遗传算法求解车辆充电调度优化问题【含Matlab源码 2000期】

    ⛄一.遗传算法简介 由于国内外人民的生活方式和电动汽车主要购买人群的不同,国内外关于车辆充电调度问题研究的侧重点也不尽相同. 我国地大物博,人口众多,交通复杂.主要从以下方面研究: 1.通过经济手段或 ...

  2. 【多目标优化求解】基于matlab非支配排序灰狼优化(NS-GWO)算法求解多目标优化问题【含Matlab源码 2015期】

    一.灰狼算法简介 1 前言: 灰狼优化算法(Grey Wolf Optimizer,GWO)由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优化算法.该算法受到了灰狼 ...

  3. 【多目标优化】2. 非支配排序遗传算法 —(NSGA、NSGA-II)

    [多目标优化]1. 多目标优化的相关基本概念 [多目标优化]2. 非支配排序遗传算法 -(NSGA.NSGA-II) [多目标优化]3. 基于分解的多目标进化算法 -(MOEAD) 1. 非支配排序遗 ...

  4. 非支配排序遗传算法c语言,非支配排序遗传算法(NSGA)的研究与应用

    摘要: 多目标优化问题一直是科学和工程研究领域的难题和热点问题.传统的解决方法在处理大维数,多模态等复杂问题上存在许多不足.为了解决这一问题,国内外研究学者在简单遗传算法的基础上,发展出了多种多目标优 ...

  5. 非支配排序遗传算法(NSGA,NSGA-II )

    非支配排序遗传算法(NSGA,NSGA-II ) 一.非支配排序遗传算法(NSGA) 1995年,Srinivas和Deb提出了非支配排序遗传算法(Non-dominated Sorting Gene ...

  6. MATLAB程序采用非支配排序遗传算法(NSGA2)求解分布式电源选址定容问题,可作为一个有用的参考,程序注释明确,算法原理可以自己搜。

    MATLAB程序采用非支配排序遗传算法(NSGA2)求解分布式电源选址定容问题,可作为一个有用的参考,程序注释明确,算法原理可以自己搜. :8620651507678049浪迹天涯

  7. 非支配排序遗传算法NSGA-II学习笔记

    一.多目标优化问题的解 在单目标优化问题中,通常最优解只有一个,而且能用比较简单和常用的数学方法求出其最优解.然而在多目标优化问题中,各个目标之间相互制约,可能使得一个目标性能的改善是以其他目标性能为 ...

  8. MATLAB程序采用非支配排序遗传算法(NSGA2)求解分布式电源选址定容问题

    MATLAB程序采用非支配排序遗传算法(NSGA2)求解分布式电源选址定容问题,可作为一个有用的参考,程序注释明确,算法原理可以自己搜. 现有:6920651507678049浪迹天涯

  9. 非支配排序遗传算法c语言,第三代非支配排序遗传算法(NSGA-III)

    第三代非支配遗传算法是针对高维多目标优化计算代价大,难以挑选Pareto解的情况而开发的,基本流程与NSGA-II相似,但选择个体的方法加入了基于参考点的方法,能够有效降低计算代价. NSGA-III ...

最新文章

  1. 类的静态成员变量和静态成员函数的使用方法三
  2. 深度学习~循环神经网络RNN, LSTM
  3. 和虫师一起学python(7)
  4. Radar Installation
  5. C语言 #运算符 - C语言零基础入门教程
  6. JEECG企业微云快速二次开发平台-新版本首页展示
  7. Jsp+Ssh+Mysql实现简单的校园实习兼职管理
  8. Java面向对象之成员变量的初始值、object类与对象
  9. 其实我只想设置客户端实现跨域请求
  10. Mac OS 常用终端命令(附代码)
  11. 在线检查错别字校对软件 | 推荐
  12. nfc加密卡pm3和pm5区别_【黑科技】NFC模拟门卡门禁
  13. 解题报告 之 HDU5336 XYZ and Drops
  14. 用正则表达式验证邮箱、密码、QQ号、手机号、身份证号
  15. 视频教程-嵌入式Linux驱动教程(韦东山2期)-驱动/内核开发
  16. mysql dump 拒绝访问_mysqldump访问被拒绝
  17. 《机器学习与数据科学(基于R的统计学习方法)》——1.2 机器学习的实际案例...
  18. uefi装完系统后无法引导_uefi装win7启动不了怎么解决?
  19. C语言如何计算程序运行时间
  20. JVM垃圾回收——ZGC垃圾收集器

热门文章

  1. conv2d原理、计算过程、pytorch使用
  2. 前往华虹下载POS机应用,回来又上传安装卡应用
  3. execute,executeQuery,executeUpdate三个方法有什么区别呢?
  4. leetcode:2448. 使数组相等的最小开销【猜结论落在给定点 + 考虑初始值和变化量 + 三分法模板学习】
  5. 同步和异步的区别和优缺点
  6. js数字金额滚动动画(vue)
  7. 2022年初级审计师考试综合试题及答案
  8. zedgraph绘图(修改)
  9. 这道题的错误做法是我原创的,目前还不知道哪错了!!!
  10. 布线工程施工经验介绍 解决XP局域网访问故障