动态多目标进化算法:TrRMMEDA求解CEC2018(DF1-DF14),提供完整MATLAB代码
一、TrRMMEDA简介
TrRMMEDA(Transfer Learning-based Regularity Model-based Multiobjective Estimation of Distribution Algorithm)是2017年提出的一种基于迁移学习的动态多目标优化算法。
算法背景
在动态多目标优化问题(DMOPs)中,目标函数、约束或参数会随时间变化,传统动态多目标进化算法(DMOEAs)面临难以快速跟踪最优解等问题。迁移学习可重用历史环境信息加速新环境搜索,但存在负迁移风险,即历史信息可能误导当前优化方向。TrRMMEDA 应运而生,旨在有效利用历史信息的同时避免负迁移。
算法原理
- 迁移学习与分布估计结合 :将迁移学习引入基于分布估计的多目标优化算法(RM-MEDA)中,形成 TrRMMEDA。先利用迁移学习从历史环境知识中提取有价值信息,将其融入新环境的分布估计模型,使模型更准确捕捉新环境的 Pareto 最优前沿分布,进而生成更优质的初始种群,加速收敛。
- 负迁移处理 :为避免负迁移,TrRMMEDA 采用信任区域等策略筛选和利用历史信息。只将与当前问题相关性高、可信度强的历史解纳入迁移学习过程,确保历史信息对当前优化有正面引导作用。
算法步骤
- 初始化 :在初始时刻,随机生成初始种群,对种群中个体进行评价,计算其目标函数值和约束违反度等。
- 建立分布估计模型 :利用初始种群中的非支配解,基于 RM-MEDA 的原理建立分布估计模型,如采用主成分分析等技术对非支配解进行降维和特征提取,构建潜在空间中的概率分布模型。
- 种群生成与进化 :根据分布估计模型,在潜在空间中采样生成新个体,并将其映射回原决策空间,形成新种群。对新种群进行进化操作,包括选择、交叉、变异等。
- 环境变化检测 :在进化过程中持续监测环境是否发生变化,可通过监测目标函数值的变化率等指标来判断。
- 迁移学习触发 :当检测到环境变化时,触发迁移学习机制,将历史环境中的优质解筛选出来,将其与当前种群中的个体相结合,重新构建分布估计模型。
- 更新与重复 :利用新的分布估计模型生成新的种群,继续迭代优化过程,直至达到终止条件。
算法优势
- 快速收敛 :借助迁移学习充分利用历史信息,使算法在环境变化后能快速适应并收敛到新的 Pareto 最优前沿,减少从随机初始种群开始的无效搜索时间。
- 保持多样性 :注重在迁移学习过程中保持种群多样性,避免因过度依赖历史信息而导致种群早熟收敛,有效探索目标空间,得到具有广泛分布的 Pareto 最优解。
- 较强的鲁棒性 :通过负迁移处理机制,对历史信息进行筛选和评估,确保迁移的知识对当前优化有积极影响,增强了算法在复杂动态环境下的鲁棒性。
算法局限性及应用场景
- 局限性 :TrRMMEDA 的性能在一定程度上依赖于历史信息的质量和相关性,若历史信息与当前问题差异较大,可能影响算法效果。且该算法在处理多模态动态多目标优化问题时,可能会面临分布估计模型复杂度增加等挑战。
- 应用场景 :适用于具有时间变化特性的多目标优化场景,如动态资源分配、动态路径规划、实时调度等领域,能够快速为决策者提供一组优质解,帮助其在动态环境中做出平衡决策。
参考文献
[1] Jiang M , Huang Z , Qiu L ,et al.Transfer Learning based Dynamic Multiobjective Optimization Algorithms[J].IEEE Transactions on Evolutionary Computation, 2017, 22(4):501-514.DOI:10.1109/TEVC.2017.2771451.
二、TrRMMEDA求解DF1-DF14
(1)CEC2018 动态多目标测试函数介绍
CEC2018 竞赛定义了 14 个动态多目标测试函数(DF1-DF14),分为两类:
- 双目标问题(DF1-DF9):这些函数具有两个目标,用于测试算法在动态环境下的性能。
- 三目标问题(DF10-DF14):这些函数具有三个目标,增加了优化的复杂性。
这些测试函数设计了不同的动态特性,以评估动态多目标优化算法的性能。动态特性包括:
- 目标位置变化:Pareto 最优前沿(PF)或 Pareto 最优解集(PS)的位置随时间变化。
- 约束条件变化:动态约束条件的引入或变化。
- 目标数量或决策变量数量变化:在某些测试函数中,目标数量或决策变量数量可能随时间变化。
测试函数 | 目标数量 | 动态特性 |
---|---|---|
DF1 | 2 | PF 的位置随时间线性移动 |
DF2 | 2 | PF 的位置随时间非线性移动 |
DF3 | 2 | PF 的位置和形状随时间变化 |
DF4 | 2 | PF 的位置和形状随时间剧烈变化 |
DF5 | 2 | PF 的凸性随时间变化 |
DF6 | 2 | PF 的凹性随时间变化,并引入局部最优解 |
DF7 | 2 | PF 的不同部分以不同方向和速度移动 |
DF8 | 2 | PF 的不同部分以不同方向和速度移动,且存在多个膝点 |
DF9 | 2 | PF 断裂成多个部分 |
DF10 | 3 | PF 的位置随时间移动 |
DF11 | 3 | PF 的位置和形状随时间变化 |
DF12 | 3 | PF 的位置和形状随时间剧烈变化 |
DF13 | 3 | PF 的凸性随时间变化 |
DF14 | 3 | PF 的凹性随时间变化,并引入局部最优解 |
参考文献:
[1] Jiang S , Yang S , Yao X ,et al.Benchmark Functions for the CEC’2018 Competition on Dynamic Multiobjective Optimization[J]. 2018.
(2)部分MATLAB代码
%% 计算POF
for i=1:size(ArchiveResult{1,1}{1,1},1)/(10*nt*taut)k1=1+(i-1)*(10*nt*taut);k2=k1+nt*taut;if prob_ids<110data=ArchiveResult{1,1}{1,1}(k1:k2,end-1:end);elsedata=ArchiveResult{1,1}{1,1}(k1:k2,end-2:end);endresult(i).data=data;% plot(data(:,1)+i,data(:,2)+i,'ro')% hold on
end
%% 计算TurePOF
prob=problem(prob_ids);
k=1;
for t=0:1:100/taut-1PF(k).data=generatePF(prob,t);PF(k).t=t;k=k+1;
end%% 画图
figure
Fm=size(PF,2);
Tm=size(PF(1).data,2);
if Tm<3for t=1:Fmplot(result(t).data(:,1)+PF(t).t,result(t).data(:,2)+PF(t).t,'ro');hold onplot(PF(t).data(:,1)+PF(t).t,PF(t).data(:,2)+PF(t).t,'g.');endxlabel('f1+t')ylabel('f2+t')
elsefor t=1:Fmplot3(result(t).data(:,1)+PF(t).t,result(t).data(:,2)+PF(t).t,result(t).data(:,3)+PF(t).t,'ro');hold onplot3(PF(t).data(:,1)+PF(t).t,PF(t).data(:,2)+PF(t).t,PF(t).data(:,3)+PF(t).t,'g.');endxlabel('f1+t')ylabel('f2+t')zlabel('f3+t')
end
title(prob.name)
(3)部分结果
环境变量: n t n_t nt =10, τ t τ_t τt =10