基于流形迁移学习的快速动态多目标进化算法(MMTL-MOEA/D)求解FDA1-FDA5和dMOP1-dMOP3,提供完整MATLAB代码
一、MMTL-MOEA/D简介
基于流形迁移学习的快速动态多目标进化算法(A Fast Dynamic Evolutionary Multi-objective Algorithm via Manifold Transfer Learning,MMTL-MOEA/D)是2021年提出的一种高效动态代表进化算法。MMTL-DMOE/A 将记忆机制与流形迁移学习相结合,在动态优化环境下预测适应未来时刻的初始种群,从而在保持求解精度的同时,极大提升求解速度。其核心思想是:当环境发生变化时,从记忆存储的过去最优个体中提取知识,并利用流形迁移学习的方法,将这些知识迁移到新的环境中,预测出可能的最优个体作为初始种群,帮助算法更快地收敛到新的 Pareto 最优前沿。
(1)算法流程
- 初始化 :在初始时刻,随机生成一个种群作为初始种群,并将其经过进化后得到的最优个体存储到外部存储器中。
- 环境变化检测 :在每个进化代数,通过一定的方法检测环境是否发生变化。例如,可以比较当前种群与历史种群的目标函数值的差异,或者监测决策变量的变化等。
- 个体选择与预测 :当检测到环境变化时,从外部存储器中根据预定义的标准选择一定数量的个体。然后,通过主成分分析(PCA)和流形迁移学习算法对这些个体进行预测,得到适应新环境的可能最优个体。
- 初始种群生成 :将预测得到的个体和从外部存储器中选出的精英个体合并,构成适应新环境的初始种群。
- 进化搜索 :以生成的初始种群作为起点,进行常规的多目标进化操作,如选择、交叉、变异等,继续进化搜索过程,更新种群。
- 更新外部存储器 :在进化过程中,将每次得到的最优个体更新到外部存储器中,以便在后续环境变化时使用。
- 终止条件判断 :若满足终止条件,如达到最大进化代数或满足一定的收敛精度,则输出最终的 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)<3plot(Result(T).truePOF(:,1),Result(T).truePOF(:,2),'.')xlabel('f1')ylabel('f2')elseplot3(Result(T).truePOF(:,1),Result(T).truePOF(:,2),Result(T).truePOF(:,3),'.')xlabel('f1')ylabel('f2')zlabel('f3')endhold on
end
title([functions 'truePOF'])
figure
for T=1:size(resStruct,2)if size(Result(T).ObtianPOF,2)<3plot(Result(T).ObtianPOF(:,1),Result(T).ObtianPOF(:,2),'.')xlabel('f1')ylabel('f2')elseplot3(Result(T).ObtianPOF(:,1),Result(T).ObtianPOF(:,2),Result(T).ObtianPOF(:,3),'.')xlabel('f1')ylabel('f2')zlabel('f3')endhold 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: