时序预测 | MATLAB实现WOA-GRU鲸鱼算法优化门控循环单元时间序列预测

简介: 时序预测 | MATLAB实现WOA-GRU鲸鱼算法优化门控循环单元时间序列预测

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

本文使用鲸鱼优化算法(WOA)来优化GRU的初始参数,并以此建立了WOA-GRU软测量模型。最后,将该方法应用于丙烯精馏塔中塔顶丙烷浓度的预测,实验结果表明,在动态建模方面WOA-GRU具有更高的预测精度。

⛄ 部分代码

clc; clear; close all;

%Model Parameters and excitation

%--------------------------------------------------------------------------


M=[1 0; 0 1];

K=[2 -1; -1 1]*5;

C=0.1*M+0.1*K;

f=2*randn(2,10000);

fs=100;


%Apply modal superposition to get response

%--------------------------------------------------------------------------


n=size(f,1);

dt=1/fs; %sampling rate

[Vectors, Values]=eig(K,M);

Freq=sqrt(diag(Values))/(2*pi); % undamped natural frequency

steps=size(f,2);


Mn=diag(Vectors'*M*Vectors); % uncoupled mass

Cn=diag(Vectors'*C*Vectors); % uncoupled damping

Kn=diag(Vectors'*K*Vectors); % uncoupled stifness

wn=sqrt(diag(Values));

zeta=Cn./(sqrt(2.*Mn.*Kn));  % damping ratio

wd=wn.*sqrt(1-zeta.^2);


fn=Vectors'*f; % generalized input force matrix


t=[0:dt:dt*steps-dt];


for i=1:1:n

   

   h(i,:)=(1/(Mn(i)*wd(i))).*exp(-zeta(i)*wn(i)*t).*sin(wd(i)*t); %transfer function of displacement

   hd(i,:)=(1/(Mn(i)*wd(i))).*(-zeta(i).*wn(i).*exp(-zeta(i)*wn(i)*t).*sin(wd(i)*t)+wd(i).*exp(-zeta(i)*wn(i)*t).*cos(wd(i)*t)); %transfer function of velocity

   hdd(i,:)=(1/(Mn(i)*wd(i))).*((zeta(i).*wn(i))^2.*exp(-zeta(i)*wn(i)*t).*sin(wd(i)*t)-zeta(i).*wn(i).*wd(i).*exp(-zeta(i)*wn(i)*t).*cos(wd(i)*t)-wd(i).*((zeta(i).*wn(i)).*exp(-zeta(i)*wn(i)*t).*cos(wd(i)*t))-wd(i)^2.*exp(-zeta(i)*wn(i)*t).*sin(wd(i)*t)); %transfer function of acceleration

   

   qq=conv(fn(i,:),h(i,:))*dt;

   qqd=conv(fn(i,:),hd(i,:))*dt;

   qqdd=conv(fn(i,:),hdd(i,:))*dt;

   

   q(i,:)=qq(1:steps); % modal displacement

   qd(i,:)=qqd(1:steps); % modal velocity

   qdd(i,:)=qqdd(1:steps); % modal acceleration

     

end


x=Vectors*q; %displacement

v=Vectors*qd; %vecloity

a=Vectors*qdd; %vecloity


%Add noise to excitation and response

%--------------------------------------------------------------------------

f2=f+0.0*randn(2,10000);

a2=a+0.0*randn(2,10000);

v2=v+0.0*randn(2,10000);

x2=x+0.0*randn(2,10000);


%Plot displacement of first floor without and with noise

%--------------------------------------------------------------------------

figure;

subplot(2,2,1)

plot(t,f(1,:)); xlabel('Time (sec)');  ylabel('Force1'); title('First Floor');

subplot(2,2,2)

plot(t,f(2,:)); xlabel('Time (sec)');  ylabel('Force2'); title('Second Floor');

subplot(2,2,3)

plot(t,x(1,:)); xlabel('Time (sec)');  ylabel('DSP1');

subplot(2,2,4)

plot(t,x(2,:)); xlabel('Time (sec)');  ylabel('DSP2');


%Identification using neural network

%--------------------------------------------------------------------------


X=f2;                                  %Input of neural network is forces

T=x2;                                  %Output of neural network is displacement


[X,~] = tonndata(X,1,0);               %Change format of input data

[T,~] = tonndata(T,1,0);               %Change format of output data


net = narxnet(0,1,2);                  %Create (nonlinear autoregressive with external input) network with 0 input delays and 1 output delays


[Xs,Xi,Ai,Ts] = preparets(net,X,{},T); %Prepares data for training

net = train(net,Xs,Ts,Xi,Ai);          %Train the network

view(net)                              %View the network

Yopen = net(Xs,Xi,Ai);                 %Predict Output


net = closeloop(net);                  %convert to closed loop neural network

view(net);                             %view closed-loop network

[Xs,Xi,Ai,Ts] = preparets(net,X,{},T); %Prepares data for training

net = train(net,Xs,Ts,Xi,Ai);          %Train the network

Yclosed = net(Xs,Xi,Ai);               %Predict Output



%Plot output with predicted output

%--------------------------------------------------------------------------

T=cell2mat(T);

Yopen=cell2mat(Yopen);

Yclosed=cell2mat(Yclosed);


figure;

subplot(2,1,1);

plot(t(1,2:end),T(1,2:end),'b-',t(1,2:end),Yopen(1,:),'r--',t(1,2:end),Yclosed(1,:),'k-.'); xlabel('Time (sec)');  ylabel('DSP1');

legend('Actual','Predicted (openloop)','Predicted (closedloop)');

subplot(2,1,2);

plot(t(2:end),T(2,2:end),'b-',t(2:end),Yopen(2,:),'r--',t(1,2:end),Yclosed(2,:),'k-.'); xlabel('Time (sec)');  ylabel('DSP2');

⛄ 运行结果

⛄ 参考文献

[1]王康, 龚文杰, 段晓燕,等. 基于PSO算法优化GRU神经网络的短期负荷预测[J]. 广东电力, 2020, 33(4):7.

[2]李祚敏, 秦江涛. 基于WOA-GRU的销售预测研究[J]. 软件导刊, 2020, 19(9):4.

[3]杨丽娜, 赵鹏, 王佩哲. 基于GRU神经网络的数据中心能耗预测模型研究[J]. 电力信息化, 2021, 019(003):10-18.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
1天前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
2天前
|
存储 算法 数据可视化
基于harris角点和RANSAC算法的图像拼接matlab仿真
本文介绍了使用MATLAB2022a进行图像拼接的流程,涉及Harris角点检测和RANSAC算法。Harris角点检测寻找图像中局部曲率变化显著的点,RANSAC则用于排除噪声和异常点,找到最佳匹配。核心程序包括自定义的Harris角点计算函数,RANSAC参数设置,以及匹配点的可视化和仿射变换矩阵计算,最终生成全景图像。
|
2天前
|
算法 Serverless
m基于遗传优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真
MATLAB 2022a仿真实现了遗传优化的归一化最小和(NMS)译码算法,应用于低密度奇偶校验(LDPC)码。结果显示了遗传优化的迭代过程和误码率对比。遗传算法通过选择、交叉和变异操作寻找最佳归一化因子,以提升NMS译码性能。核心程序包括迭代优化、目标函数计算及性能绘图。最终,展示了SNR与误码率的关系,并保存了关键数据。
11 1
|
3天前
|
算法
基于改进粒子群算法的混合储能系统容量优化matlab
基于改进粒子群算法的混合储能系统容量优化matlab
|
3天前
|
算法 调度
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】
|
3天前
|
运维 算法
基于改进遗传算法的配电网故障定位(matlab代码)
基于改进遗传算法的配电网故障定位(matlab代码)
|
3天前
|
算法 调度
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
|
3天前
|
算法
【免费】基于ADMM算法的多微网电能交互分布式运行策略(matlab代码)
【免费】基于ADMM算法的多微网电能交互分布式运行策略(matlab代码)
|
3天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于有序抖动块截断编码的水印嵌入和提取算法matlab仿真
这是一个关于数字图像水印嵌入的算法介绍。使用MATLAB2022a,该算法基于DOTC,结合抖动和量化误差隐藏,确保水印的鲁棒性和隐蔽性。图像被分为N*N块,根据水印信号进行二值化处理,通过调整重建电平的奇偶性嵌入水印。水印提取是嵌入过程的逆操作,通过重建电平恢复隐藏的水印比特。提供的代码片段展示了从块处理、水印嵌入到噪声攻击模拟及水印提取的过程,还包括PSNR和NC的计算,用于评估水印在不同噪声水平下的性能。
|
3天前
|
算法
基于蜣螂优化算法DBO的VMD-KELM光伏发电功率预测(matlab代码+可提供讲解)
基于蜣螂优化算法DBO的VMD-KELM光伏发电功率预测(matlab代码+可提供讲解)