MOEA/D原理及pyton实现

MOEA/D是一种基于分解的多目标优化算法,通过将多目标问题转化为多个标量子问题并优化。该算法在保持解的分布性方面表现出色。本文介绍了算法流程,包括权重和方法、切比雪夫方法、边界交叉法,并提供了Python实现。讨论了如何生成均匀权重向量、产生下一代解以及算法的效率和效果。
摘要由CSDN通过智能技术生成

MOEA/D 算法

基于分解的多目标进化算法(MOEA/D)2007年提出[1]。MOEA/D算法是一种基于分解的多目标优化算法,它将一个多目标优化问题分解成若干个标量优化子问题,并同时对其进行优化。于分解操作的存在,该方法在保持解的分布性方面有着很大优势,而通过分析相邻问题的信息来优化,能避免陷入局部最优。

[1]这篇论文把分解的思想用到了进化计算中,之前这些方法大都用在传统解决优化问题的方法上

将PF的近似问题转化为标量优化问题的方法

  • 权重和方法
  • 切比雪夫方法
  • 边界交叉法

辅助理解这个算法的


MOEA/D算法流程

输入:

  • 多目标优化的目标函数
  • 算法终止条件(迭代次数)
  • N定义的种群大小
  • 均匀分布的N个权重向量
  • T:每个临域中权重向量的个数

算法流程

  1. 初始化
    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. 当小于迭代次数的时候
    2.1. 从B(i)中随机选取两个序号k,l,由 x k 和 x l x^k 和x^l xkxl产生一个新的解y
    2.2 对产生的解进行修复改正
    2.3 更新z:若 z j &lt; f j ( y ) z_j&lt;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
  • 7
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值