MOEA/D 算法详解

2023-11-08




1 聚合方法

1.1 权重求和法 (Weighted Sum Approach)

m a x i m i z e    g w s ( x / λ ) = ∑ i = 1 m λ i f i ( x ) s u b j e c t t o x ∈ Ω maximize \ \ g^{ws}(x/\lambda) = \sum_{i=1}^m \lambda_if_i(x) \\ subject to x \in \Omega maximize  gws(x/λ)=i=1mλifi(x)subjecttoxΩ

在这里插入图片描述

权重求和法的意义在于, 我们不需要去考虑多个目标函数值的优化, 而是为每个目标函数根据重要程度分配一个恰当的权重, 也即 ∑ i = 0 m λ i = 1 \sum_{i=0}^m \lambda^i = 1 i=0mλi=1 。 然后根据目标函数 f i f_i fi 的重要程度进行不同程度的优化来获取 max/min 的函数值。



1.2 切比雪夫聚合法 (Tchebycheff Approach)

公式
m i n i m i z e    g t e ( x ∣ λ , z ∗ ) = m a x 1 ≤ i ≤ m { λ ∣ f i ( x ) − z i ∗ ∣ } s . t . x ∈ Ω minimize \ \ g^{te}(x|\lambda,z^*) = \mathop{max}\limits_{1\le i \le m} \{\lambda |f_i(x)-z^*_i|\} \\ s.t. x\in \Omega minimize  gte(xλ,z)=1immax{λfi(x)zi}s.t.xΩ

切比雪夫方法思路在于不断迫使个体接近预定的理想点, 最终到达约束条件 Ω \Omega Ω 下的 Pareto 最优解。算法的精髓在于通过聚合函数把多目标优化问题转化为单目标优化。

对于上述公式提出的多目标优化问题, 求最小值, 种群规模为m, 解析如下:

z ∗ = ( z 1 ∗ , z 2 ∗ , . . . , z m ∗ ) z^* = (z_1^*,z_2^*,...,z_m^*) z=(z1,z2,...,zm) 为一系列参考点( 理想点 ) , 该点不一定实际存在, 如上图所示, 该点仅仅为了指出函数优化的方向, 也即理想状态, 用数学语言描述即对任意 i = 1 , 2 , . . . , m   均 有 z i ∗ ≤ m i n { f i ( x ) ∣ x ∈ Ω } i=1,2,...,m \ 均有 z_i^* \le min\{f_i(x)|x\in\Omega\} i=1,2,...,m zimin{fi(x)xΩ}

λ ∗ = ( λ 1 , λ 2 , . . . , λ m ) \lambda^* = (\lambda^1,\lambda^2,...,\lambda^m) λ=(λ1,λ2,...,λm) 为一系列权重指标, 其中 ∑ i = 0 m λ i = 1 \sum_{i=0}^m \lambda^i = 1 i=0mλi=1 。 以下面图为例 w i 等 价 λ i w_i 等价 \lambda_i wiλi ,权重的数量与种群规模相同,种群规模是m,那么权重的数量就是m。每组权重向量将多目标优化问题转化为一个单目标优化问题。m组权重向量就是m个单目标优化问题。

m a x 1 ≤ i ≤ m { λ ∣ f i ( x ) − z i ∗ ∣ } \mathop{max}\limits_{1\le i \le m} \{\lambda |f_i(x)-z^*_i|\} 1immax{λfi(x)zi} 为所求的目标函数。 以目标函数中的一对值 λ 1 ∣ f 1 ( x ) − z 1 ∗ ∣   与   λ 2 ∣ f 2 ( x ) − z 2 ∗ ∣ \lambda_1|f_1(x)-z_1^*| \ 与 \ \lambda_2|f_2(x)-z_2^*| λ1f1(x)z1  λ2f2(x)z2 来说明, 根据需求我们需要求得两者之中的最大值。 但是为什么要求最大值呢? 我们看以下切比雪夫集合方法的表达式

m i n i m i z e    g t e ( x ∣ λ , z ∗ ) = m a x 1 ≤ i ≤ m { λ ∣ f i ( x ) − z i ∗ ∣ } minimize \ \ g^{te}(x|\lambda,z^*) = \mathop{max}\limits_{1\le i \le m} \{\lambda |f_i(x)-z^*_i|\} minimize  gte(xλ,z)=1immax{λfi(x)zi}我们的需求是缩小 g t e ( x ∣ λ , z ∗ ) g^{te}(x|\lambda,z^*) gte(xλ,z) 的值以期获得约束集上的最小值。 这里我们考虑一个集合 A = { 10 , 8 , 7 , 4 , 5 } A = \{10,8,7,4,5\} A={10,8,7,4,5} , 我们获取了其中最大值 10 之后对其进行缩小, 来减小与理想值之间的差距 ( λ 1 ∣ f 1 ( x ) − z 1 ∗ ∣ \lambda_1|f_1(x)-z_1^*| λ1f1(x)z1 的几何意义也即 f 1 与 Z 1 ∗ 之 间 的 距 离 f_1 与 Z_1^* 之间的距离 f1Z1 ) , 那么 10 在缩小之后顺带着带动了所有 < 10 的元素都进行了缩小。 这里的思想也就等价于不等式证明的思想, 证明函数小于某个确定值, 仅需证明其函数最大值小于该确定值即可。 因此, 如果集合中最大的值都达到了其最小值, 那么其他小于它的值肯定也达到了最小值。对于一个权重向量 λ \lambda λ 是如此,每一个权重向量都是按照这个方式求得相应的解。

在切比雪夫聚合方法中, 一个确定点(个体) 移动方向可能是下图的情形。



1.3 边界交叉法 (Boundary Intersection Approach)

公式
m i n i m i z e g b i ( x ∣ λ , z ∗ ) = d s u b j e c t t o z ∗ − F ( x ) = d λ    x ∈ Ω minimize g^{bi}(x|\lambda,z^*)=d \\ subject to z^* - F(x) = d\lambda \ \ x \in \Omega minimizegbi(xλ,z)=dsubjecttozF(x)=dλ  xΩ

边界交叉法的核心思想在于缩短理想点 z ∗ z^* z 与 实际点或者说个体 M M M 之间的距离。

左图是基础边界交叉法的图示, 右图则是基于惩罚机制的边界交叉法图示。

见名知意, 基于惩罚机制的边界交叉法的精髓在于其加入了惩罚机制。 该惩罚机制在实际点距离理想点越远时惩罚力度越大(实质上也是迫使点更快趋近理想点), 与深度学习中的基于学习的SGD类似, 能够根据不同的实际情况来增大或缩小 LR



2 算法流程

2.1 解的生成

公式
m i n i m i z e    g t e ( x ∣ λ , z ∗ ) = m a x 1 ≤ i ≤ m { λ ∣ f i ( x ) − z i ∗ ∣ } s . t . x ∈ Ω minimize \ \ g^{te}(x|\lambda,z^*) = \mathop{max}\limits_{1\le i \le m} \{\lambda |f_i(x)-z^*_i|\} \\ s.t. x\in \Omega minimize  gte(xλ,z)=1immax{λfi(x)zi}s.t.xΩ

算法假设相邻的权重上的解相似,每个权重都有邻居。下面图中红色的点,它的邻居就是附近的四个点,用这四个点去生成新解。生成新解之后,就要替换邻域中的解了。这里面策略很多,可以随机替换邻域中两个解如果这个新解比他们好的话。如此,种群可以更新,最终收敛至近似的Pareto front。



2.2 输入

  1. 多目标优化问题
  2. 算法终止条件
  3. N: MOEA/D 定义的种群大小
  4. 均匀分布的 N 个权重向量: λ 1 , . . . , λ n \lambda_1,...,\lambda_n λ1,...,λn
  5. T: 每个邻域中权重向量的个数 (圈的大小)


2.3 初始化

  • Step 1

    计算每个权重向量之间的欧式距离 (对于二目标优化就是 ( x 1 , y 1 ) 与 ( x 2 , y 2 ) (x_1,y_1) 与 (x_2,y_2) (x1,y1)(x2,y2) 的距离),对于每个权重向量 λ i \lambda^i λi 得到离它最近的 T T T 个权重向量存放于 B ( i ) B(i) B(i)(相邻集合)中。实质上, 如果 λ i 与 λ j \lambda^i 与 \lambda^j λiλj 的距离近, 其对应的 g t e ( x ∣ λ i , z ∗ ) 与 g t e ( x ∣ λ j , z ∗ ) g^{te}(x|\lambda^i,z^*) 与 g^{te}(x|\lambda^j,z^*) gte(xλi,z)gte(xλj,z) 也相近 。如下图所示, 由于 ∑ i = 0 m λ i = 1 \sum_{i=0}^m \lambda^i = 1 i=0mλi=1 , 因此所有的 λ \lambda λ 会落在一条直线上, 故欧式距离越小,表示越相邻;

  • Step 2

    随机生成种群 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn

  • Step 3

    初始化 z ∗ = ( z 1 ∗ , z 2 ∗ , . . . , z m ∗ ) z^* = (z_1^*,z_2^*,...,z_m^*) z=(z1,z2,...,zm) , z i = m i n { f i ( x 1 ) , f i ( x 2 ) , . . . , f i ( x N ) } z_i = min\{f_i(x_1),f_i(x_2),...,f_i(x_N)\} zi=min{fi(x1),fi(x2),...,fi(xN)} 即目标函数上的最小值

  • Step 4

    创建外部种群 EP 用于存储精英个体, 也即非支配个体, 初始为空



2.4 种群更新

参数解释

E P    E l i t e p o p u l a t i o n    精 英 种 群 EP \ \ Elite population \ \ 精英种群 EP  Elitepopulation  

B ( i )    邻 近 集 合 − 距 离 x 最 近 的 T 个 权 重 向 量 B(i) \ \ 邻近集合 - 距离 x 最近的 T个权重向量 B(i)  xT

z ∗    理 想 值 z^* \ \ 理想值 z  

F V x ( i )    F u n c t i o n V a l u e    目 标 函 数 值 FV^{x(i)} \ \ Function Value \ \ 目标函数值 FVx(i)  FunctionValue  

g t e ( x ( i ) ∣ λ , z ∗ )    理 解 为 到 Z ∗ 点 的 距 离 g^{te}(x(i)|\lambda,z^*) \ \ 理解为到 Z^* 点的距离 gte(x(i)λ,z)  Z

算法步骤

对每个编号为 i 个体执行以下操作

  • Step 1

    从邻近集合 B ( i ) B(i) B(i) 中随机选取序号 k , l k,l k,l 利用基因交叉生成新个体 y y y

  • Step 2

    对生成的新解(个体)进行修复和改进产生 修复后的解 y ′ y^{\prime} y

    notes: 修复的意义在于有时生成的解并不符合约束条件, 这时就需要执行修复函数进行修复,使其符合约束

  • Step 3

    更新理想值 z ∗ z^* z , 判断新生成的 y ′ y^{\prime} y 是否优于 z ∗ z^* z, 优于则替换

  • Step 4

    更新邻近集合 B ( i ) B(i) B(i) , 如果领域中解 g t e ( x ( i ) ∣ λ , z ∗ ) g^{te}(x(i)|\lambda,z^*) gte(x(i)λ,z) 小于 g t e ( y ′ ∣ λ , z ∗ ) g^{te}(y^{\prime}|\lambda,z^*) gte(yλ,z) , 则更新解对应的函数值 F V x ( i ) = F V y ′ , x ( i ) = y ′ FV^{x(i)} = FV^{y^{\prime}} , x(i) = y^{\prime} FVx(i)=FVy,x(i)=y

  • Step 5

    更新精英种群 E P EP EP, 从 E P EP EP 中移除所有被 y ′ y^{\prime} y 支配的解, 如果不存在则将 y ′ y^{\prime} y 加入 E P EP EP

  • 终止条件 是否达到迭代次数, 否则继续执行更新操作



2.5 算法框架

在这里插入图片描述
在这里插入图片描述



2.6 动画演示

动画制作比较简陋, 但大致的逻辑是对的, 可以参考, 后面有时间再做修改, 请不要做丑拒的小盆友~

更新后的 GIF 演示

附一个讲的很好的知乎回答 respect link.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MOEA/D 算法详解 的相关文章

  • 自动化测试:获取用户登录token信息,实现绕过登录跳转页面

    1 之前在网上看到 一些配置cookie来实现绕过登录的文章 但是 对于现在的网站 有些采用Local Storage来缓存当前加密的登录信息 这样的话 是无法通过cookie来操作的 所以我们需要得到缓存的已登录信息来实现绕过登录跳转到需
  • 安装Windows子系统(WSL2)-Ubuntu

    参考资料 https docs microsoft com zh cn windows wsl install manual https blog csdn net qq 28412779 article details 113565257
  • type-aliases-package不生效问题记录

    项目场景 在练习springboot集成mybatis时发现了这个问题 问题描述 这是我的yml文件中的type aliases package配置 但在mapper xml文件中还是不会生效 原因分析 配置地址书写错误 插件和idea冲突

随机推荐