动态多目标优化:基于可学习预测的动态多目标进化算法(DIP-DMOEA)求解CEC2018(DF1-DF14),提供MATLAB代码

发布于:2025-04-13 ⋅ 阅读:(14) ⋅ 点赞:(0)

一、DIP-DMOEA介绍

基于可学习预测的动态多目标进化算法(Learning-Based Directional Improvement Prediction for Dynamic Multiobjective Optimization,DIP-DMOEA)是2024年提出的一种动态多目标进化算法,核心在于利用神经网络学习环境变化模式,引导进化搜索。

  • 研究背景:近年来,采用预测策略的动态多目标进化算法在解决动态多目标优化问题时表现出良好性能,但多数算法仅适用于规则变化模式的问题,面对非线性相关等不规则变化模式时性能受限。
  • 算法设计:设计神经网络用于捕捉环境的多样变化模式,基于学习到的模式开发定向改进预测(DIP)方法,在决策空间中引导进化搜索朝着有潜力的方向进行,以预测出具有良好收敛性和多样性的初始种群,提升算法对各类动态多目标优化问题的求解能力。
  • 实验验证:通过在三个常用基准测试问题和一个实际问题上进行全面的实证研究,结果表明所提 DIP 方法有效,且该算法相较于其他的动态多目标进化算法具有一定优势。

算法核心要点

  • 神经网络学习环境变化模式:构建神经网络模型,让其学习动态多目标优化问题中环境的变化规律,能够处理非线性等复杂变化模式,克服传统预测策略的局限性。
  • 定向改进预测(DIP):依据神经网络学习到的环境变化模式,DIP 在决策空间中确定有希望的搜索方向。通过这种方式生成的初始种群,收敛性和多样性更优,使算法在求解不同动态多目标优化问题时更高效。

参考文献:Ye, Yulong, et al. "Learning-Based Directional Improvement Prediction for Dynamic Multiobjective Optimization." IEEE Transactions on Evolutionary Computation, Early Access, 24 April 2024, pp. 1 - 1. DOI:10.1109/TEVC.2024.3393151.

二、动态多目标优化测试集CEC2018介绍

CEC2018 是由 IEEE 计算智能学会(IEEE CIS)主办的进化计算大会(CEC)在 2018 年发布的动态多目标优化测试集,主要用于评估动态多目标优化算法的性能。

  • 测试函数构成:CEC2018 共有 14 个测试函数,分别为 DF1 - DF14。其中,DF1 - DF9 是双目标函数,DF10 - DF14 是三目标函数。这些测试函数涵盖了多种不同的动态特性和复杂情况,能够全面地考察算法在不同类型动态多目标优化问题上的求解能力。
  • 应用场景:现实世界中许多优化问题既具有多目标性,又与时间相关,即随着时间的变化,优化问题本身也会发生改变,这类问题被称为动态多目标优化问题(DMOP)。CEC2018 测试集就是为了模拟这类现实问题而设计的,可用于评估各种进化算法或其他智能优化算法在解决动态多目标优化问题时的性能,帮助研究人员比较和改进算法,以更好地应对实际应用中的类似问题。
  • 评估指标:对于动态多目标优化问题,通常需要评估算法跟踪最优解随时间变化的能力,相关指标包括追踪误差和响应速度等。通过在 CEC2018 测试集上运行算法,并计算这些指标,可以定量地分析算法在动态环境下的性能表现,例如算法能否快速适应问题的变化,以及在跟踪动态 Pareto 前沿时的准确性和稳定性如何。

三、部分MATLAB代码及结果

figure
if size(reskt{1,1}.turePOF,2)==2
    for i=1:size(reskt,2)
        AA=reskt{1,i}.POF_iter{1,10};
        AA=AA';
        BB=reskt{1,i}.turePOF;
        h1=plot(AA(:,1),AA(:,2),'r.');
        hold on
        h2=plot(BB(:,1),BB(:,2),'go');
    end
    % ylim([0 1])
    xlabel('f1')
    ylabel('f2')
    legend([h1 h2],'DIP-DMOEA','turePOF')
    title(['DIP-DMOEA求解' functions{testFuncNo}])
else
    for i=1:size(reskt,2)
        AA=reskt{1,i}.POF_iter{1,10};
        AA=AA';
        BB=reskt{1,i}.turePOF;
        h1=plot3(AA(:,1),AA(:,2),AA(:,3),'r.');
        hold on
        h2=plot3(BB(:,1),BB(:,2),BB(:,3),'go');
    end
    xlabel('f1')
    ylabel('f2')
    zlabel('f3')
    legend([h1 h2],'DIP-DMOEA','turePOF')
    title(['DIP-DMOEA求解' functions{testFuncNo}])
end

四、完整MATLAB代码见下方名片


网站公告

今日签到

点亮在社区的每一天
去签到