动态多目标进化算法:基于知识转移和维护功能的动态多目标进化算法(KTM-DMOEA)求解CEC2018(DF1-DF14)

一、KTM-DMOEA介绍

在实际工程和现实生活中,许多优化问题具有动态性和多目标性,即目标函数会随着环境的变化而改变,并且存在多个相互冲突的目标。传统的多目标进化算法在处理这类动态问题时面临着一些挑战,如收敛速度慢、难以跟踪动态变化的 Pareto 前沿等。因此,需要开发新的算法来有效地解决 DMOPs。

基于知识转移和维护功能的动态多目标进化算法(Dynamic Multiobjective Evolutionary Optimization via Knowledge Transfer and Maintenance,KTM - DMOEA)是2024年提出的动态多目标进化算法(DMOEA),通过结合 KTP 和 KMS 策略,KTM - DMOEA 能够在新环境中生成高质量的初始种群,从而缓解负迁移问题,提高算法的整体性能。。

算法核心策略

  • 知识转移预测(KTP):这是一种判别式预测器,旨在减少不同环境之间的特征和分布差异。它能够从新环境中大量随机生成的解中分类出高质量的解,通过挖掘历史环境中的有用知识,为新环境提供有价值的信息,帮助算法更快地找到最优解。
  • 知识维护采样(KMS):这是一种生成式预测器,通过对最后一个环境中精英解的分布进行建模,根据动态变化趋势在新环境中采样出优质解。它可以有效地利用历史最优解的信息,生成更有可能接近最优解的新个体,从而提高算法的收敛速度和求解质量。

参考文献:Q. Lin, Y. Ye, L. Ma, M. Jiang and K. C. Tan, "Dynamic Multiobjective Evolutionary Optimization via Knowledge Transfer and Maintenance," in IEEE Transactions on Systems, Man, and Cybernetics: Systems, vol. 54, no. 2, pp. 936-949, Feb. 2024, doi: 10.1109/TSMC.2023.3322718.

二、动态多目标优化测试集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],'KTM-DMOEA','turePOF')
    title(['KTM-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],'KTM-DMOEA','turePOF')
    title(['KTM-DMOEA求解' functions{testFuncNo}])
end

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

相关推荐
汉克老师17 分钟前
第十四届蓝桥杯青少组C++选拔赛[2023.2.12]第二部分编程题(4、最大空白区)
c++·算法·蓝桥杯·蓝桥杯c++·c++蓝桥杯
共享家952723 分钟前
优先搜索(DFS)实战
算法·leetcode·深度优先
一只懒洋洋42 分钟前
中值滤波、方框滤波、高斯滤波、均值滤波、膨胀、腐蚀、开运算、闭运算
算法·均值算法
shellvon1 小时前
你怎么被识别的?从TLS到Canvas的设备追踪术
后端·算法
薛定谔的算法1 小时前
JavaScript栈的实现与应用:从基础到实战
前端·javascript·算法
羚羊角uou1 小时前
【Linux】匿名管道和进程池
linux·c++·算法
空白到白2 小时前
决策树-面试题
算法·决策树·机器学习
flashlight_hi2 小时前
LeetCode 分类刷题:2563. 统计公平数对的数目
python·算法·leetcode
前端世界2 小时前
HarmonyOS 数据处理性能优化:算法 + 异步 + 分布式实战
算法·性能优化·harmonyos
楼田莉子2 小时前
C++算法专题学习:栈相关的算法
开发语言·c++·算法·leetcode