多目标优化 | NSGA-Ⅲ(下篇,附MATLAB代码)


我们在 多目标优化 | NSGA-Ⅲ(上篇,附MATLAB代码)这篇推文中,讲解了NSGA-Ⅲ中的 参考点生成方法,这些参考点可以使最终获得的 帕列托解尽可能均匀分布。在 多目标优化 | NSGA-Ⅲ(中篇,附MATLAB代码)这篇推文中,我们讲解了NSGA-Ⅲ中的 种群个体的自适应归一化操作,实际上种群归一化操作可以看成是一个预处理操作,即为后续 将归一化后的个体与参考点之间建立联系

因此,我们今天要讲解的内容是在前两篇推文的基础上,讲解如何建立归一化后的个体与参考点之间的联系,以及如何根据建立的联系从第 l l l层个体 F l F_{l} Fl中选择出 K = N − ∣ P t + 1 ∣ K=N-\left|P_{t+1}\right| K=NPt+1个个体


建立联系操作

建立联系操作实质上指的是建立归一化后的个体与参考点之间的联系

不过首先我们要明确的一点时,这个联系究竟指的是什么

要回答这个问题,我们需要思考,在前两篇推文中我们花了好大力气,又是生成参考点,又是归一化种群个体,目的是什么呢?目的就是利用参考点均匀分布的性质,希望能够从第 l l l层个体 F l F_{l} Fl中选择出的 K = N − ∣ P t + 1 ∣ K=N-\left|P_{t+1}\right| K=NPt+1个个体也能够均匀分布。

因此,这个联系指的是归一化后的个体与参考点之间的匹配关系,即每个个体究竟从属于哪个参考点

各位可以思考一下,归一化后的个体在解空间中是以的形式存在,而参考点也是以的形式存在,那么上述建立联系的问题就转化为建立这两类点之间联系的问题

论文中给出的解决思路如下:

STEP1:将原点与各个参考点 z ∈ Z r z\in Z^{r} zZr进行连线,形成若干条参考线 w = z w=z w=z

STEP2:依次遍历每个归一化后的个体,就每一个个体 s ∈ S t s\in S_{t} sSt而言,计算该个体到各条参考线的垂直距离 d ⊥ ( s , w ) = s − w T s / ∥ w ∥ d^{\perp}(\mathbf{s}, \mathbf{w})=\mathbf{s}-\mathbf{w}^{T} \mathbf{s} /\|\mathbf{w}\| d(s,w)=swTs/∥w,找出最小垂直距离对应的参考点 π ( s ) = w : argmin ⁡ w ∈ Z r d ⊥ ( s , w ) \pi(\mathbf{s})=\mathbf{w}: \operatorname{argmin}_{\mathbf{w} \in Z^{r}} d^{\perp}(\mathbf{s}, \mathbf{w}) π(s)=w:argminwZrd(s,w),然后再计算该个体到该参考线的垂直距离 d ( s ) = d ⊥ ( s , π ( s ) ) d(\mathbf{s})=d^{\perp}(\mathbf{s}, \pi(\mathbf{s})) d(s)=d(s,π(s))

建立联系操作示意图如下图所示:

建立联系操作伪代码如下所示:


小生境保留操作

在建立完个体与参考点之间的匹配关系后,首先需要确认每个参考点究竟联系了多少个个体,这里我想大家也想到了有的参考点可能联系多个个体,而有的参考点可能没有联系任何个体。那么究竟如何根据个体与参考点之间的匹配关系,从第 l l l层个体 F l F_{l} Fl中选择出的 K = N − ∣ P t + 1 ∣ K=N-\left|P_{t+1}\right| K=NPt+1个个体呢?

这也就是本小节所要讲解的内容——小生境保留操作

参考点的小生境数目

在讲解小生境保留操作前,先给出一个名词——参考点的小生境数目,即某个参考点所联系的前 l − 1 l-1 l1层个体的数目,则第 j j j个参考点的小生境数目 ρ j \rho_{j} ρj计算公式如下:
j ∈ Z r : ρ j = ∑ s ∈ S t \ F l ( ( π ( s ) = j ) ? 1 : 0 ) j \in Z^{r}:\rho_{j}=\sum_{\mathbf{s} \in S_t \backslash F_l}((\pi(\mathbf{s})=j) ? 1: 0) jZr:ρj=sSt\Fl((π(s)=j)?1:0)
这里需要注意的一点是,在计算 ρ j \rho_{j} ρj匹配个体的范围限定在 P t + 1 = S t \ F l P_{t+1}=S_t \backslash F_l Pt+1=St\Fl

小生境保留操作步骤

我们最终希望得到的帕列托解能够均匀分布,这也就是种群多样性的具体体现。那么如何利用参考点的小生境数目 ρ j \rho_{j} ρj来维持种群多样性呢?

种群多样性顾名思义就是一个也不能少。换句话说,不管参考点的小生境数目 ρ j \rho_{j} ρj多么小,也要尽量保存第 l l l层个体 F l F_{l} Fl中匹配参考点为 j j j的个体,即 s : π ( s ) = j , s ∈ F l s: \pi(\mathbf{s})=j, s \in F_l s:π(s)=j,sFl

以选择第 k ∈ [ 1 , K ] k \in [1,K] k[1,K]个个体为例,小生境保留操作具体步骤如下:

STEP1:确定最小 ρ j \rho_{j} ρj的参考点集合, J min ⁡ = { j : argmin ⁡ j ∈ Z r ρ j } J_{\min }=\left\{j: \operatorname{argmin}_{j \in Z^r} \rho_j\right\} Jmin={j:argminjZrρj}

STEP2:从集合 J m i n J_{min} Jmin中随机选择出一个参考点 j ˉ = random ⁡ ( J min ⁡ ) \bar{j}=\operatorname{random}\left(J_{\min }\right) jˉ=random(Jmin)

STEP3:从第 l l l层个体 F l F_{l} Fl中选择匹配参考点为 j ˉ \bar{j} jˉ的个体集合 I j ˉ I_{\bar{j}} Ijˉ I j ˉ = { s : π ( s ) = j ˉ , s ∈ F l } I_{\bar{j}}=\left\{\mathbf{s}: \pi(\mathbf{s})=\bar{j}, \mathbf{s} \in F_l\right\} Ijˉ={s:π(s)=jˉ,sFl}

STEP4:如果$I_{\bar{j}}= \emptyset $,则转至STEP9,否则转至STEP5。

STEP5:如果 ρ j ˉ = 0 \rho_{\bar{j}}=0 ρjˉ=0,则转至STEP6,否则转至STEP7。

STEP6:更新 P t + 1 = P t + 1 ∪ ( s : argmin ⁡ s ∈ I j ˉ d ( s ) ) P_{t+1}=P_{t+1} \cup\left(\mathbf{s}: \operatorname{argmin}_{\mathbf{s} \in I_{\bar{j}}} d(\mathbf{s})\right) Pt+1=Pt+1(s:argminsIjˉd(s)),即从 I j ˉ I_{\bar{j}} Ijˉ中选择距离 j ˉ \bar{j} jˉ垂直距离最小的个体添加到种群 P t + 1 P_{t+1} Pt+1中。※$I_{\bar{j}}\ne \emptyset 且 且 \rho_{\bar{j}}=0 ,表示参考点 ,表示参考点 ,表示参考点\bar{j} 没有联系前 没有联系前 没有联系前l-1 层个体中的任何一个个体,而只联系第 层个体中的任何一个个体,而只联系第 层个体中的任何一个个体,而只联系第l 层个体 层个体 层个体F_{l} 中的若干个个体。这一步骤的含义为:本来参考点 中的若干个个体。这一步骤的含义为:本来参考点 中的若干个个体。这一步骤的含义为:本来参考点\bar{j} 没有联系前 没有联系前 没有联系前l-1 层中的个体,反而恰好联系到了第 层中的个体,反而恰好联系到了第 层中的个体,反而恰好联系到了第l 层中的个体,那为了维持种群多样性,就有必要保留第 层中的个体,那为了维持种群多样性,就有必要保留第 层中的个体,那为了维持种群多样性,就有必要保留第l$层中的个体。

STEP7:更新 P t + 1 = P t + 1 ∪ r a n d o m ( I j ˉ ) P_{t+1}=P_{t+1} \cup random(I_{\bar{j}}) Pt+1=Pt+1random(Ijˉ),即从 I j ˉ I_{\bar{j}} Ijˉ中随机选择一个个体添加到种群 P t + 1 P_{t+1} Pt+1中。

STEP8:更新 ρ j ˉ = ρ j ˉ + 1 \rho_{\bar{j}}=\rho_{\bar{j}}+1 ρjˉ=ρjˉ+1 F l = F l \ s F_l=F_l \backslash s Fl=Fl\s

STEP9:从参考点集合 Z r Z^{r} Zr中删除参考点 j ˉ \bar{j} jˉ,即 Z r = Z r \ { j ˉ } Z^{r}=Z^{r}\backslash \left\{\bar{j}\right\} Zr=Zr\{jˉ}。这一步骤的含义为:参考点 j ˉ \bar{j} jˉ在第 l l l层个体 F l F_{l} Fl中没有联系到任何个体,那么这个参考点就没有存在的必要了,也就需要从参考点集合中删除。

小生境保留操作伪代码如下:


NSGA-Ⅲ总结

总体来说,我们通过3篇推文详细阐述了NSGA-Ⅲ的基于参考点排序的选择机制。实际上NSGA-Ⅲ除了提出这种新的选择机制外,其余的进化操作(即交叉操作、变异操作)与NSGA-Ⅱ完全相同。因此在这里不做额外赘述。

本小节我们以第 t t t次迭代为例,再来回顾一下NSGA-Ⅲ算法的整体流程。算法的输入为H个参考点,第 t t t代父代种群 P t P_{t} Pt,以及一些基本参数。算法的输出为第 t + 1 t+1 t+1代父代种群 P t + 1 P_{t+1} Pt+1。具体的伪代码如下所示:


NSGA-Ⅲ代码获取方式

https://yarpiz.com/456/ypea126-nsga3


参考文献

  1. Katoch S, Chauhan S S, Kumar V. A review on genetic algorithm: past, present, and future[J]. Multimedia Tools and Applications, 2021, 80: 8091-8126.
  2. Deb K, Pratap A, Agarwal S, et al. A fast and elitist multiobjective genetic algorithm: NSGA-II[J]. IEEE transactions on evolutionary computation, 2002, 6(2): 182-197.
  3. Deb K, Jain H. An evolutionary many-objective optimization algorithm using reference-point-based nondominated sorting approach, part I: solving problems with box constraints[J]. IEEE transactions on evolutionary computation, 2013, 18(4): 577-601.
  4. Tian Y, Cheng R, Zhang X, et al. PlatEMO: A MATLAB platform for evolutionary multi-objective optimization [educational forum][J]. IEEE Computational Intelligence Magazine, 2017, 12(4): 73-87.
  5. Mostapha Kalami Heris, NSGA-III: Non-dominated Sorting Genetic Algorithm, the Third Version — MATLAB Implementation (URL: https://yarpiz.com/456/ypea126-nsga3), Yarpiz, 2016.
  6. Das I, Dennis J E. Normal-boundary intersection: A new method for generating the Pareto surface in nonlinear multicriteria optimization problems[J]. SIAM journal on optimization, 1998, 8(3): 631-657.
  7. 遗传算法之NSGA-III原理分析和代码解读(https://zhuanlan.zhihu.com/p/146618031)

想快速入门智能优化算法的小伙伴可以阅读我们的书籍,本书对算法的讲解详细易懂,对代码的注释也十分完备,想要入手此书的小伙伴可以抓紧入手哦!

京东自营:

https://item.jd.com/13422442.html

当当自营:

http://product.dangdang.com/29301483.html

OK,今天就到这里啦。我们已经推出粉丝QQ交流群,各位小伙伴赶快加入吧!!!


咱们下期再见

近期你可能错过了的好文章

新书上架 | 《MATLAB智能优化算法:从写代码到算法思想》

优化算法 | 灰狼优化算法(文末有福利)

优化算法 | 鲸鱼优化算法

遗传算法(GA)求解带时间窗的车辆路径(VRPTW)问题MATLAB代码

粒子群优化算法(PSO)求解带时间窗的车辆路径问题(VRPTW)MATLAB代码

知乎 | bilibili | CSDN:随心390

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值