基于流形迁移学习的快速动态多目标进化算法(MMTL-MOEA/D)求解FDA1-FDA5和dMOP1-dMOP3,提供完整MATLAB代码

发布于:2025-06-11 ⋅ 阅读:(20) ⋅ 点赞:(0)

一、MMTL-MOEA/D简介

基于流形迁移学习的快速动态多目标进化算法(A Fast Dynamic Evolutionary Multi-objective Algorithm via Manifold Transfer Learning,MMTL-MOEA/D)是2021年提出的一种高效动态代表进化算法。MMTL-DMOE/A 将记忆机制与流形迁移学习相结合,在动态优化环境下预测适应未来时刻的初始种群,从而在保持求解精度的同时,极大提升求解速度。其核心思想是:当环境发生变化时,从记忆存储的过去最优个体中提取知识,并利用流形迁移学习的方法,将这些知识迁移到新的环境中,预测出可能的最优个体作为初始种群,帮助算法更快地收敛到新的 Pareto 最优前沿。
在这里插入图片描述

(1)算法流程

  1. 初始化 :在初始时刻,随机生成一个种群作为初始种群,并将其经过进化后得到的最优个体存储到外部存储器中。
  2. 环境变化检测 :在每个进化代数,通过一定的方法检测环境是否发生变化。例如,可以比较当前种群与历史种群的目标函数值的差异,或者监测决策变量的变化等。
  3. 个体选择与预测 :当检测到环境变化时,从外部存储器中根据预定义的标准选择一定数量的个体。然后,通过主成分分析(PCA)和流形迁移学习算法对这些个体进行预测,得到适应新环境的可能最优个体。
  4. 初始种群生成 :将预测得到的个体和从外部存储器中选出的精英个体合并,构成适应新环境的初始种群。
  5. 进化搜索 :以生成的初始种群作为起点,进行常规的多目标进化操作,如选择、交叉、变异等,继续进化搜索过程,更新种群。
  6. 更新外部存储器 :在进化过程中,将每次得到的最优个体更新到外部存储器中,以便在后续环境变化时使用。
  7. 终止条件判断 :若满足终止条件,如达到最大进化代数或满足一定的收敛精度,则输出最终的 Pareto 前沿和 Pareto 解集,否则返回步骤 2。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)算法的关键技术创新

  • 记忆机制与流形迁移学习的融合 :将记忆机制保存过去的最优个体与流形迁移学习相结合,能够充分利用历史信息,快速预测出适应新环境的初始种群,显著提高了算法的收敛速度和解的质量,降低了计算成本。
  • 低维空间中的数据压缩与分析 :使用特殊的流形迁移学习技术在低维空间中压缩高维数据,减少了数据的维度和复杂性,同时保留了数据的主要特征和结构信息,使得算法能够更高效地处理高维动态多目标优化问题,并且需要的超参数较少。
  • 精英个体的选择与利用 :通过精英选择算法,从外部存储器中选出精英个体,并将其与预测个体合并构成初始种群,有效地平衡了探索与开发之间的关系,既保证了种群的多样性,又加快了算法的收敛速度。

(3)算法的优势

  • 高效性 :通过预测初始种群,减少了算法在环境变化后重新初始化种群所需的计算资源和时间,提高了算法的运行效率,能够在较短的时间内得到较好的解。
  • 准确性 :利用流形迁移学习和精英记忆机制,能够更准确地预测新环境下的 Pareto 最优前沿,提高了解的质量和精度。
  • 适应性 :该算法对动态环境具有较强的适应能力,能够快速跟踪不断变化的 Pareto 最优前沿,适用于各种动态多目标优化问题。

(4)参考文献

[1] Jiang M , Wang Z , Tan G K C .A Fast Dynamic Evolutionary Multiobjective Algorithm via Manifold Transfer Learning[J].IEEE transactions on cybernetics, 2021, 51(7):3417-3428.DOI:10.1109/TCYB.2020.2989465.

二、MMTL-MOEA/D求解FDA1-FDA5和dMOP1-dMOP3介绍

在这里插入图片描述

(1)部分MATLAB代码

figure
for T=1:size(resStruct,2)
    if size(Result(T).truePOF,2)<3
        plot(Result(T).truePOF(:,1),Result(T).truePOF(:,2),'.')
        xlabel('f1')
        ylabel('f2')
    else
        plot3(Result(T).truePOF(:,1),Result(T).truePOF(:,2),Result(T).truePOF(:,3),'.')
        xlabel('f1')
        ylabel('f2')
        zlabel('f3')
    end
    hold on
end
title([functions 'truePOF'])
figure
for T=1:size(resStruct,2)
    if size(Result(T).ObtianPOF,2)<3
        plot(Result(T).ObtianPOF(:,1),Result(T).ObtianPOF(:,2),'.')
        xlabel('f1')
        ylabel('f2')
    else
        plot3(Result(T).ObtianPOF(:,1),Result(T).ObtianPOF(:,2),Result(T).ObtianPOF(:,3),'.')
        xlabel('f1')
        ylabel('f2')
        zlabel('f3')
    end
    hold on
end
title([functions 'ObtianPOF'])

%% 计算评价指标
for T=1:size(resStruct,2)
    IGDdata(T)= IGD(Result(T).ObtianPOF,Result(T).truePOF);
    HVdata(T)= HV(Result(T).ObtianPOF,Result(T).truePOF);
    MSdata(T)= MS(Result(T).ObtianPOF,Result(T).truePOF);
    SPdata(T)= SP(Result(T).ObtianPOF,Result(T).truePOF);
end
figure
plot(IGDdata,'r-o')
hold on
plot(HVdata,'k-*')
hold on
plot(SPdata,'g-p')
hold on
plot(MSdata,'b-<')
legend('IGD','HV','SP','MS')
title(functions)

(2)部分结果

FDA2:

在这里插入图片描述
在这里插入图片描述

FDA3:

在这里插入图片描述
在这里插入图片描述

dMOP3:

在这里插入图片描述
在这里插入图片描述

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