MOEA/D论文阅读笔记Ⅱ

  • MOEA/D vs. MOGLS(Neighbor&TEP)
    • MOGLS
    • MOGLS vs. MOEA/D(Complexity)
    • 多目标0-1背包问题—MOKP
    • 两种算法的MOKP具体实施
      • 修复方法
      • MOGLS的实施方案
      • MOEA/D的实施方案
      • 参数设置
    • 实验结果
      • 评价指标
      • 结果
  • MOEA/D vs. NSGA Ⅱ
    • 利于实验对比的MOEA/D变体
    • NSGA-Ⅱ vs. MOEA/D(Complexity)
    • 参数设置
    • 实验结果
    • 对MOEA/D算法的一些改进
      • 采用PBI分解方法的MOEA/D算法
      • 采用目标函数归一化的MOEA/D算法
  • Scability, Sensitivity, and Small Population in MOEA/D
    • 对T的敏感性分析
    • 小种群的MOEA/D算法
    • 扩充性
  • Conclusion
  • 参考文献及链接

写在前边:本文依然是自己的理解笔记,仅用作本人学习记录。写博客的时候主要参考了原文,具体链接在文末。

MOEA/D vs. MOGLS(Neighbor&TEP)

 选取MOGLS用来对比的原因是MOGLS采用了分解策略,且它在大量多目标0/1背包问题的有名算法中表现出了较好的性能。

MOGLS

 MOGLS算法被Ishibuchi和Murata提出,后又被Jaszkiewicz改进。其主要思想是将MOP转换为同时优化所有加权切比雪夫函数或者所有加权和函数。下边简要描述Jaszkiewicz版本的MOGLS算法。
符号及参数定义
 在每一次迭代,MOGLS算法包括:

  • 一组当前解CS和这些解的适应度值FFF-values;
  • 一个外部种群EP,用于存储非支配解;
  • 使用切比雪夫方法的MOGLS算法还应包括z=(z1,....,zm)Tz=(z_1,....,z_m)^Tz=(z1​,....,zm​)T,其中ziz_izi​是目标函数fif_ifi​迄今为止找到的最大值;

 MOGLS需要两个控制参数KKK和SSS。其中KKK是临时精英种群的大小,SSS是CSCSCS的初始大小。mmm是目标函数个数。

输入输出
INPUT:MOP;停止迭代的条件;K;S。
OUTPUT:EP。

初始化

  • 随机生成SSS个初始解。CS=x1,...,xSCS={x^1,...,x^S}CS=x1,...,xS;
  • 初始化z⃗=(z1,...,zm)T\vec{z}=(z_1,...,z_m)^Tz=(z1​,...,zm​)T;
  • 初始化EPEPEP为CSCSCS所有非支配解FFF-values的集合。

迭代循环

  • 基因重组:均匀随机生成一个权重向量λ\lambdaλ。

    • 针对使用权重向量λ\lambdaλ的切比雪夫聚合函数gteg^{te}gte,从CSCSCS中选出KKK个最优解形成临时精英种群TEPTEPTEP;
    • 从TEPTEPTEP中随机选取两个解作为生成算子的输入生成新解yyy。
  • 改善:对yyy运用启发式方法进行改善,生成y′y^\primey′;
  • 更新zzz:对j=1,2,...,mj=1,2,...,mj=1,2,...,m,如果zj<fj(y′)z_j<f_j(y^\prime)zj​<fj​(y′),令zj=fj(y′)z_j=f_j(y^\prime)zj​=fj​(y′);
  • 更新TEPTEPTEP中的解
    • 针对使用权重向量λ\lambdaλ的切比雪夫聚合函数gteg^{te}gte,如果y′y^\primey′比TEPTEPTEP中的最差解好并且和TEP中所有解的FFF-values都不同,就将其添加进CSCSCS集合。
    • 如果CSCSCS集合大小大于K×SK × SK×S,删除CSCSCS中最旧的解(存在时间最长的解)。
  • 更新EP:从EP中移除F(y′)F(y^\prime)F(y′)的支配向量;如果EP中不存在支配F(y′)F(y^\prime)F(y′)的向量就将F(y′)F(y^\prime)F(y′)加入EP。

停止迭代: 满足停止条件后,停止迭代。否则,重新进入迭代循环步骤。

MOGLS vs. MOEA/D(Complexity)

  1. Space Complexity:在进行搜索时,MOEA/D算法需要保留内部种群的NNN个解以及外部种群。而MOGLS需要存储CSCSCS集合,CSCSCS大小会一直增加直到最大边界K×SK × SK×S。因此,如果K×SK × SK×S比NNN大且两种算法生成了相同数量的非支配解时,MOEA/D的空间复杂度小
  2. Computational Complexity:重要的复杂计算集中在迭代循环步骤。
  • 基因重组步骤,∣CS∣|CS|∣CS∣非常大时,MOGLS的计算复杂度远高于MOEA/D:
     MOGLS:需要生成TEPTEPTEP。一是计算CSCSCS中所有点的目标函数值fj(x)f_j(x)fj​(x),需要O(m×∣CS∣)O(m×|CS|)O(m×∣CS∣);二是在选择TEPTEPTEP时需要计算gteg^{te}gte值,O(K×∣CS∣)O(K×|CS|)O(K×∣CS∣);
     MOEA/D:只需要随机选取两个用于生成算子的解。
  • 改善新解yyy和更新参考点向量zzz步骤,两者相同;
  • 更新TEPTEPTEPvs.更新邻居解:MOEA/D需要O(T)O(T)O(T);MOGLS需要O(K)O(K)O(K)【计算TTT个邻居解的gteg^{te}gte或者计算KKK个TEPTEPTEP解的gteg^{te}gte】。当TTT和KKK的值选取接近时,两算法差别不大。
     综上,大概可以判断MOEA/D的计算复杂度小。【主要由于基因重组生成新解步骤】

多目标0-1背包问题—MOKP

 给定nnn个物品和mmm个背包,在满足容量限制的条件下使收益最大化。MOKP的数学描述为:
maxmizefi(x)=∑j=1npijxj,i=1,...,ms.t.∑j=1nwijxj≤cj,i=1,...,mx=(x1,...,xn)T∈{0,1}n(1)maxmize\quad f_i(x)=\sum_{j=1}^{n}p_{ij}x_j,i=1,...,m\\s.t.\quad \sum_{j=1}^{n}w_{ij}x_j\le c_j,i=1,...,m\\x=(x_1,...,x_n)^T \in \left\{0,1\right\}^n\quad (1)maxmizefi​(x)=j=1∑n​pij​xj​,i=1,...,ms.t.j=1∑n​wij​xj​≤cj​,i=1,...,mx=(x1​,...,xn​)T∈{0,1}n(1)
 其中:第iii个背包中第jjj个物品的价格pij≥0p_{ij}\ge 0pij​≥0;第iii个背包中第jjj个物品的重量wij≥0w_{ij}\ge 0wij​≥0;cic_ici​是第iii个背包的容量;xi=1x_i=1xi​=1时意味着物品iii被选中并且将其放进所有的背包中。
 关于该问题的9个测试实例被广泛用于多目标启发式算法的测试。在大量的MOEA算法中,MOGLS针对这些测试实例展现出了较为杰出的性能。

两种算法的MOKP具体实施

修复方法

 修复方法主要是为了修正启发式算法所搜索到的非可行解。令y=(y1,...,yn)T∈{0,1}ny=(y_1,...,y_n)^T\in \left\{0,1\right\}^ny=(y1​,...,yn​)T∈{0,1}n为MOP(1)MOP(1)MOP(1)的一组不可行解。一种方法可以将某些yiy_iyi​由1改成0使得wij≥0,pij≥0w_{ij}\ge 0, p_{ij}\ge 0wij​≥0,pij​≥0。Jaszkiewicz提出了一种贪心修复算法

  • INPUT&OUTPUT
     Input:MOP,解yyy,待最大优化的目标函数g:{0,1}n⟶Rg:\left\{0,1\right\}^n\longrightarrow Rg:{0,1}n⟶R;
     Output:可行解y′=(y1′,...,yn′)Ty^\prime=(y_1^\prime,...,y_n^\prime)^Ty′=(y1′​,...,yn′​)T
  • Step(1):如果yyy是可行的,令y′=yy^\prime=yy′=y并返回y′y^\primey′;
  • Step(2):令J={j∣1≤j≤nand yj=1}J=\left\{j|1\le j\le n \text { and } y_j=1\right\}J={j∣1≤j≤n and yj​=1}且I={j∣1≤j≤mand ∑j=1nwijxj>cj}I=\left\{j|1\le j\le m\text { and }\sum_{j=1}^{n}w_{ij}x_j>c_j\right\}I={j∣1≤j≤m and ∑j=1n​wij​xj​>cj​}
  • Step(3):选择k∈Jk\in Jk∈J例如k=argminj∈Jg(y)−g(yj−)∑i∈Iwijk=arg\underset{j\in J}{min}\frac{g(y)-g(y^{j-})}{\sum_{i\in I}w_{ij}} k=argj∈Jmin​∑i∈I​wij​g(y)−g(yj−)​
    其中,yj−y^{j-}yj−仅与yyy在jjj处的值不同【例如:对所有的i≠j,yij−=yi∧yjj−=0(yj=1)i\ne j,y_i^{j-}=y_i\wedge y_j^{j-}=0(y_j=1)i​=j,yij−​=yi​∧yjj−​=0(yj​=1)】。令yk=0y_k=0yk​=0并返回Step(1)。

 这种方法中,在这种方法中,物体被一个一个移除直到yyy为可行解。过重背包中拥有较重质量(∑i∈Iwij\sum_{i\in I}w_{ij}∑i∈I​wij​)以及对g(x)g(x)g(x)贡献小的物体(g(y)−g(yj−)g(y)-g(y^{j-})g(y)−g(yj−))更可能被移除。

MOGLS的实施方案

 修复算法使用Jaszkiewicz提出的贪心算法。使用切比雪夫方法的MOGLS算法细节如下:

  • 初始化z=(z1,...,zm)Tz=(z_1,...,z_m)^Tz=(z1​,...,zm​)T:针对每一个目标函数fif_ifi​随机生成一个点,应用修复算法将其修正为可行解。将该点的fif_ifi​值定为ziz_izi​
  • 初始化EP、CSEP、CSEP、CS:初始化EP、CSEP、CSEP、CS为空集,然后将下列步骤重复SSS次。
     1. 使用论文中描述的采样算法随机生成权重向量λ\lambdaλ;
     2. 随机生成解x=(x1,...,xn)T∈{0,1}nx=(x_1,...,x_n)^T\in \left\{0,1\right\}^nx=(x1​,...,xn​)T∈{0,1}n,其中xi=1x_i=1xi​=1(即被选中)的概率是0.5;
     3. 将−gte(x∣λ,z)-g^{te}(x|\lambda,z)−gte(x∣λ,z)设为修复算法的目标函数,对xxx使用修复算法得到可行解x′x\primex′;
     4. 将x′x\primex′添加进CSCSCS。从EPEPEP中移除所有被F(y′)F(y\prime)F(y′)支配的目标向量。如果原EP中不存在支配F(y′)F(y\prime)F(y′)的向量,将F(y′)F(y\prime)F(y′)加入EP。
  • 生成算子:单点交叉算子和标准变异算子。单点交叉生成子代解child solution,变异算子以每个点为0.01的变异概率对子代解进行变异操作生成新解yyy。
  • 改善修复算法:Jaszkiewicz提出的贪心算法。

MOEA/D的实施方案

 使用与MOGLS相同的生成算子、zzz的初始化方法以及改善修复算法。第iii个子问题的初始解xix^ixi的初始化方法:将−gte(x∣λ,z)-g^{te}(x|\lambda,z)−gte(x∣λ,z)设为目标函数,对随机生成的解应用修复算法。令xix^ixi为修复后的解。
 采用加权和分解方法时,两个算法的具体实施过程基本一致。除了修复算法中将gwsg^{ws}gws作为目标函数以及不保留zzz。

参数设置

MOGLS:设置K=20K=20K=20,针对不同的实例设置不同的SSS;
MOEA/D:设置T=10T=10T=10,NNN和λ1,...,λN\lambda^1,...,\lambda^Nλ1,...,λN的设定与参数HHH有关。每一个权重值取自{0H,1H,...,HH}\left\{\frac{0}{H}, \frac{1}{H},...,\frac{H}{H} \right\}{H0​,H1​,...,HH​}。因此,权重向量个数N=CH+m−1m−1N=C_{H+m-1}^{m-1}N=CH+m−1m−1​。

实验结果

 每个测试函数在MOGLS和MOEA/D算法中独立运行30次。

评价指标

覆盖率——C-metric:
 令AAA和BBB是一个MOP中两个PF的近似解集,定义C(A,B)C(A,B)C(A,B)如下:
C(A,B)=∣{u∈B∣∃v∈A:vdominates u}∣∣B∣C(A, B)=\frac{|\{u \in B \mid \exists v \in A: v \text { dominates } u\}|}{|B|}C(A,B)=∣B∣∣{u∈B∣∃v∈A:v dominates u}∣​
其中,C(A,B)≠1−C(B,A)C(A,B)\ne1-C(B,A)C(A,B)​=1−C(B,A)。C(A,B)=1C(A,B)=1C(A,B)=1意味着BBB中所有的解都被AAA中的某些解支配了,C(A,B)=0C(A,B)=0C(A,B)=0意味着BBB中没有解被AAA中的解支配。C(A,B)C(A,B)C(A,B)越大就证明AAA中的解对BBB中解的支配度越高,即AAA中的解越优于BBB中的解。

距离度量——D-metric:
 令P∗P^*P∗为一组均匀分布在PF上的点的集合,AAA是PF的近似解集。P∗P^*P∗到AAA的平均距离定义为:
D(A,P∗)=∑v∈P∗d(v,A)∣P∗∣D\left(A, P^{*}\right)=\frac{\sum_{v \in P^{*}} d(v, A)}{\left|P^{*}\right|}D(A,P∗)=∣P∗∣∑v∈P∗​d(v,A)​
其中,d(v,A)d(v, A)d(v,A)是vvv点和AAA中某点的最小欧氏距离。如果P∗P^*P∗足够大(P∗P^*P∗中解的个数足够多),说明其可以很好的代表PF。D(A,P∗)D\left(A, P^{*}\right)D(A,P∗)可以在某种意义上评估AAA的收敛性和多样性。D(A,P∗)D\left(A, P^{*}\right)D(A,P∗)值越小,就说明AAA越接近PF,收敛性越好。

结果

 作者直接使用Jaszkiewicz求解的upper approximation of the PF作为真实的PF点。通过对比平均CPU运行时间和评价指标的均值与标准差,得出如下结论:

  • CPU time:

    • 横向对比:针对2/3/4目标函数实例,MOEA/D算法的运行时间都远小于(大约是1/7)MOGLS,印证了MOEA/D计算复杂度小这一特征;
    • 纵向对比:MOEA/D——2/3目标函数下加权和分解方法运行速度快,4目标函数下切比雪夫方法运行速度快;MOGLS——2目标函数下,切比雪夫方法运行速度快,3/4目标函数下加权和方法运行速度快。
  • 对所有的测试实例,使用加权和或者切比雪夫方法的MOEA/D算法可以在更少次修复下达到最小化D-metric的目的。
  • 对于C-metric值和D-metric值(及标准差值)
    • C-metric值:选取解集AAA为MOEA/D算法求解的解集,解集BBB为MOGLS算法求解的解集。实验结果显示两种方法下绝大部分C(A,B)C(A,B)C(A,B)明显大于C(B,A)C(B,A)C(B,A)(尤其是切比雪夫分解方法),即MOEA/D算法得出的解集支配MOGLS算法得出的解集
    • D-metric值:MOEA/D算法的值均小于MOGLS算法的D值,且绝大多数标准差也更小,MOEA/D算法的收敛性更好
  • 收敛性来看,切比雪夫分解方法下两种算法收敛性能更好

 综上,在多目标背包问题中MOEA/D算法性能很好的体现了其计算复杂度低的特点,同时其收敛性也明显优于MOGLS算法

MOEA/D vs. NSGA Ⅱ

测试函数:ZDT1~ZDT4、ZDT6,DTLZ1、DTLZ2[跳转]。
NSGA-Ⅱ基础理论知识:跳转。

利于实验对比的MOEA/D变体

 为了保证两者有一个公平的对比,对MOEA/D算法做出了如下变动:

  • 取消EP:将内部种群产生的最终迭代解返回为算法所得的PF近似解,因此也就不存在更新EP这一步骤;
  • 不使用修复方法,因此不存在改善这一步骤;
  • 更新邻居解时使用gteg^{te}gte,即使用切比雪夫分解方法

 加权和方法无法处理非凸解,所以此处采用切比雪夫分解方法。

NSGA-Ⅱ vs. MOEA/D(Complexity)

Space:与NSGA-Ⅱ相比,MOEA/D算法额外的内存需求仅多了存储zzz,而zzz的大小是O(m)O(m)O(m),与种群大小相比zzz很小。因此两者空间复杂度相近
ComputationalNSGA-Ⅱ的复杂度为O(mN2)O(mN^2)O(mN2)[跳转],MOEA/D的计算复杂度为O(mNT)O(mNT)O(mNT)。MOEA/D算法的计算复杂度主要集中在迭代循环步骤:移除了改善步骤和更新EP步骤后,基因重组步骤随机选取两个解、更新zzz步骤计算yyy对应的m个目标函数值用于更新zzz—O(m)O(m)O(m)、更新邻居解步骤需要计算TTT个邻居解的gteg^{te}gte值(计算一个邻居解就需要m次)—O(mT)O(mT)O(mT)。针对NNN个子问题求出最优解组成最终的PF近似解集—O(mNT)O(mNT)O(mNT)。因此,它们的计算量每一代的复杂性为O(mNT)O(mN2)=O(T)O(N)\frac{O(mNT)}{O(mN^2)}=\frac{O(T)}{O(N)}O(mN2)O(mNT)​=O(N)O(T)​
 由于TTT远小于NNN,因此MOEA/D比NSGA-II计算复杂度低

参数设置

种群规模:2目标函数设为100;3目标函数设为300;
迭代次数:设为250。
种群初始化:在可行域内均匀随机采样。
ziz_izi​初始化:设置为初始种群中fif_ifi​的最小值。
生成算子:SBX & polynomial mutation,分布参数设为20。
交叉概率:设为1。
变异概率:设为1/n1/n1/n,其中nnn是决策变量个数。
权重向量的生成:同MOGLS对比实验时的生成方法(N、H)。
T:设为20。
每次对比试验运行30次
真实PF:2目标函数选取了PF上的500个均匀分布的解;3目标函数选取了PF上990个均匀分布的解。

实验结果

  • CPU time:对2目标测试函数,MOEA/D算法是NSGA-Ⅱ算法的两倍快;对3目标测试函数,MOEA/D算法是NSGA-Ⅱ算法的八倍快。
  • D-metric的收敛速率:在ZDT4/6和DTLZ1/2测试函数上,MOEA/D最小化D-metric值的速率更快。在其他几个测试函数上,与NSGA-Ⅱ持平或稍慢。
  • C-metric值:选取解集AAA为MOEA/D算法求解的解集,解集BBB为NSGA-Ⅱ算法求解的解集。实验结果显示两种方法下绝大部分C(A,B)C(A,B)C(A,B)明显大于C(B,A)C(B,A)C(B,A)(除了ZDT4),即MOEA/D算法得出的解集支配MOGLS算法得出的解集
  • D-metric值:MOEA/D在ZDT4/6和DTLZ1/2上所求D-metric值小于NSGA-Ⅱ。在其他几个测试函数上,略差于NSGA-Ⅱ。
  • 解的分布性及收敛性:在ZDT1/2/6和DTLZ1/2测试函数上,MOEAD算法的分布性更好。在ZDT4函数上,两者分布性近似。在ZDT3函数上,NSGA-Ⅱ表现更好,MOEA/D找到的解少于NSGA-Ⅱ。

 综上,使用切比雪夫方法的MOEA/D算法运行速度快。对于搜索到的解的质量,两者在2目标函数上表现近似,MOEA/D算法在3目标函数上的表现性能要明显优于NSGA-Ⅱ。

对MOEA/D算法的一些改进

通过对目标函数归一化可以使解的分布性得到明显改善。易判断,ZDT3测试函数是不连续的,DTLZ1/2问题中有两个问题是自然上升的。为了改善解的分布性,作者使用采用PBI方法的MOEA/D对DTLZ1/2进行优化,使用对目标函数归一化的MOEA/D对ZDT3进行优化。改善后结果如下:

采用PBI分解方法的MOEA/D算法

 作者使用PBI分解方法在两个3目标问题上进行测试,选取惩罚因子θ=5\theta = 5θ=5,其他参数设置和采用切比雪夫方法的MOEA/D算法相同。实验结果显示,采用PBI分解方法的D-metric值最小。且由实际解集分布(下图)可看出,PF近似解的分布性得到了明显的改善。因此,在MOEA/D框架中采用更为先进的分解方法解决3及以上目标函数的多目标问题是值得研究的。

采用目标函数归一化的MOEA/D算法

 作者仍采用基于切比雪夫分解方法的MOEA/D算法且不对参数做任何修改,仅在实施过程中对目标函数归一化。最简单的归一化方法是令(多目标问题为最小化问题)
fi=fˉi=fi−zi∗zinad−zi∗f_i=\bar{f}^i=\frac{f_i-z_i^*}{z_i^{nad}-z_i^*} fi​=fˉ​i=zinad​−zi∗​fi​−zi∗​​
其中,z∗=(z1∗,...,zm∗)Tz^*=(z_1^*,...,z_m^*)^Tz∗=(z1∗​,...,zm∗​)T为参考点,znad=(z1nad,...,zmnad)Tz^{nad}=(z_1^{nad},...,z_m^{nad})^Tznad=(z1nad​,...,zmnad​)T为目标空间的最低点。例如,zinad=max{fi(x)∣x∈PS}z_i^{nad}=max\left\{f_i(x)|x\in PS\right\}zinad​=max{fi​(x)∣x∈PS}。换句话说,znadz^{nad}znad定义了PF的上界,PF前沿。易判断,fi−zi∗≤zinad−zi∗f_i-z_i^*\le z_i^{nad}-z_i^*fi​−zi∗​≤zinad​−zi∗​。由此就将每一个目标函数的范围转化到了[0,1]范围内。
 但是,预先计算znadz^{nad}znad和z∗z^*z∗是困难的。作者以zzz代替z∗z^*z∗[前文中提到的初始化zzz及更新zzz的方法所产生的zzz即为z∗z^*z∗的替代],以z~inad\tilde{z}_i^{nad}z~inad​(当前种群下fif_ifi​的最大值)代替zinadz_i^{nad}zinad​。因此,计算gteg^{te}gte的式子由max1≤i≤m{λi(fi−zi)}\underset{1\le i\le m}{max}\left\{\lambda_i(f_i-z_i)\right\}1≤i≤mmax​{λi​(fi​−zi​)}变为max1≤i≤m{λi∣fi−ziz~inad−zi∣)}.\underset{1\le i\le m}{max}\left\{\lambda_i\left |\frac{f_i-z_i}{\tilde{z}_i^{nad}-z_i}\right |)\right\}.1≤i≤mmax​{λi​∣∣∣∣​z~inad​−zi​fi​−zi​​∣∣∣∣​)}.
 实验结果显示,通过对目标函数归一化可以对不同缩放程度的目标函数所构成的MOP解的分布性得到明显改善。

Scability, Sensitivity, and Small Population in MOEA/D

对T的敏感性分析

 作者采用控制变量法对T进行敏感性分析。分别对250-2背包问题和ZDT1进行敏感性分析。结果显示,T在10到50范围内MOEA/D对250-2背包问题表现得性能都较好。对ZDT1,MOEA/D在除了特别小的值之外所有T值情况下表现性能都很好。可以说,MOEA/D对T的设置不敏感(至少在相似问题下不敏感)
 在250-2背包问题中,T过大过小表现都不好:TTT太小,子代解和父代解会十分接近,从而使得算法缺乏探索其他搜索区域的能力;TTT太大,生成算子的两个输入解性能会很差,从而导致子代解性能也很差,影响算法的搜索能力。此外,T太大也会在更新邻居解步骤时产生较大的计算复杂度。
 而在ZDT1问题中,T过大算法的表现性能依旧不错,可能是因为即使两个子问题的权重向量十分不同,但是它们相关子问题的最优解还是十分相似的。

小种群的MOEA/D算法

 通常决策者并不需要消耗大量计算能力的大量Pareto最优解,他们只希望在小的计算复杂度情况下获得均匀分布的少量Pareto最优解。小种群的MOEA/D算法仍能获得在PF上均匀分布的解。作者以ZDT1为例,并采用前文相似的切比雪夫方法,仅将NNN设为20(前文是100)。结果显示,N=20N=20N=20情况下得到的Pareto最优解仍是在PF上均匀分布,而NSGA-Ⅱ算法则无法在相同迭代次数下找到最优解。

扩充性

 为了观察在将D-metric降低到相同水平时决策变量个数与函数计算的平均次数之间的关系,作者在ZDT1上进行了实验。除了迭代次数变为1000次(最大函数计算次数为10510^5105),其他参数设置与前文MOEA/D算法相同。结果显示,随着决策变量个数的增加,函数计算次数线性增加。

Conclusion

 MOEA/D算法首先将MOP分解为一组单目标子问题。然后利用EA同时对这些子问题进行优化。MOEA/D种群中的每一个个体解都和一个子问题相关联。所有子问题之间的邻居关系定义为它们的权重向量之间的距离。在MOEA/D算法中,使用当前子问题的邻居子问题当前解对当前子问题进行优化。
 作者将MOEA/D算法与MOGLS算法和NSGA-Ⅱ算法进行比较。结果显示MOEA/D算法拥有更低的计算复杂度,且在大多数测试问题中,MOEA/D算法所求解的质量更好。
 作者通过PBI分解和目标函数归一化方法改进MOEA/D,体现了MOEA/D算法的可优化性。
 作者采用控制变量法得出了MOEA/D算法对T不敏感,小种群下的MOEA/D算法同样可以得到均匀分布的解以及随着决策变量个数的增加MOEA/D的计算复杂度会线性增加的结论。

参考文献及链接

[1]Qingfu Zhang, Hui Li.MOEA/D: A Multiobjective Evolutionary Algorithm
Based on Decomposition[J].IEEE TRANSACTIONS ON EVOLUTIONARY COMPUTATION,2007(6):712-731

进化计算(八)——MOEA/D算法详解Ⅱ相关推荐

  1. Matlab人脸检测算法详解

    这是一个Matlab人脸检测算法详解 前言 人脸检测结果 算法详解 源代码解析 所调用函数解析 bwlabel(BW,n) regionprops rectangle 总结 前言 目前主流的人脸检测与 ...

  2. C语言实现扫雷完整算法详解~(附完整代码~)

    扫雷是一个常见小游戏,那么如何用C语言实现扫雷呢?学习了二维数组之后,我们可将扫雷的网格区域存储为二维数组,从而使用C语言实现扫雷. 目录 1.算法基本思路 2.算法详解 1.初始化数组与打印数组 2 ...

  3. 【面试】Raft算法详解

    文章目录 前言 一.Raft算法概述 二.Leader选举 三.日志同步 四.安全性 五.日志压缩 六.成员变更 七.Raft与Multi-Paxos的异同 八.Raft算法总结 参考 前言 Paxo ...

  4. 【机器学习】集成学习及算法详解

    集成学习及算法详解 前言 一.随机森林算法原理 二.随机森林的优势与特征重要性指标 1.随机森林的优势 2.特征重要性指标 三.提升算法概述 四.堆叠模型简述 五.硬投票和软投票 1.概念介绍 2.硬 ...

  5. 神经网络算法详解 04:反馈神经网络(Hopfield、BAM、BM、RBM)

    本文介绍了反馈神经网络,包括Hopfield网络,离散Hopfield网络(DHNN),连续Hopfield网络(CHNN),双向联想记忆网络(BAM),玻尔兹曼机(BM),受限玻尔兹曼机(RBM). ...

  6. JVM之垃圾回收算法详解

    JVM之垃圾回收算法详解 现有的垃圾回收算法 分类 垃圾收集器的设计原则 标记-清除算法 缺点 标记-复制算法 "Apple回收策略" 缺点 标记-整理算法 缺点 总结 现有的垃圾 ...

  7. Deep QLearning算法详解(强化学习 Reinforcement Learning)

    一.算法详解 文章最后附有博主自己实现的深度qlearning玩space invader游戏 本文介绍的是基于神经网络的qlearning算法.我们知道传统的qlearning算法只能处理状态和动作 ...

  8. 寻路算法——A*算法详解并附带实现代码

    一.前言 前天看了一篇博客介绍A*算法,按照自己的理解记录一下A*算法. 二.应用场景 一副地图中有坐标A和B,需要找到一条路径(如果有的话)能从A到B,地图中可能有河流或墙壁不能直接穿过,我们需要怎 ...

  9. 图论-最短路Dijkstra算法详解超详 有图解

    整体来看dij就是从起点开始扩散致整个图的过程,为什么说他稳定呢,是因为他每次迭代,都能得到至少一个结点的最短路.(不像SPFA,玄学复杂度) 但是他的缺点就是不能处理带负权值的边,和代码量稍稍复杂. ...

  10. C++中的STL算法详解

    1.STL算法详解 STL提供能在各种容器中通用的算法(大约有70种),如插入.删除.查找.排序等.算法就是函数模板,算法通过迭代器来操纵容器中的元素.许多算法操作的是容器上的一个区间(也可以是整个容 ...

最新文章

  1. 华为机考HJ6求质因子C语言解法
  2. 引进博士:118万安家房补+18万经费;硕士:42万安家房补+10万经费
  3. shinelon笔记本进bios设置u盘启动_U盘启动快捷键、开机进BIOS按键查询
  4. ASP.NET Core跨平台技术内幕
  5. Hamcrest Matchers教程
  6. java js跳出循环_[Java教程]js循环的总结
  7. Spring精华问答 | Spring Bean的自动装配是怎么回事?
  8. qt通过代码创建滚动区域,添加滚动区域到窗口
  9. 推荐Python互动艺术在线编辑器(腾讯扣叮)
  10. 微软将终止支持 Win7;今日头条不与微信竞争;诺基亚芬兰裁员 | 极客头条
  11. Atitit json数据操作法 目录 1. 2. 常用json函数类型四大类型 crud判断 1 1.1. 2.1. 创建json 2 1 1.2. 2.2. 选择与读取 3读取数据读取key
  12. 【Driver】协作安装程序
  13. 面包板入门电子制作 学习笔记5
  14. 一款可以通过经度纬度精确查询天气的工具
  15. 【LoRa点对点通信与控制】
  16. 无尽神域服务器维护,无尽神域辅助介绍_脚本功能大全
  17. 项目国际化I18N多语言切换
  18. Python语言程序设计 - 北京理工大学 网课所有资料(源码,pdf,ppt课件,视频等)
  19. 一个屌丝程序猿的人生(九十)
  20. UCOSIII操作系统学习笔记——任务

热门文章

  1. 基于MATLAB的数字信号处理(2) 时域采样和频域采样
  2. 用python证明采样定理_这一切都从指数函数开始(4)——采样定理
  3. Linux 系统启动与服务管理
  4. 双创计算机应用基础答案,“双创”背景下基于《计算机应用基础》课程网络学习空间的教学实践与研究(原稿)...
  5. 简易数字电路交通灯设计
  6. TMR 传感器的原理及应用
  7. php连接mysql 实现登录_php如何连接mysql实现简单注册登陆页面
  8. 手机测试光纤网速的软件,如何测试光纤网速?如何测试网速多少兆
  9. VLAN与Trunk的配置
  10. IT行业常见职位英语缩写及中文释义