《Multiobjective Evolutionary Algorithms:A Comparative Case Study and the Strength Pareto Approach》阅读笔记
摘要 本文以扩展的0-1背包问题为基础,对四种多目标进化算法进行了定量比较。此外,我们还引入了一种新的多目标进化优化方法–SPEA,它以一种独特的方式结合了以往多目标EA的几个特点。它的特征是a)将非支配解外部存储在第二个不断更新的种群中,b)根据支配它的外部非支配点的数量来评估个体的适应度,c)使用Pareto支配关系保持种群多样性,以及d)结合聚类过程以便在不破坏其特征的情况下减少非支配集。
1 INTRODUCTION
首先提出现实世界中的优化问题经常时多目标的,并且目标之间是相互竞争的关系,因此找到的解也通常是一组解而不是单一最优解。
由于相较于盲目的随机搜索,EA(evolutionary algorithm)更适合解决这样的多目标问题,因此为解决多目标优化问题,提出了不少multiobjective EA,不同的问题适用不同的算法(不同算法的算法对比见【5】)
本文的结构如下:第二节介绍了进化多目标优化领域中使用的关键概念,并对本研究中考虑的多目标进化算法进行了概述;第三节介绍了关于0/1背包问题的四个多目标进化算法的比较,其中又分为三个部分:测试问题的描述、比较的方法和实验结果;第四节介绍了SPEA的基本原理及其在三个问题(Schaffer问题、背包问题和系统级综合)上的应用;最后一节对全文做出总结并进行了未来展望。
2 MULTIOBJECTIVE OPTIMIZATION USING EVOLUTIONARY ALGORITHM
2.1 基础定义
多目标优化问题可以写为:
max
/
min
y
=
f
(
x
)
=
(
f
1
(
x
)
,
f
2
(
x
)
,
.
.
.
,
f
n
(
x
)
)
s
u
b
j
e
c
t
t
o
x
=
(
x
1
,
x
2
,
.
.
.
,
x
m
)
∈
X
y
=
(
y
1
,
y
2
,
.
.
.
,
y
m
)
∈
Y
\begin{aligned} \max\text{/}\min\text{\ }\boldsymbol{y}&=f\left( \boldsymbol{x} \right) =\left( f_1\left( \boldsymbol{x} \right) ,f_2\left( \boldsymbol{x} \right) ,...,f_n\left( \boldsymbol{x} \right) \right) \\ subject\ to\ \boldsymbol{x}&=\left( x_1,x_2,...,x_m \right) \in X \\ \boldsymbol{y}&=\left( y_1,y_2,...,y_m \right) \in Y \end{aligned}
max/min ysubject to xy=f(x)=(f1(x),f2(x),...,fn(x))=(x1,x2,...,xm)∈X=(y1,y2,...,ym)∈Y
其中,
x
x
x表示决策向量,
y
y
y表示目标向量,
X
X
X是参数空间,
Y
Y
Y是目标空间。
支配(cover)的定义:
在最大化问题中的两个决策向量:
a
,
b
∈
X
a,b \in X
a,b∈X,
a
a
a支配
b
b
b(即
a
≻
b
a\succ b
a≻b)当:
∀
i
∈
{
1
,
2
,
.
.
.
,
n
}
:
f
i
(
a
)
≥
f
i
(
b
)
∧
∃
j
∈
{
1
,
2
,
.
.
.
,
n
}
:
f
j
(
a
)
>
f
j
(
b
)
\begin{aligned} \forall i\in \left\{ 1,2,...,n \right\} &:f_i\left( \boldsymbol{a} \right) \ge f_i\left( \boldsymbol{b} \right) \ \land \ \\ \exists \boldsymbol{j}\in \left\{ 1,2,...,n \right\} &:f_j\left( \boldsymbol{a} \right) >f_j\left( \boldsymbol{b} \right) \end{aligned}
∀i∈{1,2,...,n}∃j∈{1,2,...,n}:fi(a)≥fi(b) ∧ :fj(a)>fj(b)
帕累托最优解:搜索空间中不被支配的决策向量。
帕累托最优解集(帕累托前沿面):由整个搜索空间中所有帕累托最优解组成。
2.2 适应度分配策略
主要分为以下三类:
a.plain aggregating method: 不适用于多目标优化问题;需要较多的领域知识;常用的方法由:加权求和、目标向量优化、目标达成方法等。
b. population-based non-Pareto approaches: 可以在一次运行中进化出多个非支配解,通过在繁殖阶段改变选择标准,同时在多个方向上引导搜索。部分算法中交配池的选择是根据
n
n
n个目标中的一个,其余算法都是使用多个目标的线性组合。
c. Pareto-based assignment:用帕累托支配的顺序确定繁殖的概率(但对非凸问题不敏感)。
其余方法基本由以上方法的组合形成。
2.3 多模式优化以及多样性保护
多模式搜索的目的是使帕累托解的分布尽可能均匀,单一的EA经常会由于1)选择压力;2)选择噪声;3)操作中断 遗漏最优解。因此提出了两种保护种群多样性的方法:niching techniques 和nonniching techniques.
niching techniques中最常用的是fitness sharing。在个体必须将可用资源分享给
σ
s
h
a
r
e
\sigma _{share}
σshare半径内的(邻域内)其他个体。
(根据距离函数作用在基因型还是表型,可以分为基因共享和表型共享;表型共享可以在决策向量或者目标向量上进行)
nonniching techniques中最常用的是restricted mating。在一定距离
σ
m
a
t
e
\sigma_{mate}
σmate内的个体才允许交配,该方法应用并不广泛。
2.4 四种基于种群的方法
以下是我们将要在应用在背包问题中进行比较的四种多目标进化算法:
2.4.1 VEDA(Vector Evaluated Genetic Algorithm)
将交配池分为 n n n个大小相同的部分,其中第 i i i个部分是由根据第 i i i个目标随机选择的个体组成,然后对交配池进行洗牌、交叉和变异。
2.4.2 HLGA(Vector Evaluated Genetic Algorithm)
本质是一种对目标函数的加权求和,只不过权重不固定,而是在基因中进行编码,并且通过表型适应度共享提高了权重组合的多样性,同时限制交配既可以加快收敛又可以提高遗传搜索的稳定性。
2.4.3 NPGA(Niched Pareto Genetic Algorithm)
该方法结合了锦标赛选择和帕累托排序:从种群中随机选择两个个体和一个比较集(比较集大小为 t d o m t_{dom} tdom),如果一个个体可以被比较集中的任意个体支配,另一个不是,则后者获胜;若两者都被支配(或都不被支配),则选择小生境内( σ s h a r e \sigma_{share} σshare)个体最少的一个进行繁殖。
2.4.4 NSGA(Nondominated Sorting Genetic Algorithm)
略
3 PERFORMANCE COMPARISON
以下是对四个算法在解决多目标0/1背包问题的实例研究,重点考虑的是算法寻找多个帕累托解的有效性。
3.1 多目标0/1背包问题
3.1.1 问题的数学描述
通常,0/1背包问题由一组物品、与每件物品相关的重量和利润以及背包容量的上限组成。该问题的任务是找到一个项目的子集,使子集中的总利润最大化,而所有选定的项目都可以放入背包中,即总重量不超过给定的容量。
设给定
m
m
m个物品,
n
n
n个背包,相关符号含义如下:
p
i
,
j
=
第
i
个
背
包
中
第
j
个
物
品
的
收
益
w
i
,
j
=
第
i
个
背
包
中
第
j
个
物
品
的
重
量
c
i
=
第
i
个
背
包
的
容
量
\begin{aligned} p_{i,j}&=第i个背包中第j个物品的收益 \\ w_{i,j}&=第i个背包中第j个物品的重量 \\ c_{i}&=第i个背包的容量 \end{aligned}
pi,jwi,jci=第i个背包中第j个物品的收益=第i个背包中第j个物品的重量=第i个背包的容量
目标是寻找一个向量(物品组合)
x
=
(
x
1
,
x
2
,
.
.
.
,
x
m
)
∈
{
0
,
1
}
m
\boldsymbol{x}=\left( x_1,x_2,...,x_m \right) \in \left\{ 0,1 \right\} ^m
x=(x1,x2,...,xm)∈{0,1}m(当物品
j
j
j被选中,
x
j
=
1
x_{j}=1
xj=1),使得:
∀
i
∈
{
1
,
2
,
.
.
.
,
n
}
:
∑
j
=
1
m
w
i
,
j
⋅
x
j
≤
c
i
\forall i\in \left\{ 1,2,...,n \right\} :\sum_{j=1}^m{w_{i,j}\cdot x_j\le c_i}
∀i∈{1,2,...,n}:j=1∑mwi,j⋅xj≤ci
同时
f
(
x
)
=
(
f
1
(
x
)
,
f
2
(
x
)
,
.
.
.
,
f
n
(
x
)
)
f\left( \boldsymbol{x} \right) =\left( f_1\left( \boldsymbol{x} \right) ,f_2\left( \boldsymbol{x} \right) ,...,f_n\left( \boldsymbol{x} \right) \right)
f(x)=(f1(x),f2(x),...,fn(x))达到最大值,其中:
f
i
(
x
)
=
∑
j
=
1
m
p
i
,
j
⋅
x
j
f_i\left( \boldsymbol{x} \right) =\sum_{j=1}^m{p_{i,j}\cdot x_j}
fi(x)=j=1∑mpi,j⋅xj
3.1.2 测试数据
一共考虑了九种情况:分别是2、3、4个背包,对应250、500、750个物品,收益
p
i
,
j
p_{i,j}
pi,j和重量
w
i
,
j
w_{i,j}
wi,j是[10,100]中的随机数,背包容量设置为物品总重量的一半:
c
i
=
0.5
∑
j
=
1
m
w
i
,
j
c_{i}=0.5\sum_{j=1}^m{w_{i,j}}
ci=0.5j=1∑mwi,j
3.1.3 实现
提出了一种对基因的修复机制(为了保证
x
∈
{
0
,
1
}
m
\boldsymbol{x}\in \left\{ 0,1 \right\} ^m
x∈{0,1}m对应的二进制编码
s
s
s在可行域内):从
s
s
s中逐步地删去物品,直到满足所有约束。删除的顺序由物品的单位重量利润决定,单位重量利润越小的越先被删除。
物品
j
j
j的单位重量利润由下式可得:
q
j
=
max
n
i
=
1
{
p
i
,
j
w
i
,
j
}
q_j=\underset{i=1}{\overset{n}{\max}}\left\{ \frac{p_{i,j}}{w_{i,j}} \right\}
qj=i=1maxn{wi,jpi,j}
3.2 方法论
在比较的背景下,存在以下几个问题:应该用什么量化指标来表示EA的运算结果的质量才比较有意义?一组多目标EA的运算结果应该是什么?为了保证比较的有效性,如何排除由不同的选择策略或交配限制产生的副作用?如何合理设置参数?接下来我们将一一讨论这几个问题:
3.2.1量化指标
3.2.1.1 Size of the space coverd
设 X ′ = ( x 1 , x 2 , . . . , x k ) ⊆ X X'=\left( \boldsymbol{x}_1,\boldsymbol{x}_2,...,\boldsymbol{x}_k \right) \subseteq X X′=(x1,x2,...,xk)⊆X表示 k k k个决策向量形成的集合,函数 S ( X ′ ) \mathcal{S}\left( \mathcal{X}' \right) S(X′)表示了多面体 p 1 , p 2 , . . . , p k p_1,p_2,...,p_k p1,p2,...,pk的并的体积,其中每个 p i p_i pi由“ x i \boldsymbol{x}_i xi与坐标轴形成的超平面”的交集组成(形成方式是:由目标空间中过点 ( f 1 ( x i ) , f 2 ( x i ) , . . . , f n ( x i ) ) \left( f_1\left( \boldsymbol{x}_i \right) ,f_2\left( \boldsymbol{x}_i \right) ,...,f_n\left( \boldsymbol{x}_i \right) \right) (f1(xi),f2(xi),...,fn(xi))与各坐标轴垂直的超平面相交)。比如在二维空间中每个 p i p_i pi表示顶点为 ( 0 , 0 ) (0,0) (0,0)和 ( f 1 ( x i ) , f 2 ( x i ) ) \left( f_1\left( \boldsymbol{x}_i \right) ,f_2\left( \boldsymbol{x}_i \right) \right) (f1(xi),f2(xi))的矩形。
3.2.1.2 Coverage of two sets
设
X
′
,
X
′
′
⊆
X
X',X''\subseteq X
X′,X′′⊆X是两组决策向量集,函数
C
\mathcal{C}
C将有序对
(
X
′
,
X
′
′
)
(X',X'')
(X′,X′′)映射到
[
0
,
1
]
[0,1]
[0,1]之间:
C
(
X
′
,
X
′
′
)
:
=
∣
{
a
′
′
∈
X
′
′
;
∃
a
′
∈
X
′
:
a
′
≻
a
′
′
}
∣
∣
X
′
′
∣
\mathcal{C}\left( X',X'' \right) :=\frac{\left| \left\{ \boldsymbol{a''}\in X'';\exists \boldsymbol{a'}\in X':\boldsymbol{a'}\succ \boldsymbol{a''} \right\} \right|}{\left| X'' \right|}
C(X′,X′′):=∣X′′∣∣{a′′∈X′′;∃a′∈X′:a′≻a′′}∣
当
C
(
X
′
,
X
′
′
)
=
1
\mathcal{C}\left( X',X'' \right)=1
C(X′,X′′)=1时,说明集合
X
′
′
X''
X′′中所有点都可被集合
X
′
X'
X′中的点支配,反之则反。需要注意的是该函数具有有序性,也就是
C
(
X
′
,
X
′
′
)
≠
C
(
X
′
′
,
X
′
)
\mathcal{C}\left( X',X'' \right)\ne\mathcal{C}\left( X'',X' \right)
C(X′,X′′)=C(X′′,X′).
函数
S
\mathcal{S}
S的优点是,每个EA都可以独立于其他EA进行评估;但该方法更适用于凸区域,并且在某些情况下该方法会高估某些解决方案。函数
C
\mathcal{C}
C克服了这一缺点,可以用来表明一种算法的结果主导另一种算法的结果,但也无法描述优越程度。
由于在上述比较中,重点是寻找Pareto最优集,而不是考察在权衡表面上是否均匀分布,所以我们没有考虑EA的在线性能(online performance),而是离线性能(offline performance)。因此,所有世代生成的所有个体的非支配集都被视为一次优化运行的输出。为了限制随机效应的影响,每个EA和测试问题总共执行了30次独立运行。每次取另一个随机创建的初始种群,对于每个测试问题,所有EA都在相同的30个初始种群上运行。
3.2.2 选择策略和交配限制
为了保证对比的公平想,采用同样的选择策略:binary tournament selection with replacement,同时对共享策略进行了改进:continuously updated sharing:部分填充的下一代被用来计算生态位计数,而不是当前一代(详情见【18】、【26】)。由于只有HLGA考虑了交配限制,为了保证对比的公平,对所有算法都不使用交配限制(对比试验也证明加入交配限制没有太大的影响)。
3.2.3 参数设置
generation:500
crossover probability:0.8
mutation probability:0.01
其余参数设置如下表:
3.3 实验结果
作为补充参考,在比较中还考虑了两种方法:随机抽样和多重独立抽样。第一种算法(RAND)每一代都根据交叉和变异概率随机地生成一定数量的个体,因此与EA的适应度评估个数相同。第二种算法是使用了加权求和方法的精英式单目标EA算法,为了与其他算法形成对比,每个测试问题都独立运行100次,每次运行都向随机选择的目标的线性组合方向运行,在100次运行中生成的所有解决方案中的非支配解都形成了该测试问题的权衡前沿。此外,研究了两种版本的单目标进化算法:一种是对目标的线性组合优化运行100代(SO-1),另一种是在每次优化运行500代后终止(SO-5)。
以下分别是各个算法函数
C
\mathcal{C}
C的盒型图、函数
S
\mathcal{S}
S的盒型图以及两个背包时各个算法的权衡面。
4 THE STRENGTH PARETO APPROACH
SPEA与其他多目标EA算法的相似之处:
1)将所有非支配解储存在外部;
2)利用帕累托支配对个体的适应度进行排序;
3)利用聚类减少存储的非支配解数量并不破坏权衡面的特征。
SPEA的特殊之处体现在以下四个方面:
1)在一个算法中融合了以上三种方法;
2)个体的适应度只取决于储存在外部非支配解集,与群体中其他成员是否有支配关系不重要;
3)外部非支配解集中所有解都参与选择;
4)为保护种群多样性提出了一种新的小生境方法:基于帕累托并且不需要任何距离参数。
4.1 算法
主要算法流程如下:
Step 1) 生成初始种群
P
P
P并建立一个空的外部非支配集
P
′
P'
P′
Step 2) 将
P
P
P中的非支配解放入
P
′
P'
P′
Step 3) 移除
P
′
P'
P′中被支配的解
Step 4) 如果外部非支配解的数量超出最大值
N
′
N'
N′,用聚类的方法删除部分解
Step 5) 计算
P
P
P和
P
′
P'
P′中所有个体的适应度值
Step 6) 用binary tournament selection with replacement的方法从
P
P
P和
P
′
P'
P′的所有个体中选择,直至填满交配池
Step 7) 应用交叉和变异算子
Step 8) 如果达到了最大迭代次数则停止,否则返回Step 2
以下详细说明适应度分配和聚类过程。
4.1.1 适应度分配
适应度分配过程主要分为两个阶段:首先对外部非支配集
P
′
P'
P′中的个体进行排序 ,再对种群内的个体进行评估。
Step 1) 每个外部非支配集
P
′
P'
P′中的个体
i
i
i都对应一个强度(strength)
s
i
s_i
si:
s
i
=
n
N
+
1
s_i=\frac{n}{N+1}
si=N+1n,其中
n
n
n表示在
P
P
P中被
i
i
i支配的个体数量,
N
N
N表示
P
P
P的大小。适应度
f
i
=
s
i
f_i=s_i
fi=si。
Step 2)
P
P
P中的个体
j
j
j的适应度为
P
′
P'
P′中能支配
j
j
j的个体
i
i
i强度之和。为了保证
P
′
P'
P′中的个体有更好的适应度,在上述强度之和上再加1。(注意这里适应度值越小,繁殖概率越高)
f
j
=
1
+
∑
i
,
i
≻
j
s
i
f_j=1+\sum_{i,i\succ j}{s_i}
fj=1+i,i≻j∑si
如下图所示:
左下角的暗阴影矩形被所有三个非控制点覆盖,而左上角明亮阴影的矩形只被一个非控制点覆盖。我们认为这些区域是niches,目标是将个体分布在这个“网格”上,使得:a)只被几个非支配点覆盖的(更亮的阴影)区域包含的个体比被多个非支配点覆盖的(暗阴影的)矩形多,以及b)一个区域包含与被相同数量的非支配点覆盖(即有同样阴影程度)的其他矩形一样多的个体。
这种机制直观反映了算法保留靠近帕累托最优前沿的个体,并希望其沿着权衡表面分布的思想。图4(a)说明了第一点:位于明亮区域的个体比其余种群成员获得更好的适应值。图4(b)说明了第二点,并直观地显示了强度原则:在其niche中有许多相邻个体,由于相关非支配点的高强度值而受到惩罚;非支配解越“强”,被覆盖的个体越不“适合”。
这样定义适应度共享的优势在于niches不是通过距离定义而是用帕累托支配,这样就不需要考虑距离参数。
4.1.2 聚类算法减少帕累托解
外部非支配解的数量可能非常多甚至有无穷多个,过多的非支配解会给算法带来较大影响:一是减缓算法的搜索速度;二是使种群分布不均匀,因此很有必要控制外部非支配解集的大小。因此使用聚类方法:average linkage method,步骤如下:
Step 1) 初始化聚类集
C
C
C,每个外部非支配解
i
∈
P
′
i\in P'
i∈P′都构成一个聚类
C
=
⋃
i
{
{
i
}
}
C=\bigcup_i{\left\{ \left\{ i \right\} \right\}}
C=⋃i{{i}}
Step 2) 如果
∣
C
∣
≤
N
′
\left| C \right|\le N'
∣C∣≤N′,则进行Step 5 ,否则进入Step 3。
Step 3) 计算每两个聚类
c
1
c_1
c1、
c
2
c_2
c2间的距离
d
=
1
∣
c
1
∣
⋅
∣
c
2
∣
⋅
∑
i
1
∈
c
1
,
i
2
∈
c
2
∥
i
1
−
i
2
∥
d=\frac{1}{\left| c_1 \right|\cdot \left| c_2 \right|}\cdot \sum_{i_1\in c_1,i_2\in c_2}{\lVert i_1-i_2 \rVert}
d=∣c1∣⋅∣c2∣1⋅i1∈c1,i2∈c2∑∥i1−i2∥
这里距离
∥
⋅
∥
\lVert \cdot \rVert
∥⋅∥是目标空间中的欧氏距离。
Step 4) 选择距离最小的两个聚类进行合并:KaTeX parse error: Expected 'EOF', got '\right' at position 23: …left\{ c_1,c_2 \̲r̲i̲g̲h̲t̲\} \cup \left\{…,返回Step 2。
Step 5) 从每个聚类中选取一个个体作为代表,计算合并后的非支配集。这里的代表选取每个聚类中的中心点(即距离同一类中其他点平均距离最小的点)。
4.2 一个检验函数:Schaffer’s f 2 f_2 f2
由Schaffer定义的检验函数
f
2
f_2
f2表达式如下:
min
f
2
(
x
)
=
(
g
(
x
)
,
h
(
x
)
)
w
h
e
r
e
g
(
x
)
=
x
2
h
(
x
)
=
(
x
−
2
)
2
\begin{aligned} \min\ f_2\left( x \right)&=\left( g\left( x \right) ,h\left( x \right) \right) \\ where\ g\left( x \right)&=x^2 \\ \ h\left( x \right) &=(x-2)^2 \end{aligned}
min f2(x)where g(x) h(x)=(g(x),h(x))=x2=(x−2)2
显然,在
x
∈
[
0
,
2
]
x\in[0,2]
x∈[0,2]时,两个函数一增一减,所以为了在
f
2
f_2
f2上测试SPEA,我们取14位的二进制编码指代
[
−
6
,
6
]
[-6,6]
[−6,6]上的实数,00000000000000表示-6,11111111111111表示6。其余参数设置如下:
参数 | 数值 |
---|---|
种群大小 N N N | 95/70/30 |
外部非支配集大小 N ′ N' N′ | 5/30/70 |
交叉概率 | 1.0 |
变异概率 | 0.0 |
迭代次数 | 100 |
下图是VEGA和SPEA在
f
2
f_2
f2上的对比:
显然SPEA生成的解更加均匀。
4.3 在0/1背包问题上的结果
由图像可以看出:1)SPEA在多目标EA算法中有更好的评估效果,覆盖的帕累托前沿面更广;2)SPEA求得的解计算量更少,更接近帕累托最优前沿;3)精英主义似乎比较重要,因为SP-S(没有将
P
′
P'
P′加入选择阶段)效果比SPEA差很多。
4.4 System-Level Synthesis中的应用
略
5 CONCLUSION
本研究比较了多目标0/1背包问题的四个多目标进化算法在九个不同问题设置下的优劣,并通过覆盖空间的大小来定量地衡量所获得的帕累托最优集的质量。此外,通过定义帕累托支配概念,对这些方法的结果进行了评估比较。
所有多目标进化算法的性能明显优于纯随机搜索策略,后者在搜索空间中随机生成新点,而不利用解之间的相似性。在这些多准则进化算法中,NSGA在所有测试问题上都取得了最好的结果。紧随其后的是VEGA,在这类问题上比NPGA有优势。与HLGA相比,VEGA和NPGA都被评估为在这里考虑的两个绩效衡量标准方面更好。
此外,还提出了一种新的多目标优化进化算法(SPEA),它不同于已有的多准则进化算法,它是基于协同进化原理和基于Pareto支配概念的小生境技术进行的。如三个应用所示,SPEA能够有效地引导搜索走向帕累托最优前沿。在0/1背包问题上,它的性能远远超过其他四个多目标进化算法。此外,实验结果表明,与单目标进化算法相比,SPEA算法甚至可以找到更接近全局最优权衡曲面的解。
关于未来的前景,以下问题可能值得研究:
1)如有可能,其他概率搜索算法,如模拟退火法、爬山法、禁忌搜索法等,以及“精确”方法(如整数线性规划、分枝定界法)和确定性启发式算法应在多目标0/1背包问题上进行测试,这将需要对EA的性能进行更准确的评估。
2)各种算法得到的非支配集的分布应包括在比较中。虽然覆盖空间的大小是考虑到这一属性的绩效衡量标准,但它没有实现对分布的单独评估。
3)还应对具有不同特征(如非凸性)的其他测试进行比较研究。
最后,多目标优化进化算法的理论仍有待研究,我们需要结合不同的选择方案来检验不同的适应度分配方法。