【免费】融合正余弦和柯西变异的麻雀优化算法SCSSA-CNN-BiLSTM双向长短期记忆网络预测模型

主要内容

该程序实现多输入单输出预测,通过融合正余弦和柯西变异改进麻雀搜索算法,对CNN-BiLSTM的学习率、正则化参数以及BiLSTM隐含层神经元个数等进行优化,并对比了该改进算法和粒子群、灰狼算法在优化方面的优势。该程序数据选用的是一段风速数据,数据较为简单,方便同学进行替换学习。程序对比了优化前和优化后的效果,注释清晰,方便学习,建议采用高版本matlab运行。

部分代码

复制代码
%% 导入数据
data =  xlsread('data.xls','B:B');
[h1,l1]=data_process(data,8);   %步长为8,采用前8天的价格与预测第9天
data = [h1,l1];
[m,n]=size(data);
input = data(:,1:n);
output = data(:,n);
​
numTimeStepsTrain = floor(0.7*numel(data(:,1)));  %取70%的数据作为训练集
​
XTrain = input(1:numTimeStepsTrain,:);
YTrain = output(1:numTimeStepsTrain,:);
​
XTest = input(numTimeStepsTrain+1:end,:);
YTest = output(numTimeStepsTrain+1:end,:);
​
x = XTrain;
y = YTrain;
​
[xnorm,xopt] = mapminmax(x',0,1);
[ynorm,yopt] = mapminmax(y',0,1);
​
​
% 转换成2-D image
for i = 1:length(ynorm)
    Train_xNorm{i} = reshape(xnorm(:,i),n,1,1);
    Train_yNorm(:,i) = ynorm(:,i);
    Train_y(i,:) = y(i,:);
end
Train_yNorm= Train_yNorm';
​
​
xtest = XTest;
ytest = YTest;
[xtestnorm] = mapminmax('apply', xtest',xopt);
[ytestnorm] = mapminmax('apply',ytest',yopt);
xtest = xtest';
for i = 1:length(ytestnorm)
  Test_xNorm{i} = reshape(xtestnorm(:,i),n,1,1);
  Test_yNorm(:,i) = ytestnorm(:,i);
  Test_y(i,:) = ytest(i,:);
end
Test_yNorm = Test_yNorm';
​
​
%% 优化算法优化前,构建优化前的CNN-BILSTM模型
inputSize = n;
outputSize = 1;  %数据输出y的维度  
​
layers0 = [ ...
    
    sequenceInputLayer([inputSize,1,1],'name','input')   %输入层设置
    sequenceFoldingLayer('name','fold')         %使用序列折叠层对图像序列的时间步长进行独立的卷积运算。
    
    convolution2dLayer([2,1],10,'Stride',[1,1],'name','conv1')  %添加卷积层,2,1表示过滤器大小,10过滤器个数,Stride是垂直和水平过滤的步长
    batchNormalizationLayer('name','batchnorm1')  % BN层,用于加速训练过程,防止梯度消失或梯度爆炸
    reluLayer('name','relu1')       % ReLU激活层,用于保持输出的非线性性及修正梯度的问题
    
    convolution2dLayer([1,1],10,'Stride',[1,1],'name','conv2')       %添加卷积层,2,1表示过滤器大小,10过滤器个数,Stride是垂直和水平过滤的步长
    batchNormalizationLayer('name','batchnorm2')        % BN层,用于加速训练过程,防止梯度消失或梯度爆炸
    reluLayer('name','relu2')           % ReLU激活层,用于保持输出的非线性性及修正梯度的问题
​

部分结果一览

下载链接

相关推荐
机器学习之心4 小时前
基于BiGRU-Attention的轴承剩余寿命预测(MATLAB实现):从振动信号到RUL曲线的完整闭环
数据结构·算法·matlab·轴承剩余寿命预测·振动信号·bigru-attention
Evand J16 小时前
【MATLAB代码,车联网8】MPC网联车辆节能跟驰控制:速度跟踪、间距约束与能耗优化。MATLAB完整代码订阅专栏后可直接查看
matlab·代码·车联网·mpc·车辆·网联·网联技术
我找到地球的支点啦2 天前
Matlab系列(009) 一CRC循环冗余校验详解
开发语言·数据结构·算法·matlab·信息与通信
吃好睡好便好5 天前
查找函数的使用
学习·算法·matlab·生活·查找函数
chhttty5 天前
Design Verifier检查:整型数溢出检查与修复
matlab·simulink
吃好睡好便好5 天前
判断函数的使用
学习·算法·matlab·生活·判断函数
hu9245195595 天前
Matlab保护源代码—P文件和exe文件详细解析
开发语言·matlab
史上最甜的躯5 天前
控制系统——基础、导论;以直流电机控制系统为例详解微分方程模型、拉普拉斯变换、传递函数模型的理论、推导及仿真
matlab·simulink·传递函数·控制系统·拉普拉斯·电机模型
lingchen19066 天前
用MATLAB r2010b和r2016b求解微分方程组
开发语言·算法·matlab
可编程芯片开发6 天前
基于李雅普诺夫算法的四旋翼无人机姿态跟踪控制系统simulink建模与仿真
matlab·无人机·制造·四旋翼无人机·李雅普诺夫·姿态跟踪控制