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 无法求解的多个目标(尤其是目标个数大于 3 时)的优化问题。当目标个数较多时,传统的 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代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
2019

被折叠的 条评论
为什么被折叠?



