多目标进化算法(二)——非支配排序/NSGA-II
多目标进化算法(二)——非支配排序/NSGA-II
上一节阐述了多目标优化问题及相关的基础知识。并且举例说明了什么是Pareto最优解,也叫非支配解或非劣解。如何比较哪个解优秀是上一节抛出的话题,本节致力于解决这一问题。
目录
- 多目标进化算法(二)——非支配排序/NSGA-II
- 基础知识
- pareto最优边界(PF)
- 举例说明:非支配关系和支配区域
- 如何构造Pareto最优解集:非支配排序
- 快速排序构造Pareto最优解集
- 提示
- 简单做个总结
- 举例阐述排序流程
- 非支配层次关系
- 拓展
经典论文NSGA-II链接
基础知识
一个多目标优化问题(MOP)可以被描述如下:
minF(x)=(f1(x),…,fm(x))TΩ=xϵRn∣hj(x)≤0,j=1,…,k设x=(x1,…,xn)是决策变量,Ω=Π[li,ui]⊆Rn,i=0,...,n为决策空间;n为决策变量的个数,li和ui分别为第i个决策变量的下限和上限。式中有m个目标等待优化,表示为f(x)=(f1(x),…,fm(x));f(x)将决策空间Ω映射到目标空间Π。min~~F(x) = (f_1 (x),…,f_m (x))^T\\Ω = {xϵR^n |h_j (x)≤0,j=1,…,k} \\设x=(x_1,…,x_n)是决策变量,Ω=Π[l_i,u_i ]⊆R^n,i=0,...,n为决策空间;\\n为决策变量的个数,l_i和u_i分别为第i个决策变量的下限和上限。\\式中有m个目标等待优化,表示为f(x)=(f_1 (x),…,f_m (x));f(x)将决策空间Ω映射到目标空间Π。 min F(x)=(f1(x),…,fm(x))TΩ=xϵRn∣hj(x)≤0,j=1,…,k设x=(x1,…,xn)是决策变量,Ω=Π[li,ui]⊆Rn,i=0,...,n为决策空间;n为决策变量的个数,li和ui分别为第i个决策变量的下限和上限。式中有m个目标等待优化,表示为f(x)=(f1(x),…,fm(x));f(x)将决策空间Ω映射到目标空间Π。
pareto最优边界(PF)
回顾一下上一节提到的Pareto最优解与Pareto最优解集。若决策空间中没有解能够支配xa,则称xa是一个Pareto最优解。所有的Pareto最优解构成Pareto最优解集(Pareto-optimal set, PS)。
而Pareto最优边界又是什么?实际上就是上节提到的Pareto最优前沿PF。提到这个概念是因为很多定理都和其有关。多目标优化是从决策空间到目标空间的一个映射。PS是决策向量空间的一个子集(也就是可行域中最优的那部分),PF是目标向量空间的一个子集。
定理:在目标空间中,最优解是目标函数的切点,它总是落在搜索区域的边界上。
举例说明:非支配关系和支配区域
简单说明,我们的目标就是找到图中的A,B,C,D,E,F这几个最优解,一般利用非支配排序。需要引入几个概念辅助讲解。
(1)支配区域:对于解C,它的的目标空间向量与目标空间的坐标轴的所围成的区域即为它的支配区域,此区域中的任意解都支配C,如上图A1区域所示。同理,A2区域的所有解都被C所支配。
(2)强非支配和弱非支配:当然还存在一些强非支配(比如解B和C)和弱非支配(比如和解C在图中同横或竖红线的解,图中没有哈)的概念区别,一般用得比较少。
如何构造Pareto最优解集:非支配排序
构造Pareto解集的方法有很多:庄家法,擂台赛法,递归方法以及用快速排序的方法。前面三种方法都比较好理解,而快速排序的方法是目前普遍使用的算法,本节主要对其进行分析。
快速排序构造Pareto最优解集
定义:个体中非支配关系用符号≺表示,X支配Y,表示为Y≺X。如果互不支配,则两个个体是不相关的,用符号≺d表示,X≺dY。
如果不太清楚快速排序可以参考这个blog:十大排序算法及优化 ( C++简洁实现)
提示
特别说明“比x小”的含义:个人喜欢这样来理解,在目标空间中其适应度比x小(在进化算法尤其是遗传算法中,会按照适应度优选),当然也可以理解成它们在目标空间中比x差。简单来说,就是个体处在x的支配区域中。
判断是否存在支配关系需要从每一维目标向量空间进行比较。例如,在上述最小化问题中,J点的f1和f2都大于x点,因此它被x所支配。B点的f1x点,但是f2小于x点,因此两者之前不存在支配关系,值得注意的是这并不代表它们两个都是非支配解,是否是非支配解需要和所有的解进行比较。
简单做个总结
(1) 第一轮比较:随机选择一个个体X作为基准数,使用快排根据支配关系(相关性,X≺dY)进行比较后,即可将种群分成支配(D集合)和非支配(non-dominant,ND集合)的两个子种群。
**(2) 第二轮比较:在第一轮比较的基础上,只用选择非支配的子种群进行排序。**如果X于所有个体都不相关那X必然是非支配解,而其他个体不一定是非支配解。为什么?
因为:从快排排序原理来看,我们仅知道经过第一轮排序后,D集合中的个体一定是被X或者ND集合中的某些个体所支配(从上图和支配区域也可理解)。注意:并不是ND中的所有解都支配D中的解,后面会举例说明。而ND集合中的元素互相之间的关系并不清楚,因此还需要进行比较,如上图解A就支配E和F。
(3) 如上图经过一整轮快速排序后即可知道解之间的支配关系。
举例阐述排序流程
我们假设初始种群为:{X,A,E,F,B,G,H,C,I,J,K,D}。每次以集合第一个元素为基准数进行排序。基准数左边表示“小”的个体。集合中的个体并没有顺序(支配关系)。
第一轮排序:D1集合:{K,J,D} X ND1集合:{A,E,F,B,G,H,C,I}。我们仅知道{K,J,D} 这些个体被其他所支配。X {A,E,F,B,G,H,C,I}之间的支配关系并不清楚。
第二轮排序:首先可知ND1集合中的任何一个个体不被X支配,但是并不代表ND1中不存在支配X的个体(比如以I为基准数,只能得到J为支配解,并且可以发现B,C,G这些个体都是支配I的)。通过X和所有集合ND1中的个体比较后,发现X就是非支配解。然后,我们选取ND1集合中的第一个元素为基准数排序:D2集合:{E,F} A ND2集合:{B,G,H,C,I}。
第三轮排序:和第二轮排序操作类似,先将A和所有ND2中的个体比较。然后,选取ND2集合中的第一个元素为基准数排序:D3集合:{G,H,I} B ND3集合:{C},集合中只有一个元素即可停止。
经过三轮排序实际上Pareto最优解集就找到了,即{A,B,C,X},它们为第一层次非支配个体,从图中也可以看出。在排序的同时实际上D集合也在同时进行排序(操作和上述流程相同),因为最终我们想要得到的种群个体的非支配层次关系。
D集合排序
D1集合:{K,J,D}排序后:{J},K,{D} ;
D2集合:{E,F}排序后:E,{F} ;
D3集合:{G,H,I}排序后:{H,I},G。由于一个集合中存在两个个体且并不知道支配关系,因此需要继续排序:H,{I}。
对于D集合的排序是否正确?
看起来似乎没有什么问题,但是注意相关性并不存在数学的“传递性”的特征(具体可以参照《多目标进化优化》一书),不能这样简单进行排序。
比如J是第几层的非支配解?通过上述比较并不知道。究其原因就是因为上述排序的基准数不同。因此,需要按照上面找非支配解的流程将集合进行整合,重新排序。
注:放在基准数的左边集合为支配解,被基准数所支配,但是不一定被右边集合中的个体所支配(比如在第一轮排序中,左边集合的K并不被右边集合的A支配),不存在传递性。
非支配层次关系
由于我们选择个体是按照非支配层次关系进行优选的,因此,需要按层次进行分类。显而易见,同一层中的个体互不支配。
通过上述比较可知,第一层非支配解集:P1= {A,B,C,X};
继续比较D集合:{K,J,D,E,F,G,H,I},寻找第二层非支配解,请读者自行推导。
第二层非支配解集:P2= {E,F,G,K,D};可以知道排除第一层次个体,它们就是非支配解;
第三层非支配解集:P3= {H,I};
第四层非支配解集:P4= {J};
拓展
下节进行代码实现。有算法基础的同学可能会思考时间复杂度或者说是否存在冗余比较。确实可以优化,田野老师团队提出了改进算法,有兴趣可以阅读相关文献。
一种用于进化多目标优化的非支配排序的有效方法
多目标优化的基于树的高效非支配排序方法的实证分析
注:本文图片摘自《多目标进化优化》一书,其他的排序方法可以查阅此书。
多目标进化算法(二)——非支配排序/NSGA-II相关推荐
- 多目标优化算法:非支配排序的鲸鱼优化算法(Non-Dominated Sorting Whale Optimization Algorithm,NSWOA)提供Matlab代码
一.非支配排序的鲸鱼优化算法 非支配排序的鲸鱼优化算法(Non-Dominated Sorting Whale Optimization Algorithm,NSWOA)由Pradeep Jangir ...
- 【多目标优化】2. 非支配排序遗传算法 —(NSGA、NSGA-II)
[多目标优化]1. 多目标优化的相关基本概念 [多目标优化]2. 非支配排序遗传算法 -(NSGA.NSGA-II) [多目标优化]3. 基于分解的多目标进化算法 -(MOEAD) 1. 非支配排序遗 ...
- 多目标优化算法:基于非支配排序的人工兔优化算法(Non-Dominated Sorting Artificial Rabbits Optimization ,NSARO)
一.人工兔优化算法算法简介 人工兔优化算法(Artificial Rabbits Optimization ,ARO)由Liying Wang等人于2022年提出,该算法模拟了兔子的生存策略,包括绕道 ...
- 多目标优化算法:基于非支配排序的瞪羚优化算法(Non-Dominated Sorting Gazelle Optimization Algorithm,NSGOA)
瞪羚优化算法(Gazelle Optimization Algorithm,GOA)由Agushaka等人于2022年提出,该算法模拟了瞪羚逃避捕食者的行为,思路新颖,性能高效. 瞪羚的身高60-11 ...
- 多目标优化算法:基于非支配排序的蜣螂优化算法(Non-Dominated Sorting Dung beetle optimizer,NSDBO)
蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球.跳舞.觅食.偷窃和繁殖行为的启发所得. 一.蜣螂优化 ...
- 非支配排序遗传算法(NSGA,NSGA-II )
非支配排序遗传算法(NSGA,NSGA-II ) 一.非支配排序遗传算法(NSGA) 1995年,Srinivas和Deb提出了非支配排序遗传算法(Non-dominated Sorting Gene ...
- [多目标优化算法]1.NSGA-II——非支配排序遗传算法
笔者最近在学习有关多目标优化的内容,并对内容进行一些整理.这篇文章算是笔者的一篇个人学习笔记,也希望能对他人提供一定的帮助,若有不足之处,也欢迎指正和建议. 注:本文中所举例子均为最小化问题. 一.多 ...
- 多目标优化算法:基于非支配排序的麻雀搜索算法(Non-Dominated Sorting Sparrow Search Algorithm,NSSSA)
一.麻雀搜索算法 麻雀搜索算法(SSA)的原理参考博客:麻雀搜索算法SSA 二.非支配排序麻雀搜索算法NSSSA 将非支配排序麻雀搜索算法(Non-Dominated Sorting Sparrow ...
- nsga2多目标优化之核心知识点(快速非支配排序、拥挤距离、精英选择策略)详解(python实现)
文章目录 一.多目标优化算法简介 1.基本知识 二.NSGA2算法 1.基本原理 2.快速非支配排序 2.1快速非支配排序 python实现 3.拥挤距离 3.1 拥挤距离python 实现 4.精英 ...
- 多目标优化NSGA-II(非支配排序常见于遗传算法)[1]
目录 1 兴趣引入 2 多目标优化算法发展历史 3 非支配排序常见于遗传算法
最新文章
- 安装sql 2005 闪退 连接到服务器失败。错误:0x80070424
- 小马智行L4无人车今日量产下线,这比融资更具里程碑意义
- 如何在asp.net页面使用css和js
- ndarray的数据类型
- 如何具备无坚不摧的意志力
- dsp广告和信息流广告区别_360展示广告与其他信息流平台的区别
- Python C API 使用详解(二)
- 苹果Mac白噪音软件:Noise Machine
- 对ttl和cmos电路的理解
- 逆发动机模型map图制作
- 分库分表:应用场景、方式方法、面临问题
- 英语单词 Yang liang
- 阿里网盘rar再打包分享工具
- 利用IPv6的地址特性写一个攻击甩锅程序
- 永川机器人博览会门票_14日 又到永川来看机器人哦
- hdu-2852 KiKi's K-Number---二分+树状数组
- Telecoms Systems - PART.1
- 《Kotlin 极简教程 》第6章 泛型
- 三十八、移动IP和网络层设备
- ColdFusion是什么
热门文章
- 为什么我们创业失败了和选择创业公司的思考
- QGraphicsItem
- HTML中的空格符号( nbsp; ensp; emsp; )介绍以及中文对齐方式
- Linux运维踩过的坑---Temporary failure in name resolution
- 《VoIP技术构架(第2版·修订版)》一1.7 小结
- java调用百度云api_百度云—使用机器人视觉SDK调用百度API方法教程
- 利用npm bin创建可执行命令实现项目代码规范自动化
- 为什么 BI 软件都搞不定关联分析
- PPT图标(多个软件快捷方式图标)异常,但能运行,解决方案
- 信息化与信息化系统__无线__网络工程标准