【智能优化算法-MOEA_D】基于MOEA_D求解联合经济排放调度(CEED)问题附matlab代码

1 内容介绍

MOEA/D 是一种将数学规划方法与 EA 相结合的求解 MOP 的 MOEA。 MOEA/D 将一个 MOP 分解为若干个的单目标优化子问题进行求解。由于子问题的 构造方法相同,只有权重不同,故权重的欧式距离较近的子问题,其最优解有相 互指导意义,因而该算法的进化动力是对邻近子问题的进化。

1.1MOEA/D 的特点

1.2MOEA/D 与其他 MOEA 的不同之处在于: (1)与其他经典 MOEA 不同,MOEA/D 采用数学规划中的分解策略,针对同一 个 MOP 采用分解策略进行分解,可根据求解的效果选择最佳分解策略,同时可与 传统的优化方法进行结合,进一步提高算法的优化性能。 (2)MOEA/D 中引入邻域的概念,邻域中的相邻子问题较为相似,故其解的信 息可同时优化多个子问题。邻域不仅加快了算法的运算效率,充分利用每个求得 的解,而且可以减少子问题的重复优化,简化运算。 (3)MOEA/D 中子问题的构造是由权向量来控制的,而 MOEA/D 进化的动力是 来源于邻域中子问题的解的指导,因此可以通过改变权向量中某个分量的值来动 态调整种群个体的进化方向,从而使该算法在搜索帕累托前沿不同部分的时候能 根据帕累托前沿的特征进行调整,更加合理分配运算资源。 (4)MOEA/D能求解其他MOEA无法解决的MOP,且其解具有良好的性能[63]。, 故而该算法的具有更强的通用性,应用空间广泛。 (5)MOEA/D 能很好地求解现阶段大多数 MOEA 无法求解的多个目标(尤其是目标个数大于 )的优化问题。当目标个数较多时,传统的 MOEA 的性能往往 会下降,无法得到高质量的解,而相对来说 MOEA/D 的算法性能没有明显下降。 (6)MOEA/D 易于引进目标归一化技术。在实际运用过程中,往往会遇到多个 目标函数的值属于不同的数量级别,而这个问题会影响到很多算法的运行性能。 在 MOEA/D 中,可以引入目标归一化技术来解决这个问题。

2 仿真代码

<span style="color:#333333"><span style="background-color:rgba(0, 0, 0, 0.03)"><code>%</code><code>​</code><code>function <span style="color:#dd1144">sp=CreateSubProblems(nObj,nPop,T)</span></code><code>​</code><code>    <span style="color:#afafaf">empty_sp.lambda</span>=<span style="color:#dd1144">[];</span></code><code>    <span style="color:#afafaf">empty_sp.Neighbors</span>=<span style="color:#dd1144">[];</span></code><code>​</code><code>    sp=<span style="color:#dd1144">repmat(empty_sp,nPop,1);</span></code><code>    </code><code>    <span style="color:#afafaf">%theta</span>=<span style="color:#dd1144">linspace(0,pi/2,nPop);</span></code><code>    </code><code>    for <span style="color:#dd1144">i=1:nPop</span></code><code>        lambda=<span style="color:#dd1144">rand(nObj,1);</span></code><code>        lambda=<span style="color:#dd1144">lambda/norm(lambda);</span></code><code>        <span style="color:#afafaf">sp(i).lambda</span>=<span style="color:#dd1144">lambda;</span></code><code>        </code><code>        <span style="color:#afafaf">%sp(i).lambda</span>=<span style="color:#dd1144">[cos(theta(i))</span></code><code>        <span style="color:#afafaf">%</span>              <span style="color:#dd1144">sin(theta(i))];</span></code><code>    end</code><code>​</code><code>    LAMBDA=<span style="color:#dd1144">[sp.lambda]';</span></code><code>​</code><code>    D=<span style="color:#dd1144">pdist2(LAMBDA,LAMBDA);</span></code><code>​</code><code>    for <span style="color:#dd1144">i=1:nPop</span></code><code>        <span style="color:#afafaf">[~,</span> <span style="color:#dd1144">SO]=sort(D(i,:));</span></code><code>        <span style="color:#afafaf">sp(i).Neighbors</span>=<span style="color:#dd1144">SO(1:T);</span></code><code>    end</code><code>​</code><code>end</code></span></span>

3 运行结果

4 参考文献

[1]连海. 基于改进MOEA/D算法的微网分级调度研究. 

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值