小言_互联网的博客

【DELM回归预测】基于matlab多元宇宙优化算法改进深度学习极限学习机数据回归预测【含Matlab源码 2230期】

251人阅读  评论(0)

⛄一、多元宇宙优化算法

MVO是Seyedali Mirjalili受到多元宇宙理论的启发提出来的元启发式优化算法。主要根据多元宇宙理论的3个主要概念-白洞、黑洞和虫洞,来建立数学模型。

MVO算法中的可行解对应宇宙,解的适应度对应该宇宙的膨胀率,在每一次迭代中,根据膨胀率对宇宙进行排序,通过轮盘赌随机选定一个宇宙作为白洞,宇宙间通过黑、白洞进行物质交换。假定:

式中:d为参数的个数;n为宇宙的个数;xji为第i个宇宙的第j维分量。

式中:Ui为第i个宇宙;NI(Ui)为第i个宇宙的归一化膨胀率;r1为[0,1]中的随机数;xkj为轮盘赌选定的第k个宇宙的第j维分量。

宇宙之间通过虫洞随机传送物质以保证种群多样性,同时都与最优宇宙交换物质以提高膨胀率。

式中:xij为第i个宇宙的第j维分量;Xj为当前最优宇宙的第j维分量;tbj和ubj分别为第j维分量的上、下界;r2,r3,r4均为[0,1]中的随机数;WEP为宇宙中的虫洞存在率;TDR为物质绕当前最优宇宙的旅行距离率。

WEP和TDR均为MVO的重要参数。

式中:WEPmax和WEPmin分别为参数WEP的上、下界,取0.2和1;l和L分别为当前迭代次数和最大迭代次数;p为算法的开发精度,取6。

MVO算法的优化进程始于种群的随机初始化,通过多个宇宙的并行迭代搜索,最终得到问题的近似最优解。

MVO算法运行流程如下:

(1)定义各参数,包括宇宙维度d,n,WEP,L,tbj和ubj等;

(2)初始化多元宇宙种群U;

(3)根据式(19)执行轮盘赌机制;

(4)计算各宇宙的膨胀率,确定当前最优宇宙;

(5)根据式(20),(22)更新WEP和TDR;

(6)根据式(23)更新最优宇宙,优于当前最优宇宙时将其替换,反之则保留当前最优宇宙;

(7)判断是否最大迭代次数,是,终止循环,输出最优宇宙和目标函数值;反之,则迭代次数加1,跳转至(3)继续循环。

MVO算法流程如图1所示。

图1 MVO算法流程图

⛄二、部分源代码

%% 基于多元宇宙算法优化的深度极限学习机DLM的预测算法
clear;clc;close all;
%% 导入数据
load data
%训练集——400个样本
P_train=input(:,(1:400));
T_train=output((1:400));
% 测试集——200个样本
P_test=input(:,(400:600));
T_test=output((400:600));
%% 归一化
% 训练集
[Pn_train,inputps] = mapminmax(P_train,0,1);
Pn_test = mapminmax(‘apply’,P_test,inputps);
% 测试集
[Tn_train,outputps] = mapminmax(T_train,0,1);
Tn_test = mapminmax(‘apply’,T_test,outputps);

%所有的数据输入类型应该为 N*dim,其中N为数据组数,dim为数据的维度
Pn_train = Pn_train’;
Pn_test = Pn_test’;
Tn_train = Tn_train’;
Tn_test = Tn_test’;

popsize = 20;%种群数量
Max_iteration = 50;%最大迭代次数
lb = -1;%权值下边界
ub = 1;%权值上边界
gamma=1; % Light Absorption Coefficient
beta0=2; % Attraction Coefficient Base Value
alpha=0.2; % Mutation Coefficient
alpha_damp=0.98; % Mutation Coefficient Damping Ratio

fobj = @(X)fun(X,Pn_train,Tn_train,Pn_test,Tn_test,ELMAEhiddenLayer,ActivF,C);
[Best_score,Best_pos,MVO_cg_curve]=MVO(popsize,Max_iteration,lb,ub,dim,fobj);
figure
plot(MVO_cg_curve,‘linewidth’,1.5)
xlabel(‘迭代次数’)
ylabel(‘适应度值’)
grid on
title(‘多元宇宙算法收敛曲线’)
%% 利用多元宇宙获得的初始权重,进行训练
BestWeitht = Best_pos;
%DELM训练
OutWeight = DELMTrainWithInitial(BestWeitht,Pn_train,Tn_train,ELMAEhiddenLayer,ActivF,C);
%训练集测试结果
predictValueTrainMVO = DELMPredict(Pn_train,OutWeight,ELMAEhiddenLayer);
% 反归一化
predictValueTrainMVO = mapminmax(‘reverse’,predictValueTrainMVO,outputps);
% 均方误差
Error1MVO = (predictValueTrainMVO’ - T_train);
MSE1MVO = mse(Error1MVO);
%测试集测试结果
predictValueTestMVO = DELMPredict(Pn_test,OutWeight,ELMAEhiddenLayer);
% 反归一化
predictValueTestMVO = mapminmax(‘reverse’,predictValueTestMVO,outputps);
% 均方误差
Error2MVO = (predictValueTestMVO’ - T_test);
MSE2MVO = mse(Error2MVO);

%% 测试集测试结果
predictValueTest = DELMPredict(Pn_test,OutWeight,ELMAEhiddenLayer);
% 反归一化
predictValueTest = mapminmax(‘reverse’,predictValueTest,outputps);
% 均方误差
Error2 = (predictValueTest’ - T_test);
MSE2 = mse(Error2);

%% 训练集结果画图
figure
plot(T_train,‘r*-’,‘linewidth’,1.5);
hold on
plot(predictValueTrainMVO,‘b:o’,‘linewidth’,1.5);
plot(predictValueTrain,‘g:o’,‘linewidth’,1.5);
grid on;
title(‘训练集结果’)
legend(‘真实值’,‘MVO-DELM预测值’,‘DELM预测值’);
figure
hold on
plot(Error1,‘b-’,‘linewidth’,1.5);
plot(Error1MVO,‘r-’,‘linewidth’,1.5);
legend(‘DELM误差’,‘MVO-DELM误差’)
grid on;
title(‘训练集误差’)

%% 测试集结果画图
figure
plot(T_test,‘r*-’,‘linewidth’,1.5);
hold on
plot(predictValueTestMVO,‘b:o’,‘linewidth’,1.5);
plot(predictValueTest,‘g:o’,‘linewidth’,1.5);
grid on;
title(‘测试集结果’)
legend(‘真实值’,‘MVO-DELM预测值’,‘DELM预测值’);
figure
plot(Error2MVO,‘r-’,‘linewidth’,1.5);
hold on
plot(Error2,‘b-’,‘linewidth’,1.5);
legend(‘MVO-DELM误差’,‘DELM误差’)
title(‘测试集误差’)
grid on;

disp([‘DELM训练集MSE:’,num2str(MSE1)]);
disp([‘DELM测试集MSE:’,num2str(MSE2)]);
disp([‘MVO_DELM训练集MSE:’,num2str(MSE1MVO)]);
disp([‘MVO_DELM测试集MSE:’,num2str(MSE2MVO)]);

⛄三、运行结果




⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]桑茂景,谢丽蓉,李进卫,王斌,杨欢.基于LMD-IMVO-LSSVM的短期风速预测[J].可再生能源. 2021,39(09)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除


转载:https://blog.csdn.net/TIQCmatlab/article/details/127952456
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场