【风电功率预测】灰狼算法优化极限学习机GWO-ELM风电功率回归预测【含Matlab源码 3287期】

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、灰狼算法优化极限学习机

1 算法理论
采用灰狼优化算法的最小二乘支持向量机模型预测时,为避免过拟合现象和检验该模型的有效性,将实证部分主要分为:①基于灰狼优化算法的最小二乘支持向量机预测(出现过拟合现象);②经过交叉验证的灰狼优化算法的最小二乘支持向量机预测(避免过拟合现象);③自回归积分滑动平均模型(ARIMA)预测。实证分析表明,基于灰狼优化算法的LSSVM模型预测效果优于ARIMA模型,可用于红枣产量的预测,同时也表明了灰狼优化算法对最小二乘支持向量机参数优化的合理性与有效性。

1.1 灰狼优化算法
灰狼优化(Grey Wolf Optimizer,GWO)算法是Mirjalili等在2014年提出的一种能够寻找全局最优解的新型群智能优化算法,其通过模拟灰狼群体的觅食行为实现目标优化,具有加速模型收敛速度和提高精度等特点。

该算法利用金字塔式的等级管理制度,将灰狼群体划分为4种等级:α(第1层最优灰狼)、β(第2层次优灰狼)、δ(第3层第三优灰狼)和ω(第4层剩余灰狼),并根据适应度值的大小,将狼进行排序,其中选择适应度的前3个值作为α、β和δ等级的灰狼。在狼群中,α狼做出的决策其他狼必须听从和执行,β狼协助α狼做出正确的决策,并听令于α狼,δ狼听从α和β狼,是ω狼的上级,等级最低的ω狼服从于前3等级的狼,有着平衡狼群内部关系的作用,ω狼追随前3者进行追踪和围捕,猎物的位置便是目标函数的最优解。

灰狼优化算法步骤可用数学模型表示为:
步骤1:灰狼与猎物之间的距离D

D=|GXp(t)-X(t)| (1)
式中,XP(t)表示第t代猎物的位置;X(t)为第t代灰狼的位置;G=2r1表示向量系数,r1为闭区间0到1内的随机数。

步骤2:随着灰狼向猎物的移动,利用式(2)对灰狼空间位置不断更新:
X(t+1)=Xp(t)-BD (2)
B=2ar2-a (3)

公式(2)中,X(t+1)表示第(t+1)代灰狼更新后的位置;B为收敛向量;公式(3),中r2为a的随机向量;a的分量初始值为2,其随着迭代次数的增加随之递减直至为0。

步骤3:在狼群觅食过程中,当α狼判断出猎物所处位置时,将由其带领β和δ对猎物进行追捕。因α、β和δ狼最靠近猎物,则可利用其位置判断猎物的位置。利用公式(4)和(5)求出其他灰狼与α、β和δ狼之间的距离,然后根据公式(6)判断出灰狼向猎物的移动方向即确定寻优方向。

Dk=|CiXk(t)-X(t)| (4)
Xi=Xk-μiDk (5)
Xp(t+1)=(X1+X2+X3)/3 (6)
式中,k=α,β,δ;i=1,2,3;Xp(t+1)表示第t+1代猎物的位置向量。

2 极限学习机原理
极限学习机(ELM)是一种单隐层前馈神经网络(SLFN)的机器学习算法。其原理是通过随机初始化输入层到隐层之间的权重和偏置,然后直接求解输出层到隐层之间的权重,从而实现快速的训练和预测。ELM的优点在于其训练速度快、泛化性能好、易于实现等特点。同时,ELM还可以通过增加权值范数的约束项来提高其稳定性和泛化能力。

3 极限学习机步骤
极限学习机(ELM)是一种单隐层前馈神经网络(SLFN)的机器学习算法。其步骤如下:
(1)随机初始化输入层到隐层之间的权重矩阵和隐层到输出层之间的权重矩阵。
(2)将输入数据输入到网络中,计算隐层的输出。
(3)利用隐层的输出和对应的目标输出,求解输出层到隐层之间的权重矩阵。
(4)利用求解得到的权重矩阵,对新的输入数据进行预测。

4 灰狼算法优化极限学习机
灰狼算法优化极限学习机是一种基于自然界灰狼群体行为模式的优化算法,它可以用于优化极限学习机(ELM)进行回归预测。ELM是一种快速的单层前向神经网络,它的训练速度快、泛化能力强,被广泛应用于回归和分类问题。灰狼算法可以通过模拟灰狼群体中的领导者、追随者和无主的行为特点,寻找最优解,从而优化ELM的参数,提高其预测精度。

⛄二、部分源代码

%% 初始化
clear
close all
clc
format shortg
warning off
addpath(‘func_defined’)

%% 读取读取
data=xlsread(‘数据.xlsx’,‘Sheet1’,‘A1:N252’); %%使用xlsread函数读取EXCEL中对应范围的数据即可

%输入输出数据
input=data(:,1:end-1); %data的第一列-倒数第二列为特征指标
output=data(:,end); %data的最后面一列为输出的指标值

N=length(output); %全部样本数目
testNum=15; %设定测试样本数目
trainNum=N-testNum; %计算训练样本数目

%% 划分训练集、测试集
input_train = input(1:trainNum,:)‘;
output_train =output(1:trainNum)’;
input_test =input(trainNum+1:trainNum+testNum,:)‘;
output_test =output(trainNum+1:trainNum+testNum)’;

%% 数据归一化
[inputn,inputps]=mapminmax(input_train,-1,1);
[outputn,outputps]=mapminmax(output_train);
inputn_test=mapminmax(‘apply’,input_test,inputps);

%% 获取输入层节点、输出层节点个数
inputnum=size(input,2);
outputnum=size(output,2);
disp(‘/’)
disp(‘极限学习机ELM结构…’)
disp([‘输入层的节点数为:’,num2str(inputnum)])
disp([‘输出层的节点数为:’,num2str(outputnum)])
disp(’ ')
disp(‘隐含层节点的确定过程…’)

%确定隐含层节点个数
%注意:BP神经网络确定隐含层节点的方法是:采用经验公式hiddennum=sqrt(m+n)+a,m为输入层节点个数,n为输出层节点个数,a一般取为1-10之间的整数
%在极限学习机中,该经验公式往往会失效,设置较大的范围进行隐含层节点数目的确定即可。

MSE=1e+5; %初始化最小误差
for hiddennum=10:20

%用训练数据训练极限学习机模型

[IW0,B0,LW0,TF,TYPE] = elmtrain(inputn,outputn,hiddennum);

%对训练集仿真
an0=elmpredict(inputn,IW0,B0,LW0,TF,TYPE);  %仿真结果
mse0=mse(outputn,an0);  %仿真的均方误差
disp(['隐含层节点数为',num2str(hiddennum),'时,训练集的均方误差为:',num2str(mse0)])

%更新最佳的隐含层节点
if mse0<MSE
    MSE=mse0;
    hiddennum_best=hiddennum;
end

end
disp([‘最佳的隐含层节点数为:’,num2str(hiddennum_best),‘,相应的均方误差为:’,num2str(MSE)])

%% 训练最佳隐含层节点的极限学习机模型
disp(’ ')
disp(‘ELM极限学习机:’)
[IW0,B0,LW0,TF,TYPE] = elmtrain(inputn,outputn,hiddennum_best);

%% 模型测试
an0=elmpredict(inputn_test,IW0,B0,LW0,TF,TYPE); %用训练好的模型进行仿真
test_simu0=mapminmax(‘reverse’,an0,outputps); % 预测结果反归一化
%误差指标
[mae0,mse0,rmse0,mape0,error0,errorPercent0]=calc_error(output_test,test_simu0);

%% 灰狼算法寻最优权值阈值
disp(’ ')
disp(‘GWO优化ELM极限学习机:’)
%初始化GWO参数
N=20; %初始种群规模
M=30; %最大进化代数
dim=inputnumhiddennum_best+hiddennum_best; %自变量个数
%自变量下限
lb=[-ones(1,inputnum
hiddennum_best) … %输入层到隐含层的连接权值范围是[-1 1] 下限为-1
zeros(1,hiddennum_best)]; %隐含层阈值范围是[0 1] 下限为0
%自变量上限
ub=ones(1,dim);
fobj =@(x) fitness(x,hiddennum_best, inputn, outputn, output_train, inputn_test ,outputps, output_test);
[bestX,Best_score,Convergence_curve]=GWO(N,M, lb, ub,dim,fobj);
%% 绘制进化曲线
figure
plot(Convergence_curve,‘r-’,‘linewidth’,2)
xlabel(‘进化代数’)
ylabel(‘均方误差’)
legend(‘最佳适应度’)
title(‘GWO的进化曲线’)

%% 优化后的参数训练ELM极限学习机模型
[IW1,B1,LW1,TF,TYPE] = elmtrain(inputn,outputn,hiddennum_best,bestX ); %IW1 B1 LW1为优化后的ELM求得的训练参数
hiddennum_best
%% 优化后的ELM模型测试
an1=elmpredict(inputn_test,IW1,B1,LW1,TF,TYPE);
test_simu1=mapminmax(‘reverse’,an1,outputps);

%误差指标
[mae1,mse1,rmse1,mape1,error1,errorPercent1]=calc_error(output_test,test_simu1);

%% 作图
figure
plot(output_test,‘b-.o’,‘linewidth’,2)
hold on
plot(test_simu0,‘g-s’,‘linewidth’,2)
hold on
plot(test_simu1,‘r-p’,‘linewidth’,2)
legend(‘真实值’,‘ELM预测值’,‘GWO-ELM预测值’)
xlabel(‘测试样本编号’)
ylabel(‘指标值’)
title(‘优化前后的ELM模型预测值和真实值对比图’)

figure
plot(error0,‘b-s’,‘markerfacecolor’,‘g’)
hold on
plot(error1,‘r-p’,‘markerfacecolor’,‘g’)
legend(‘ELM预测误差’,‘GWO-ELM预测误差’)
xlabel(‘测试样本编号’)
ylabel(‘预测偏差’)
title(‘优化前后的ELM模型预测值和真实值误差对比图’)

⛄三、运行结果

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

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]仝卫国,郭超宇,赵如意.基于改进麻雀算法优化LSSVM的再循环箱浆液密度预测模型[J].电子测量技术. 2022,45(01)

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

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值