NSGA-II 原文阅读笔记

A Fast and Elitist Multiobjective Genetic Algorithm: NSGA-II 的阅读笔记,大部分内容源于对原文的翻译。

1、缩写定义

NSGA-II :nondominated sorting genetic algorithm II,非支配排序遗传算法2
MOEA : multiobjective evolutionary algorithms,多目标进化算法
PAES :Pareto-archived evolution strategy,帕累托存档进化策略
SPEA :strength-Pareto EA,加强帕累托遗传算法

2、提出原因

传统的使用非支配排序和共享的多目标进化算法受到批评的主要原因是:
1)计算复杂性为O(MN3)(其中M是目标的数量,N为种群规模);
2)非精英(nonelitism)方法;
3)需要指定共享参数。
因此,作者提出了NSGA-II,可以有效解决上述问题,将计算复杂度降为O(MN2),并提出了快速非支配排序过程(fast nondominated sorting procedure),精英保留策略(elitist-preserving approach)和无参数小生境算子(parameterless niching operator)。相比于其他方法,NSGA-II 能够在真正的帕累托最优前沿附近找到更好的解决方案并具备更好的收敛性。

3、精英非支配排序遗传算法

3.1 快速非支配排序方法

首先描述一种朴素的方法:为了确定一个种群中的第一个非支配前沿的解,可以将每个解与种群中的其他解进行比较,以确定它是否被支配,则对于第一个非支配前沿中的一个个体所需的计算复杂度为O(MN)(P.S. 这里的意思是将一个个体与其他所有个体两两比较,共比较N次,每次需要比较M个目标),而找出第一个非支配前沿中所有个体所需的计算复杂度为O(MN2)(P.S.对种群中每个个体都搞一次上述的操作,一共是O((MN)*N))
在找到第一个非支配前沿后,将该支配前沿中所有的解认定为无效,重复上述步骤,寻找第二个非支配前沿。在最坏的情况下,所需的复杂度为O(MN2)。上述方法对于寻找第三个乃至更高级的非支配前沿都是有效地。因此,最坏的情况是存在N个前沿,每个前沿只有一个解决方案,总的计算复杂度为O(MN3)(P.S.即N个非支配前沿,每个前沿计算复杂度为O(MN2))

下面描述一种快速非支配排序方法,它所需的计算复杂度为O(MN2):
首先,对于每一个解 p p p,我们计算两个实体:1)支配数,支配解 p p p的解的个数 n p n_p np(P.S.通俗地说就是比 p p p好的解一共几个),2)解 p p p支配的一组解 S p S_p Sp(P.S.通俗地说就是比 p p p差的解组成的集合)。这需要比较O(MN2)次。
显然,在第一个非支配前沿的所有解的支配数都为零(也就是第一个非支配前沿的所有解都是最优解,不存在比它好的解,即 n p = 0 n_p=0 np=0)。现在,对于每个 n p = 0 n_p=0 np=0的解 p p p(即对于第一个非支配前沿中的所有解),访问它支配集合 S p S_p Sp中使用的每个解决方案 q q q,并将 q q q的支配数减少一(即 n q = n q − 1 n_q=n_q-1 nq=nq1)(即扣除了第一个非支配前沿后当前的情况)。在这样做时,如果任何成员 q q q的支配数变为零 n q = 0 n_q=0 nq=0,我们将其放入一个单独的列表 Q Q Q中,列表 Q Q Q中的成员属于第二个非支配前沿。重复上述过程,直到确定所有的非支配前沿。
对于第二个或更高级别中的非支配解 p p p,其支配数 n p n_p np最多可以是 n p = N − 1 n_p=N-1 np=N1。因此,在每个解的支配数变为零之前( n p = 0 n_p=0 np=0),每个解 p p p的访问次数最多为 N − 1 N-1 N1次。此时,该解决方案被分配了一个非支配级别,并且将不再被访问。因为最多有 N − 1 N-1 N1个这样的解决方案,所以总的复杂性是O(N2)。因此,整个过程的复杂性是O(MN2)。计算这种复杂度的另一种方法是认识到第一个内部循环的主题(对每个 p ∈ F i p \in F^i pFi)正好执行 N N N次,因为每个个体最多可以成为一个前沿的成员,而第二个内部循环的主体(对于每个 q q q)则可以每个个体最多可以执行 N − 1 N-1 N1次[每个个体最多可以控制 N − 1 N-1 N1个个体,每个支配检查最多需要M个比较],从而在总体O(MN2)计算中得出结果。 重要的是要注意,尽管时间复杂度已降低至O(MN2),但存储要求已提高至O(N2)。

3.2 多样性保护——拥挤比较法

我们在前面提到,随着收敛到Pareto最优集,我们还希望EA在所获得的解集中保持良好的解扩散(spread)。最初的NSGA使用了众所周知的共享函数方法(sharing function approach),这种方法通过适当设置相关参数来维持种群的可持续多样性。共享函数方法包含一个共享参数 σ p a r a m e t e r \sigma _{parameter} σparameter,该参数设置问题中所需的共享程度。该参数与用于计算两个种群个体之间的接近度度量的距离度量有关。该参数表示距离度量的最大值,在该距离度量中,任何两个解决方案共享彼此的适应度。此参数通常由用户设置,尽管存在一些指导原则。这种共享函数方法有两个困难:
(1)共享函数法在保持解的扩散方面的性能在很大程度上取决于选择共享参数 σ p a r a m e t e r \sigma _{parameter} σparameter的值。
(2)由于每个解决方案都必须与种群中的所有其他解决方案进行比较,共享函数方法的总体复杂性为O(N2)
在提出的NSGA-II中,我们用拥挤比较法 (crowded-comparison approach )代替共享函数法,在一定程度上消除了上述两个困难。新方法不需要任何用户定义的参数来维持种群成员之间的多样性。同时,该方法具有更好的计算复杂度。为了描述这种方法,我们首先定义了一个密度估计度量,然后提出了拥挤比较算子。

(1)密度估计(Density Estimation)

为了估计总体中某个特定解周围解的密度,对每个目标,我们计算沿着该目标在该点两边的两个点的平均距离。这个量 i d i s t a n c e i_{distance} idistance是用最近邻点作为顶点形成的长方体周长的估计值(称之为拥挤距离)。在图1中,第i个解决方案在其前面的拥挤距离(用实心圆圈标记)是长方体的平均边长(以虚线框显示)
在这里插入图片描述
拥挤距离的计算需要按每个目标函数值按大小递增的顺序对种群进行排序。然后,对于每个目标函数,边界解(具有最小和最大函数值的解)的距离值被设为无限的。所有其他中间解被赋予一个距离值,该距离值等于两个相邻解的函数值的归一化差的绝对值。此计算与其他目标函数一起继续。总拥挤距离值计算为每个目标对应的单个距离值之和。在计算拥挤距离之前,对每个目标函数进行归一化处理。下面算法概述了非支配集 I I I中所有解的拥挤距离计算过程。
在这里插入图片描述
在此, I [ i ] . m I [i] .m I[i].m是指集合 I I I中第 i i i个个体的第 m m m个目标函数值,参数 f m max ⁡ f_m^{\max } fmmax f m min ⁡ f_m^{\min } fmmin是第 m m m个目标函数的最大值和最小值。 此过程的复杂性由排序算法控制。 由于涉及最多 N N N个解的 M M M个独立排序(当所有种群个体都位于 I I I时),因此上述算法的计算复杂度为O(MN Log N)。
在种群中所有个体都被分配了一个距离度量之后,我们可以比较两个解与其他解的接近程度。在某种意义上,一个距离度量值较小的解决方案会被其他解决方案更拥挤。这正是我们在建议的拥挤比较运算符中比较的结果。

(2)拥挤比较运算符

拥挤比较运算符( ≺ n { \prec _n} n)将算法各个阶段的选择过程引导到均匀分布的准最佳前沿。假设种群中每个个体 i i i都有两个属性:
① 非支配等级 i r a n k i_{rank} irank
② 拥挤距离 i d i s t a n c e i_{distance} idistance
我们定义偏序关系 ≺ n { \prec _n} n
在这里插入图片描述
也就是说,在两个非支配秩不同的解之间,我们更喜欢低(较好)秩的解。否则,如果两个解决方案属于同一非支配前沿,那么我们更喜欢位于一个不太拥挤的地区的解决方案。

有了这三个新的创新——快速非支配排序过程、快速拥挤距离估计过程和简单的拥挤比较算子,我们现在准备描述NSGA-II算法

3.3 主循环(main loop)

首先,随机生成一个父种群 P 0 P_0 P0。种群个体按照非支配排序进行分类。每个解都被分配一个与其非支配级别相等的适应度(或等级)(1是最佳级别,2是下一个最佳级别,依此类推)。因此,假设适应度最小化。首先,使用通常的二元竞赛选择、重组和变异算子来创建一个规模相当(即规模为 N N N)的子种群 Q 0 Q_0 Q0
逐步过程表明,NSGA-II算法简单明了。我们首先描述第 t t t代种群的形成过程。首先,形成一个组合种群 R t = P t ∪ Q t {R_t} = {P_t} \cup {Q_t} Rt=PtQt。种群 R t R_t Rt中共包含 2 N 2N 2N个个体。然后,根据非支配性对种群 R t R_t Rt进行排序。由于所有先前和当前的种群个体都被包括在内,精英主义就得到了保证。现在,属于最佳非支配集 F 1 F_1 F1的解是组合种群中的最佳解,必须比组合种群中的任何其他解更为突出。如果 F 1 F_1 F1的规模小于 N N N,我们一定会选择集合 F 1 F_1 F1中的所有个体进入新的种群 P t + 1 P_{t+1} Pt+1。种群 P t + 1 P_{t+1} Pt+1中剩下的个体是从随后的非支配前沿中按排名顺序选出的。因此,下一步选择集合 F 2 F_2 F2中的解,然后选择集合 F 3 F_3 F3中的解,依此类推。此程序将继续进行,直到无法容纳更多解。假设集合 F l F_l Fl是最后一个非支配集合,超过这个集合的其他集合就不能再进入到种群 P t + 1 P_{t+1} Pt+1中。一般来说,从 F 1 F_1 F1 F l F_l Fl的所有集合中的解的总数都将大于种群的总体规模 N N N。为了精确地选择种群个体,我们使用拥挤比较算子按降序对最后一个非支配前沿 F l F_l Fl的解进行排序,并选择所需的最佳解来填充所有填充槽(选择所需数量的最优解进入下一代种群中)。NSGA-II程序也下图所示。新的大小为 N N N的种群 P t + 1 P_{t+1} Pt+1现在被用于选择、交叉和变异,以创建一个新的大小为 N N N的子种群 Q t + 1 Q_{t+1} Qt+1。需要注意的是,我们使用了二进制锦标赛选择算子,但是现在的选择标准是基于拥挤比较算子的。由于该算子需要种群中每个解的秩和拥挤距离,我们在形成种群 P t + 1 P_{t+1} Pt+1时计算这些量,如下面的算法所示。
在这里插入图片描述
考虑整个算法的一次迭代的复杂性。基本操作及其最坏情况的复杂性如下:
1)非支配排序是O(M(2N)2);
2)拥挤距离赋值是O(M(2N)log(2N));
3)排序是O(2Nlog(2N))。
算法的总体复杂度为O(MN2),由算法的非支配排序部分控制。

下面给出描述NSGA-II算法非常有名的图:
在这里插入图片描述
拥挤比较法的引入保证了非支配解之间的多样性,该方法用于锦标赛选择和人口缩减阶段。由于解与其拥挤距离(邻域中解的密度的度量)竞争,因此不需要额外的小生境参数(如NSGA中需要的参数 σ p a r a n e t e r \sigma _{paraneter} σparaneter)。虽然拥挤距离是在目标函数空间中计算的,但如果需要,也可以在参数空间中实现。然而,在本研究中进行的所有模拟中,我们都使用了目标函数空间小生境。

4、实验分析

研究中使用的测试问题
在这里插入图片描述

上表给出了变量的数目、它们的界限、帕累托最优解以及每个问题的帕累托最优前沿的性质。
对于二进制编码的GA,我们使用单点交叉和逐位变异,对实数编码的GA使用模拟二进制交叉(SBX)算子和多项式变异。(其他参数如交叉概率变异概率等的设置见原文第四章)

4.1 算法有效性衡量

与单目标优化不同,多目标优化有两个目标:
1)收敛到Pareto最优集;
2)保持Pareto最优集解的多样性。
这两个任务不能用一个性能指标充分衡量。在这里,我们定义了两个性能指标,它们在通过多目标优化算法获得的解集中评估上述两个目标。

(1)收敛性度量

对于用算法得到的每一个解,我们在Pareto最优前沿计算它与所选解的最小欧几里德距离。这些距离的平均值用作第一个度量(收敛度量)。图3显示了该度量的计算过程。阴影区域是可行搜索区域,实线表示Pareto最优解。在Pareto最优前沿上选择空心圆点解作为收敛度量的计算解,用实心圆点标记的解是通过算法得到的解。该度量值越小,向帕累托最优前沿的收敛性越好。当所有获得的解都恰好位于所选解上时,该度量取零(即使所有解都收敛到Pareto最优前沿,上述收敛度量也不为零。只有当每一个得到的解正好位于每个选择的解上时,度量才会产生零。)。在这里进行的所有模拟中,我们给出了这个度量的平均值和方差,这些度量值是针对在多次运行中获得的解集计算的。
U888888888

(2)扩散度度量

第二个指标 Δ \Delta Δ衡量获得的解之间的扩散程度(extent of spread )。在这里,我们感兴趣的是得到一组跨越整个帕累托最优区域的解。在得到的非支配解集中,我们计算了连续解之间的欧氏距离 d i d_i di。我们计算这些距离的平均值 d ˉ {\bar d} dˉ。然后,从得到的一组非支配解出发,我们首先通过拟合一条平行于真实Pareto最优前沿的曲线来计算极值解(在目标空间中)。然后,我们使用以下度量来计算分布的不均匀性:
在这里插入图片描述
这里,参数 d f d_f df d l d_l dl是所获得的非支配集的极值解和边界解之间的欧几里德距离,如图4所示。该图说明了上述等式中提到的所有距离。参数 d ˉ {\bar d} dˉ是所有距离 d i , i = 1 , 2 , . . . , N − 1 d_i, i=1,2,..., N-1 di,i=1,2,...,N1的平均值,假设在最佳非支配前沿有 N N N个解。有 N N N个解决方案,就有 N − 1 N-1 N1个连续距离。分母是当所有 N N N个解都在一个解上时分子的值。值得注意的是,这并不是解决方案可能出现的最坏情况。我们可以有一个场景,其中 d i d_i di存在很大的变差。在这种情况下,度量可能大于1。因此,上述度量的最大值可以大于1。然而,一个好的分布将使所有 d i d_i di的距离等于 d ˉ {\bar d} dˉ并且将使 d f = d l = 0 d_f=d_l=0 df=dl=0(在非支配集中存在极值解)。因此,对于分布最广且分布最均匀的非支配解集, Δ \Delta Δ的分子将为零,使 Δ \Delta Δ的值取零。对于任何其他分布,度量值的值将大于零。对于具有相同 d f d_f df d l d_l dl的两个分布,度量值 Δ \Delta Δ取更高的值,它在极值解中解的分布更差。请注意,上述多样性度量可用于任何非支配解集,包括非帕累托最优集的解。使用用三角化技术或Voronoi 图方法进行计算,上述方法可推广到更高维的解的扩散估计。
在这里插入图片描述

4.2 结果讨论

表II给出了使用四种算法NSGA-II(实数编码)、NSGA-II(二进制编码)、SPEA和PAES获得的收敛度量的平均值和方差。
在这里插入图片描述
取一组实验来看,很明显,NSGA-II的解均匀度要更好
在这里插入图片描述
在这里插入图片描述

5、旋转问题(Rotated problem)

进化算法的决策变量为向量 x x x,但目标函数通过向量 y y y定义,向量 y y y x x x通过固定旋转矩阵 R R R变换决策变量向量计算得到的。这样,目标函数就是决策变量的线性组合函数。
在这里插入图片描述
图13显示使用NSGA-II、PAES和SPEA在500代结束时获得的解决方案。结果表明,与PAES和SPEA得到的解相比,NSGA-II解更接近真实前沿。
在这里插入图片描述
这个实验证明NSGA-II对于这种变量经过线性变换的情况拥有更好的效果。

6、约束处理

简单约束处理方法使用二元竞赛选择,从种群中选择两个解,并选择更好的解。在约束条件存在的情况下,每一个解都可能是可行的,也可能是不可行的。因此,最多可能有三种情况:
1)两种方案都可行;
2)一种可行,另一种不可行;
3)两者都不可行。
对于单目标优化,我们对每种情况都使用了一个简单的规则。
1)选择目标函数值较好的解。
2)选择可行的解决方案。
3)选择整体约束冲突较小的解决方案。

在带约束的多目标优化问题中,后两种情况可以照旧使用,而第一种情况可以像以前一样使用拥挤比较算子来解决。为了保持NSGA-II过程中的模块性,我们简单地修改了两个解和之间的支配的定义。
定义1:如果下列任一条件成立,则称解 i i i为解 j j j的约束支配解。
1) 解决方案 i i i可行,解决方案 j j j不可行。
2) 解决方案 i i i j j j都是不可行的,但解决方案 i i i有一个较小的整体约束违反。
3) 解 i i i j j j是可行的,解 i i i支配解 j j j
使用这种约束控制原则的效果是,任何可行解都比任何不可行解具有更好的非支配秩。所有可行解根据目标函数值的非显性程度进行排序。然而,在两个不可行解中,约束违反越小的解具有更好的秩。此外,对非支配原则的这种修改并没有改变NSGA-II的计算复杂度

杂七杂八

传统优化算法与多目标优化的区别
MOEAs 能够在一次模拟运行中找到多个帕累托最优解,而经典的优化方法(包括多准则决策方法)通过一次强调一个特定的Pareto最优解,将多目标优化问题转化为单目标优化问题。当这种方法被用来寻找多个解决方案时,必须被多次应用,希望在每次模拟运行中都能找到不同的解决方案。

精英策略引入的目的 :可以帮助多目标进化算法更好地收敛

非支配解的定义:假设存在两个解S1和S2,对所有目标而言,,S1均优于S2,则我们称S1支配S2,若S1没有被其他解所支配,则S1被称为非支配解。

多基因性:个体的单个表现型特征可能决定于许多基因的相互作用。

基因多效性:单个基因可以同时影响若干个表现型特征。

上位( epistatic )效应:多基因性和基因多效性统称为上位效应。

  • 10
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值