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

一、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代码见下方名片

相关推荐
~|Bernard|1 小时前
在 PyCharm 里怎么“点鼠标”完成指令同样的运行操作
算法·conda
战术摸鱼大师1 小时前
电机控制(四)-级联PID控制器与参数整定(MATLAB&Simulink)
算法·matlab·运动控制·电机控制
Christo31 小时前
TFS-2018《On the convergence of the sparse possibilistic c-means algorithm》
人工智能·算法·机器学习·数据挖掘
好家伙VCC2 小时前
数学建模模型 全网最全 数学建模常见算法汇总 含代码分析讲解
大数据·嵌入式硬件·算法·数学建模
茯苓gao2 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾3 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
DKPT3 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
aaaweiaaaaaa3 小时前
HTML和CSS学习
前端·css·学习·html
liulilittle4 小时前
IP校验和算法:从网络协议到SIMD深度优化
网络·c++·网络协议·tcp/ip·算法·ip·通信
看海天一色听风起雨落4 小时前
Python学习之装饰器
开发语言·python·学习