黏菌优化算法优化CNN-BiLSTM的时序预测

    今天给大家分享黏菌优化算法优化CNN-BiLSTM的时序预测,主要从算法原理和代码实战展开。需要了解更多算法代码的,可以点击文章左下角的阅读全文,进行获取哦~需要了解智能算法、机器学习、深度学习和信号处理相关理论的可以后台私信哦,下一期分享的内容就是你想了解的内容~


代码实战

%% SMA-CNN-LSTM负荷预测% 数据集(列为特征,行为样本数目clcclearload('Train.mat')%Train(1,:) =[];y = Train.demand;x = Train{:,3:end};[xnorm,xopt] = mapminmax(x',0,1);[ynorm,yopt] = mapminmax(y',0,1);x = x';k = 24;           % 滞后长度% 转换成2-D imagefor i = 1:length(ynorm)-k    Train_xNorm{i} = reshape(xnorm(:,i:i+k-1),6,1,1,k);    Train_yNorm(i) = ynorm(i+k-1);    Test_x(i) = y(i+k-1);endTrain_yNorm= Train_yNorm';% % load('Test.mat')Test(1,:) =[];ytest = Test.demand;xtest = Test{:,3:end};[xtestnorm] = mapminmax('apply', xtest',xopt);[ytestnorm] = mapminmax('apply',ytest',yopt);xtest = xtest';for i = 1:length(ytestnorm)-k    Test_xNorm{i} = reshape(xtestnorm(:,i:i+k-1),6,1,1,k);    Test_yNorm(i) = ytestnorm(i+k-1);    Test_y(i) = ytest(i+k-1);endTest_yNorm = Test_yNorm';% LSTM 层设置,参数设置inputSize = size(Train_xNorm{1},1);   %数据输入x的特征维度outputSize = 1;  %数据输出y的维度 %%%%  优化算法参数设置SearchAgents_no = 10;                  % 数量Max_iteration = 10;                    % 最大迭代次数dim = 3;                               % 优化参数个数lb = [1e-4,10,10];                 % 参数取值下界(学习率,隐藏层节点,正则化系数)ub = [1e-3, 200,200];                 % 参数取值上界(学习率,隐藏层节点,正则化系数)[Best_score,Best_pos,curve]=SMA(SearchAgents_no,Max_iteration,lb,ub,dim,fit)best_lr = Best_pos(1); % 最佳隐藏层节点数numhidden_units1 = round(Best_pos(2));% 最佳隐藏层节点数1numhidden_units2 = round(Best_pos(3));% 最佳隐藏层节点数2%% lstmlayers = [ ...        sequenceInputLayer([inputSize,1,1],'name','input')   %输入层设置    sequenceFoldingLayer('name','fold')    convolution2dLayer([2,1],10,'Stride',[1,1],'name','conv1')    batchNormalizationLayer('name','batchnorm1')    reluLayer('name','relu1')    maxPooling2dLayer([1,3],'Stride',1,'Padding','same','name','maxpool')    sequenceUnfoldingLayer('name','unfold')    flattenLayer('name','flatten')    bilstmLayer(numhidden_units1,'Outputmode','sequence','name','hidden1')     dropoutLayer(0.3,'name','dropout_1')    bilstmLayer(numhidden_units2,'Outputmode','last','name','hidden2')     dropoutLayer(0.3,'name','drdiopout_2')    fullyConnectedLayer(outputSize,'name','fullconnect')   % 全连接层设置(影响输出维度)(cell层出来的输出层) %    tanhLayer('name','softmax')    regressionLayer('name','output')];lgraph = layerGraph(layers)lgraph = connectLayers(lgraph,'fold/miniBatchSize','unfold/miniBatchSize');% plot(lgraph)%% 网络训练options = trainingOptions('adam', ...    'MaxEpochs',5, ...    'GradientThreshold',1,...    'ExecutionEnvironment','gpu',...    'InitialLearnRate',best_lr, ...    'LearnRateSchedule','piecewise', ...    'LearnRateDropPeriod',2, ...   %2个epoch后学习率更新    'LearnRateDropFactor',0.5, ...    'Shuffle','once',...  % 时间序列长度    'SequenceLength',k,...    'MiniBatchSize',24,...    'Plots', 'training-progress',...      % 画出曲线    'Verbose',0);%% 训练[net,traininfo] = trainNetwork(Train_xNorm, Train_yNorm, lgraph, options);%% 预测t_sim1 = predict(net, Train_xNorm); t_sim2 = predict(net, Test_xNorm); %%  数据反归一化T_sim1 = mapminmax('reverse', t_sim1',yopt);T_sim2 = mapminmax('reverse', t_sim2', yopt);T_sim1 = double(T_sim1) ;T_sim2 = double(T_sim2) ;%%  绘图M = size(T_sim1,2);N = size(T_sim2,2);figureplot(1 : length(curve), curve,'linewidth',1.5);title('SMA-CNN-LSTM', 'FontSize', 10);xlabel('迭代次数', 'FontSize', 10);ylabel('适应度值', 'FontSize', 10);grid off%%  均方根误差 RMSEerror1 = sqrt(sum((T_sim1 - Test_x').^2)./M);error2 = sqrt(sum((Test_yNorm' - T_sim2).^2)./N);%%  显示网络结构analyzeNetwork(net)%%  绘图figureplot(lgraph)title("CNN-BILSTM模型结构")%%  绘图figureplot(T_sim1,'-','linewidth',1)hold on plot(Test_x,'-','linewidth',1)legend( 'SMA-CNN-LSTM拟合训练数据','实际分析数据','Location','NorthWest','FontName','华文宋体');title('SMA-CNN-LSTM模型预测结果及真实值','fontsize',12,'FontName','华文宋体')xlabel('样本','fontsize',12,'FontName','华文宋体');ylabel('数值','fontsize',12,'FontName','华文宋体');xlim([1 M])%-------------------------------------------------------------------------------------figureplot(T_sim2,'-','linewidth',1)hold on plot(Test_y,'-','linewidth',1)legend('SMA-CNN-LSTM预测测试数据','实际分析数据','Location','NorthWest','FontName','华文宋体');title('SMA-CNN-LSTM模型预测结果及真实值','fontsize',12,'FontName','华文宋体')xlabel('样本','fontsize',12,'FontName','华文宋体');ylabel('数值','fontsize',12,'FontName','华文宋体');xlim([1 N])%-------------------------------------------------------------------------------------%%  相关指标计算%  R2R1 = 1 - norm(Test_x - T_sim1)^2 / norm(Test_x - mean(Test_x))^2;R2 = 1 - norm(Test_y -  T_sim2)^2 / norm(Test_y -  mean(Test_y))^2;disp(['训练集数据的R2为:', num2str(R1)])disp(['测试集数据的R2为:', num2str(R2)])%  MAEmae1 = sum(abs(T_sim1 - Test_x)) ./ M ;mae2 = sum(abs(T_sim2 - Test_y )) ./ N ;disp(['训练集数据的MAE为:', num2str(mae1)])disp(['测试集数据的MAE为:', num2str(mae2)])%  MAPEmaep1 = sum(abs(T_sim1 - Test_x)./Test_x) ./ M ;maep2 = sum(abs(T_sim2 - Test_y)./Test_y) ./ N ;disp(['训练集数据的MAPE为:', num2str(maep1)])disp(['测试集数据的MAPE为:', num2str(maep2)])%  RMSERMSE1 = sqrt(sumsqr(T_sim1 - Test_x)/M);RMSE2 = sqrt(sumsqr(T_sim2 - Test_y)/N);disp(['训练集数据的RMSE为:', num2str(RMSE1)])disp(['测试集数据的RMSE为:', num2str(RMSE2)])%% 保存训练模型save ('model')

仿真结果


    部分知识来源于网络,如有侵权请联系作者删除~


    今天的分享就到这里了,后续想了解智能算法、机器学习、深度学习和信号处理相关理论的可以后台私信哦~希望大家多多转发点赞加收藏,你们的支持就是我源源不断的创作动力!


作 者 | 华 夏

编 辑 | 华 夏

校 对 | 华 夏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/616386.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django模型入门

Django模型入门 为了能够学会使用Django模型,本节通过构建一个实际的Django模型来帮助读者尽快入门。 3.2.1 定义模型 既然Django模型实现了ORM功能,那么它就是对数据库实例的描述和实现。下面,我们通过一个简单的实例进行讲解。 如果需…

苹果全力升级:用专注AI的M4芯片彻底改造Mac系列

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

ChatGPT深度科研应用、数据分析及机器学习、AI绘图与高效论文撰写

2022年11月30日,可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT3.5,将人工智能的发展推向了一个新的高度。2023年4月,更强版本的ChatGPT4.0上线,文本、语音、图像等多模态交互方式使其在…

爱奇艺APP Android低端机性能优化

01 背景介绍 在智能手机市场上,高端机型经常备受瞩目,但低端机型亦占据了不可忽视的份额。众多厂商为满足低端市场的需求,不断推出低配系列手机。另外过去几年的中高端机型,随着系统硬件的快速迭代,现已经被归类为低端…

部署HDFS集群(完全分布式模式、hadoop用户控制集群、hadoop-3.3.4+安装包)

目录 前置 一、上传&解压 (一 )上传 (二)解压 二、修改配置文件 (一)配置workers文件 (二)配置hadoop-env.sh文件 (三)配置core-site.xml文件 &…

09-ARM开发板的HelloWorld

在ARM开发板上运行x86_64平台程序 前面在Ubuntu系统编译生成了X86_64平台的HelloWorld程序,通过NFS服务器,尝试在开发板上直接运行。 如图所示,程序无法正常运行,终端提示ARM开发板在执行x86架构(Intel或AMD&#xff…

人工智能|机器学习——基于机器学习的信用卡办卡意愿模型预测项目

一、背景介绍 在金融领域,了解客户的信用卡办卡意愿对于银行和金融机构至关重要。借助机器学习技术,我们可以根据客户的历史数据和行为模式预测其是否有办理信用卡的倾向。本项目通过Python中的机器学习库,构建了两个常用的分类模型&#xff…

ubuntu22下使用vscode调试redis7源码环境搭建

ubuntu22下使用vscode调试redis7源码环境搭建 ##vscode launch.json配置文件 {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid830387"version": "0.2.0&…

程序员Java.vue,python前端后端爬虫开发资源分享

bat面试资料 bat面试题汇总 提取码:724z 更多资料

你的高佣副业不二之选,开始流量卡推广,一文看懂号卡推广

在这个信息化的时代,网络已成为人们生活中不可或缺的一部分。然而,在享受着便捷与高效的同时,我们也必须面对一个现实问题,也就是高昂的流量费用。为了解决这一困扰广大用户的痛点,我们今天带来了一个极具吸引力的机会…

常用接口测试工具/免费api

一 接口编辑文档 常用的接口文档编写apipost 二 免费接口测试 api 1. thecat 含有: The Cat API - Cat as a Service The Cat API 2. public-apis 进入页面往下拉 三 常用接口测试工具 postman 四 常用接口性能测试工具 Jmeter,loadrunner

2.0 Hadoop 运行环境

2.0 Hadoop 运行环境 分类 Hadoop 教程 由于 Hadoop 是为集群设计的软件,所以我们在学习它的使用时难免会遇到在多台计算机上配置 Hadoop 的情况,这对于学习者来说会制造诸多障碍,主要有两个: 昂贵的计算机集群。多计算机构成的…