MOEA/D 算法
基于分解的多目标进化算法(MOEA/D)2007年提出[1]。MOEA/D算法是一种基于分解的多目标优化算法,它将一个多目标优化问题分解成若干个标量优化子问题,并同时对其进行优化。于分解操作的存在,该方法在保持解的分布性方面有着很大优势,而通过分析相邻问题的信息来优化,能避免陷入局部最优。
[1]这篇论文把分解的思想用到了进化计算中,之前这些方法大都用在传统解决优化问题的方法上
将PF的近似问题转化为标量优化问题的方法
- 权重和方法
- 切比雪夫方法
- 边界交叉法
辅助理解这个算法的
- https://www.docin.com/p-1627227465.html [感觉翻译了论文的绝大部分]
- https://blog.csdn.net/sinat_33231573/article/details/80271801
- https://blog.csdn.net/qq_35414569/article/details/79655400 [对这三种方法的解释比较好]
MOEA/D算法流程
输入:
- 多目标优化的目标函数
- 算法终止条件(迭代次数)
- N定义的种群大小
- 均匀分布的N个权重向量
- T:每个临域中权重向量的个数
算法流程
- 初始化
1.1 N个均匀分布的权重向量: λ 1 , … λ N , i = 1 , … , N \lambda_1,\dots \lambda_N, i=1,\dots,N λ1,…λN,i=1,…,N,并计算每个权重向量最近的T个权重向量B(i)
1.2. 在可行空间中均匀采样初始化的种群
1.3. 初始化z(每个目标函数的最优值,根据需要最大化还是最小化进行初始化)
1.4. 设置外部种群EP为空 - 当小于迭代次数的时候
2.1. 从B(i)中随机选取两个序号k,l,由 x k 和 x l x^k 和x^l xk和xl产生一个新的解y
2.2 对产生的解进行修复改正
2.3 更新z:若 z j < f j ( y ) z_j<f_j(y) zj<fj(y),则 z j = f j ( y ) , j = 1 , … , n O b j z_j=f_j(y), j=1,\dots,nObj zj=fj(y),j=1,…,nObj
2.4 更新邻域解:若 g t s ( y ∣ λ j , z ) ≤ g t s ( x j ∣ λ j , z ) , j ∈ B ( i ) g^ts(y|\lambda^j,z)\leq g^ts(x^j|\lambda^j,z),j\in B(i) g