动态多目标进化算法:MOEA/D-SVR求解CEC2018(DF1-DF14),提供完整MATLAB代码
一、MOEA/D-SVR介绍
基于支持向量回归预测器的MOEA/D(MOEA based on decomposition (MOEA/D) Assisted by a Support Vector Regression Predictor,MOEA/D-SVR)的基本思路是通过支持向量回归(SVR)模型对历史种群进行学习,预测生成新环境下的种群,将其与几种先进动态多目标优化算法进行对比,实验结果表明该算法具有很强的竞争力,但在求解某些特定类型动态多目标优化问题(DMOPs)时存在效果不佳的情况。
MOEA/D-SVR是一种基于支持向量回归(SVR)的动态多目标进化优化算法,主要用于解决动态多目标优化问题(DMOPs)。在动态环境中,目标函数会随时间变化,因此需要快速准确地找到不同时刻的帕累托最优集(POS)。该算法利用过去获得的POS训练SVR模型,然后使用训练好的SVR对动态优化问题下一时刻的解进行预测,从而生成由不同个体组成的初始种群,再将其输入到基于种群的优化算法MOEA/D中,以获得该时刻的POS。
基本原理
-
支持向量回归(SVR):SVR是一种基于统计学习理论的回归技术,通过寻找一个能够以最小误差预测目标值的超平面。在动态多目标优化中,SVR用于学习历史解与目标值之间的映射关系,从而对新环境下的解进行预测。
-
动态多目标优化问题(DMOPs):这类问题的目标函数会随时间变化,导致帕累托最优集(POS)也会发生变化。因此,需要算法能够快速适应环境变化,准确找到新的POS。
算法步骤
- 初始化:随机初始化一个种群,并在初始环境进行优化。
- 环境变化检测:检测环境是否发生变化,通常通过监测目标函数值的变化或其他环境变化指标来实现。
- SVR模型训练:当检测到环境变化时,使用过去获得的POS训练一个SVR模型。训练数据包括历史解及其对应的目标函数值。
- 初始种群预测:利用训练好的SVR模型对新环境下的解进行预测,生成初始种群。通过SVR预测目标值,选择高质量的个体作为初始种群,以加速进化过程。
- 优化:将预测得到的初始种群输入到基于种群的优化算法MOEA/D中,进行进一步的优化,得到当前环境下的POS。
- 更新:更新种群和SVR模型,准备应对下一次环境变化。
关键点
- 历史信息利用:通过利用过去获得的POS训练SVR模型,算法能够更好地预测新环境下的解,从而提高优化效率。
- SVR模型的选择和训练:选择合适的SVR模型参数和训练数据对预测性能至关重要。需要根据具体问题的特点进行调整和优化。
- 初始种群质量:预测得到的初始种群质量直接影响后续优化的效果。通过SVR的预测能力,可以生成更接近真实POS的初始种群,加快收敛速度。
- 适应动态环境:算法需要能够快速检测环境变化并做出响应,以保证在动态环境中保持良好的优化性能。
性能评估
- 实验结果:该算法在多个动态多目标优化测试问题上进行了实验评估,与几种先进的动态多目标优化算法进行对比。结果表明,在大多数测试问题上,该算法能够有效地跟踪POS的变化,具有较好的收敛性和多样性。
- 优势与不足:其优势在于能够充分利用历史信息,通过SVR模型的预测能力快速生成高质量的初始种群,从而在动态环境中保持较好的优化性能。然而,该算法在某些特定类型的DMOPs上可能效果不佳,例如当环境变化剧烈或目标函数之间的关系复杂时,SVR模型的预测精度可能会受到影响。
参考文献
[1] Cao L , Xu L , Goodman E D ,et al.Evolutionary Dynamic Multiobjective Optimization Assisted by a Support Vector Regression Predictor[J].IEEE Transactions on Evolutionary Computation, 2019, PP(99):1-1.DOI:10.1109/TEVC.2019.2925722.
二、MOEA/D-SVR求解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