赞
踩
因此,我们今天要讲解的内容是在前两篇推文的基础上,讲解如何建立归一化后的个体与参考点之间的联系,以及如何根据建立的联系从第 l l l层个体 F l F_{l} Fl中选择出 K = N − ∣ P t + 1 ∣ K=N-\left|P_{t+1}\right| K=N−∣Pt+1∣个个体。
建立联系操作实质上指的是建立归一化后的个体与参考点之间的联系。
不过首先我们要明确的一点时,这个联系究竟指的是什么?
要回答这个问题,我们需要思考,在前两篇推文中我们花了好大力气,又是生成参考点,又是归一化种群个体,目的是什么呢?目的就是利用参考点均匀分布的性质,希望能够从第 l l l层个体 F l F_{l} Fl中选择出的 K = N − ∣ P t + 1 ∣ K=N-\left|P_{t+1}\right| K=N−∣Pt+1∣个个体也能够均匀分布。
因此,这个联系指的是归一化后的个体与参考点之间的匹配关系,即每个个体究竟从属于哪个参考点。
各位可以思考一下,归一化后的个体在解空间中是以点的形式存在,而参考点也是以点的形式存在,那么上述建立联系的问题就转化为建立这两类点之间联系的问题。
论文中给出的解决思路如下:
STEP1:将原点与各个参考点 z ∈ Z r z\in Z^{r} z∈Zr进行连线,形成若干条参考线 w = z w=z w=z。
STEP2:依次遍历每个归一化后的个体,就每一个个体 s ∈ S t s\in S_{t} s∈St而言,计算该个体到各条参考线的垂直距离 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)=s−wTs/∥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:argminw∈Zrd⊥(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=N−∣Pt+1∣个个体呢?
这也就是本小节所要讲解的内容——小生境保留操作。
在讲解小生境保留操作前,先给出一个名词——参考点的小生境数目,即某个参考点所联系的前
l
−
1
l-1
l−1层个体的数目,则第
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)
j∈Zr:ρj=s∈St\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,s∈Fl。
以选择第 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:argminj∈Zrρ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ˉ,s∈Fl}。
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:argmins∈Ijˉ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+1∪random(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中没有联系到任何个体,那么这个参考点就没有存在的必要了,也就需要从参考点集合中删除。
小生境保留操作伪代码如下:
总体来说,我们通过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。具体的伪代码如下所示:
https://yarpiz.com/456/ypea126-nsga3
想快速入门智能优化算法的小伙伴可以阅读我们的书籍,本书对算法的讲解详细易懂,对代码的注释也十分完备,想要入手此书的小伙伴可以抓紧入手哦!
京东自营:
https://item.jd.com/13422442.html
当当自营:
http://product.dangdang.com/29301483.html
OK,今天就到这里啦。我们已经推出粉丝QQ交流群,各位小伙伴赶快加入吧!!!
咱们下期再见
新书上架 | 《MATLAB智能优化算法:从写代码到算法思想》
遗传算法(GA)求解带时间窗的车辆路径(VRPTW)问题MATLAB代码
粒子群优化算法(PSO)求解带时间窗的车辆路径问题(VRPTW)MATLAB代码
知乎 | bilibili | CSDN:随心390
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。