多目标进化算法系列
- 多目标进化算法(MOEA)概述
- 多目标优化-测试问题及其Pareto前沿
- 多目标进化算法详述-MOEA/D与NSGA2优劣比较
- 多目标进化算法-约束问题的处理方法
- 基于C#的多目标进化算法平台MOEAPlat实现
- MOEAD中聚合函数等高线分析
- MOEAD中一种使解更均匀分布的聚合函数介绍
对于大多数多目标优化问题,其各个目标往往是相互冲突的,因此不可能使得所有的目标同时达到最优,而是一组各个目标值所折衷的解集,称之为Pareto最优集。以下为一些基本定义(以最小化优化问题为例):
Definition 1: 多目标优化问题(multi-objective optimization problem(MOP))
F
(
x
)
=
(
f
1
(
x
)
,
.
.
.
,
f
m
(
x
)
)
s
.
t
.
x
∈
Ω
F(x)=(f_1(x),...,f_m(x))\\ s.t. \; x\in \Omega
F(x)=(f1(x),...,fm(x))s.t.x∈Ω
Definition 2: Pareto支配(Pareto Dominance)
x支配y,记为 x
≺
\prec
≺ y ,当且仅当
∀
i
∈
{
1
,
2
,
.
.
.
,
m
}
\forall {i} \in \{1,2,...,m\}
∀i∈{1,2,...,m},
f
i
(
x
)
≤
f
i
f_i(x) \leq f_i
fi(x)≤fi(y), 且
∃
j
∈
{
1
,
2
,
.
.
.
,
m
}
\exists {j} \in \{1,2,...,m\}
∃j∈{1,2,...,m}, s.t.
f
j
(
x
)
<
f
j
(
y
)
\; f_j(x)<f_j(y)
fj(x)<fj(y) 。
Definition 3: Pareto最优解(Pareto Optimal Solution)
如果一个解
x
∗
x^*
x∗ 被称之为Pareto optimal solution, 当且仅当
x
∗
x^*
x∗ 不被其他的解支配。
Definition 4: Pareto 集(Pareto Set)
一个MOP,对于一组给定的最优解集,如果这个集合中的解是相互非支配的,也即两两不是支配关系,那么则称这个解集为Pareto Set 。
Definition 5: Pareto 前沿(Pareto Front)
Pareto Set 中每个解对应的目标值向量组成的集合称之为Pareto Front, 简称为PF
Definition 6:近似集(Approximation Set)
一般来说,准确的Pareto Set是很难得到的,其近似集相比来说容易得到,因此一般我们只需用一定数量的Approximation Set 来表示PS 。
Definition 7: 近似前沿(Approximation Front)
Approximation Set 中每个解对应的目标值向量组成的集合称之为Approximation Front 。
目前来说,由于多目标问题的复杂性,传统的数学方法不能取得较为理想的结果,而进化算法在多目标优化问题上得到了很广泛的应用,通过种群的不断进化迭代,进化算法能得到一个Approximation Set,那么我们如何来评价得到的Approximation Set的优劣呢,以下为两方面的评价标准。
Definition 7:收敛性(Convergence)
Approximation Front 与 PF 的贴近程度。
Definition 8: 分布性(Distribution)
描述Approximation Front 在PF 的分布情况,包括多样性(Diversity)和均匀性(Uniformity)。
具体来说,常用的两个指标分别是IGD(Inverted Generational Distance) 和 HV(Hypervolume)。其中,IGD需要知道PF数据,且其具体计算为每个PF中的点到其最近的Approximation Front中的点的距离之和的均值。同时,需注意,这两种方法都能同时度量解的分布性和收敛性。
现在来讲讲主流的多目标进化算法。
从进化算法的角度来讲,目前已有遗传算法(GA),粒子群算法(PSO),蚁群算法(ACO)等一系列算法用来解决多目标优化问题,但用的比较多的还是遗传算法,粒子群算法也有。
从多目标问题本身来说,主要分类如下:
- 基于Pareto支配关系
- 基于分解的方法
- 基于Indicator方法
先来介绍下基于遗传算法的多目标优化算法的一些基本参数:
种群大小:每次迭代都需保证种群大小是一致的,且其大小应由初始化设定。
交叉概率:用于衡量两个个体交叉的概率。
突变率:交叉产生的解发生突变的概率。
标准的遗传算法每次迭代都会将上一代的个体丢弃,虽然这符合自然规律,但对于遗传算法来说,这样效果不是特别好,因此,精英保留策略将上一代个体和当前个体混合竞争产生下一代,这种机制能较好的保留精英个体。
基于Pareto支配关系
最经典的方法是NSGA-II,该方法由Kalyanmoy Deb等人于2002年提出(A Fast and Elitist Multiobjective Genetic Algorithm:
NSGA-II),该方法主要包括快速非支配排序,将每次交叉突变产生的解和前一代的解合并,然后利用非支配排序分层,其伪代码如下:
快速非支配排序算法流程
输入:父代子代个体构成的种群
P
P
P
FOR each
p
∈
P
p\in P
p∈P
\quad
S
p
=
∅
S_p=\varnothing
Sp=∅
\quad
n
p
=
0
n_p=0
np=0
\quad
FOR each
q
∈
P
q\in P
q∈P
\qquad
IF
p
≺
q
p\prec q
p≺q
\quad
\qquad
S
p
=
S
p
⋃
{
q
}
S_p=S_p\bigcup \{q\}
Sp=Sp⋃{q}
\qquad
ELSEIF
q
≺
p
q\prec p
q≺p
\quad
\qquad
n
p
=
n
p
+
1
n_p=n_p+1
np=np+1
\qquad
ENDIF
\quad
ENDFOR
\quad
IF
n
p
=
=
0
n_p==0
np==0
\qquad
p
r
a
n
k
=
1
p_{rank}=1
prank=1
\qquad
F
1
=
F
1
⋃
{
p
}
F_1=F_1\bigcup \{p\}
F1=F1⋃{p}
\quad
ENDIF
ENDFOR
i
=
1
i=1
i=1
WHILE
F
i
≠
∅
F_i\neq \varnothing
Fi=∅
\quad
Q
=
∅
Q=\varnothing
Q=∅
\quad
FOR each
p
∈
F
i
p\in F_i
p∈Fi
\qquad
FOR each
q
∈
S
p
q\in S_p
q∈Sp
\quad
\qquad
n
q
=
n
q
−
1
n_q=n_q-1
nq=nq−1
\quad
\qquad
IF
n
q
=
=
0
nq==0
nq==0
\qquad
\qquad
q
r
a
n
k
=
i
+
1
q_{rank}=i+1
qrank=i+1
\qquad
\qquad
Q
=
Q
⋃
{
q
}
Q=Q\bigcup \{q\}
Q=Q⋃{q}
\quad
\qquad
ENDIF
\qquad
ENDFOR
\quad
ENDFOR
\quad
i
=
i
+
1
i=i+1
i=i+1
\quad
F
i
=
Q
F_i=Q
Fi=Q
ENDWHILE
输出:
F
1
,
F
2
,
.
.
.
,
F
i
F_1,F_2,...,F_i
F1,F2,...,Fi
再就是把每层相加直到超过种群个体,也即满足 l = a r g m i n l ∑ i = 1 l > N l=argmin_l{\sum_{i=1}^{l}}>N l=argminl∑i=1l>N 并且有 ∑ i = 1 l − 1 < N \sum_{i=1}^{l-1}<N ∑i=1l−1<N, 再在第 l l l层基于拥挤距离来选择解,拥挤距离伪代码如下:
拥挤距离计算方法
输入:第
i
i
i层的解
R
t
=
F
l
Rt=F_l
Rt=Fl
r
=
∣
R
t
∣
r=|Rt|
r=∣Rt∣
for each
j
j
j,set
R
t
[
j
]
d
i
s
t
a
n
c
e
=
0
Rt[j]_{distance}=0
Rt[j]distance=0
FOR each objective
m
m
m
\quad
R
t
=
s
o
r
t
(
R
t
,
m
)
Rt=sort(Rt,m)
Rt=sort(Rt,m)
\quad
R
t
[
1
]
d
i
s
t
a
n
c
e
=
R
t
[
r
]
d
i
s
t
a
n
c
e
=
∞
Rt[1]_{distance}=Rt[r]_{distance}=\infty
Rt[1]distance=Rt[r]distance=∞
\quad
FOR
j
=
2
:
(
r
−
1
)
j=2:(r-1)
j=2:(r−1)
\qquad
R
t
[
j
]
d
i
s
t
a
n
c
e
=
R
t
[
j
]
d
i
s
t
a
n
c
e
+
(
R
t
[
j
+
1
]
.
m
−
R
t
[
j
−
1
]
.
m
)
/
(
f
m
m
a
x
−
f
m
m
i
n
)
Rt[j]_{distance}=Rt[j]_{distance}+(Rt[j+1].m-Rt[j-1].m)/(f_m^{max}-f_m^{min})
Rt[j]distance=Rt[j]distance+(Rt[j+1].m−Rt[j−1].m)/(fmmax−fmmin)
\quad
ENDFOR
ENDFOR
具体来说,NSGA-II使用快速非支配排序来保证收敛性,并且利用拥挤距离来保证分布性。特别说下,在迭代后期,大多数解都是非支配的,也即大多数解都在第一层。
当然,随着NSGA-II的提出,很多基于此的算法如雨后春笋般大量涌现,特别是在处理高维多目标优化问题时这种想法得到很多的应用,如VaEA,RVEA,NSGA-III等。
同时,SPEA2也是基于Pareto支配关系的一种较为流行的算法(SPEA2: Improving the Strength Pareto Evolutionary Algorithm),该算法使用一个外部保存集来保存较为优秀的解,同时,对每一个解,利用其支配的解的数量和基于KNN的邻近解的距离来给每一个解打分,得分越小的解更优。
基于分解的方法
该方法第一次系统地被提出是在2007年由Qingfu Zhang等人提出(MOEA/D: A Multiobjective Evolutionary Algorithm Based on Decomposition),该方法将MOP分解为多个子问题,这样就可以优化每个子问题来求解一个MOP。一般而言,基于分解的方法首先需要得到一组均匀分布的参照向量来指导选择操作。在此,有必要说说产生参照向量的方法。目前对于低维多目标优化问题,常用方法为Das and Dennis于1998年提出的systematic approach(Normal-boundary intersection: A new method for generating the pareto surface in nonlinear multicriteria optimization problems).
对于每个参照向量,其指导选择的过程需要比较解的优劣,这就需要用到一些标量函数来定量衡量一个解对于这个参照向量的适应度值。常用的标量函数包括:
- Weighted Sum Approach
- Tchebycheff Approach
- penalty-based boundary intersection (PBI) approach
Weighted Sum Approach
m
i
n
g
w
s
(
x
∣
λ
)
=
∑
i
=
1
m
λ
i
f
i
(
x
)
min \; g^{ws}(x|\lambda)=\sum_{i=1}^m\lambda_if_i(x)
mingws(x∣λ)=∑i=1mλifi(x)
其中
λ
\lambda
λ是参照向量,其运行机理如下图:
这里需要注意,标准的Weighted Sum Approach不能处理非凸问题,因为由上图可知,对于非凸问题,每个参照向量的垂线与其前沿不可能相切。对于这个问题,Rui Wang等人与2016年提出相对应的改进(Localized weighted sum method for many-objective optimization),主要是约束替换范围。
Tchebycheff Approach
m
i
n
g
t
e
(
x
∣
λ
,
z
∗
)
=
m
a
x
{
λ
i
(
f
i
(
x
)
−
z
i
∗
)
}
min\; g^{te}(x|\lambda,z^*)=max\; \{\lambda_i (f_i(x) - z_i^*)\}
mingte(x∣λ,z∗)=max{λi(fi(x)−zi∗)}
其中
λ
\lambda
λ是参照向量,其运行机理如下图:
标准的Tchebycheff Approach得到的解不均匀,为此Yutao Qi等人于2014年提出一种解决方法(MOEA/D with Adaptive Weight Adjustment), λ ∗ = ( 1 λ 1 ∑ i = 1 m 1 λ i , . . . . , 1 λ m ∑ i = 1 m 1 λ i ) \lambda^* =(\frac{\frac{1}{\lambda_1}}{\sum_{i=1}^m\frac{1}{\lambda_i}},....,\frac{\frac{1}{\lambda_m}}{\sum_{i=1}^m\frac{1}{\lambda_i}}) λ∗=(∑i=1mλi1λ11,....,∑i=1mλi1λm1),通过这个参照向量的转换即可得到分布均匀的解。
penalty-based boundary intersection (PBI) approach
m
i
n
g
p
b
i
(
x
∣
λ
,
z
∗
)
=
d
1
+
θ
d
2
min\; g^{pbi}(x|\lambda,z^*)=d_1+\theta d_2
mingpbi(x∣λ,z∗)=d1+θd2
其中
d
1
d_1
d1,
d
2
d_2
d2如上图所示。一般来说,
θ
=
5
\theta = 5
θ=5是比较常用的,Yuan Yuan等人提出的
θ
−
D
E
A
\theta -DEA
θ−DEA算法对
θ
\theta
θ的取值有较为详细的讨论(A New Dominance Relation-Based Evolutionary Algorithm for Many-Objective Optimization)。
基于分解的进化方法框架如下:
MOEA/D算法流程
N
N
N个均匀分布的权重向量:
λ
1
,
λ
2
,
.
.
.
,
λ
N
\lambda_1,\lambda_2,...,\lambda_N
λ1,λ2,...,λN //
N
N
N 是种群大小
P
0
P_0
P0:随机初始化的种群
z
∗
z^*
z∗:初始化的理想点
T
T
T:每个权重向量的邻居的个数
B
(
i
)
=
(
i
1
,
i
2
,
.
.
.
,
i
T
)
B(i)=(i_1,i_2,...,i_T)
B(i)=(i1,i2,...,iT)是第
i
i
i个权重向量的
T
T
T个邻居的编号
t
=
0
t = 0
t=0
WHILE
t
<
M
a
x
I
t
e
r
a
t
i
o
n
t < MaxIteration
t<MaxIteration
\quad
FOR(
i
=
1
,
2
,
.
.
.
,
N
i=1,2,...,N
i=1,2,...,N)
\qquad
构造新解:从
B
(
i
)
B(i)
B(i)中随机选择两个索引
k
,
l
k,l
k,l,再基于
x
k
,
x
l
x^k,x^l
xk,xl生成新解
y
y
y
\qquad
更新
z
∗
z^*
z∗:对于
j
=
1
,
2
,
.
.
.
,
m
j=1,2,...,m
j=1,2,...,m,如果
z
j
∗
<
f
)
j
(
y
)
z_j^*<f)j(y)
zj∗<f)j(y),则用
f
j
(
y
)
f_j(y)
fj(y)取代
z
j
∗
z_j^*
zj∗
\qquad
更新近邻解:对于每一个
j
∈
B
(
i
)
j\in B(i)
j∈B(i),如果
g
(
y
∣
λ
j
,
z
∗
)
≤
g
(
x
j
∣
λ
j
,
z
∗
)
g(y|\lambda_j,z^*)\leq g(x^j|\lambda_j,z^*)
g(y∣λj,z∗)≤g(xj∣λj,z∗),那么则用解
y
y
y取代
x
j
x^j
xj
\quad
ENDFOR
\quad
t
=
t
+
1
t = t + 1
t=t+1
ENDWHILE
输出结果
基于Indicator方法
相比于IGD指标,Hypervolume更容易用来作为一个测度在种群进化过程中用来选择个体,如IBEA[8]以及其快速计算HV的HypE[9],因为IGD需要知道真实的Pareto Front数据,而这对于一个未知多目标优化问题是相当困难的,但有些算法是用当前的非支配解来近似Pareto Front,如AR-MOEA[10]。
至于具体的多目标进化算法后续将会详细介绍。
ps:文献[12]是我的硕士论文,里面有较为详细的综述类的描述,对多个经典算法以及一些遗传操作都有介绍,还有衡量指标也是。
QQ交流群:399652146
参考文献
[1] K. Deb, A. Pratap, S. Agarwal, and T. Meyarivan, “A fast and elitist multiobjective genetic algorithm: NSGA-II,” IEEE Trans. Evol. Comput., vol. 6, no. 2, pp. 182–197, Apr. 2002
[2] E. Zitzler, M. Laumanns, and L. Thiele, “SPEA2: Improving the strength Pareto evolutionary algorithm,” in Proc. Evol. Methods Design Optim. Control Appl. Ind. Prob., Athens, Greece, 2002, pp. 95–100.
[3] Qingfu Zhang and Hui Li. Moea/d: A multiobjective evolutionary algorithm based on decomposition. IEEE Transactions on evolutionary computation, 11(6):712–731, 2007.
[4] Yutao Qi, Xiaoliang Ma, Fang Liu, Licheng Jiao, Jianyong Sun, and Jianshe Wu. MOEA/D with adaptive weight adjustment. Evolutionary computation, 22(2):231–264, 2014.
[5] Kalyanmoy Deb and Himanshu Jain. An evolutionary many objective optimization algorithm using reference- point-based nondominated sorting approach, part i: Solving problems with box constraints. IEEE Trans. Evolutionary Computation, 18(4):577–601, 2014.
[6] Yuan Yuan, Hua Xu, Bo Wang, and Xin Yao. A new dominance relation-based evolutionary algorithm for many-objective optimization. IEEE Transactions on Evolutionary Computation, 20(1):16–37, 2016.
[7] Indraneel Das and John E Dennis. Normal-boundary intersection: A new method for generating the pareto surface in nonlinear multicriteria optimization problems. SIAM Journal on Optimization, 8(3):631–657, 1998
[8] E. Zitzler and S. Kunzli, "Indicator-based selection in multiob- jective search,"in Proceedings of the 8th International Conference on Parallel Problem Solving from Nature, 2004, pp. 832–842.
[9] J. Bader and E. Zitzler, “HypE: An algorithm for fast hypervolume-based many-objective optimization,” Evolutionary Computation, vol. 19, no. 1, pp. 45–76, 2011.
[10] Tian Y, Cheng R, Zhang X, et al. An Indicator Based Multi-Objective Evolutionary Algorithm with Reference Point Adaptation for Better Versatility[J]. IEEE Transactions on Evolutionary Computation, 2017, PP(99):1-1.
[11] 张作峰. 基于分解的多目标进化算法研究[D]. 湘潭大学, 2013.
[12] 基于分解思想的多目标进化算法研究. 湖南大学, 2018