基于MATLAB2020b的深度学习框架,提出了一种基于CNN-LSTM的多变量电力负荷预测方法,该方法将历史负荷与气象数据作为输入,输出一天96个时刻负荷值,建模学习特征内部动态变化规律,即多变量输入多输出模型。同时,针对该模型超参数选择困难的问题,提出利用人工大猩猩部队GTO算法实现该模型超参数的优化选择。

1.CNN-LSTM

MATLAB2020b自带的深度学习框架,其中会用到convolution2dLayer,sequenceFoldingLayer,reluLayer,averagePooling2dLayer,lstmLayer,fullyConnectedLayer等。

需要的函数主要参考这里,据此我们建立CNN-LSTM模型如下:

2.人工大猩猩部队优化算法

原理参考这里。

3.优化CNN-LSTM超参数

从1中的网络结构图我们看到CNN-LSTM含两个卷积层,两个池化层,一个lstm层,一个全连接层,这些层的超参数是需要手动设置的,以及学习、训练次数、batchsize等,共有10来个参数,如何进行选择是不易的,因此采用优化算法进行优化选择。

GTO优化问题是对适应度函数求极大值或极小值的问题,本文以最小化CNN-LSTM网络期望输出与实际输出之间的均方差为适应度函数,即找到一组网络超参数,使得 CNN-LSTM的误差最小。 GTO优化CNN-LSTM,分为GTO部分、CNN-LSTM部分和数据部分。其中,CNN-LSTM部分首先根据 GTO传入的参数进行解码,获得所需超参数,然后利用数据部分传入的训练集进行网络训练,最后对验证集进行预测,获得实际输出值与期望输出值的误差均方差,并将均方差作为适应度值返回给GTO部分。GTO部分根据适应度值进行优化,实现种群与全局最优解的更新。 通过该方法,最终可获得优化的网络超参数。

4.结果

数据为2016负荷预测竞赛数据,采用2012年数据,进行滚动预测建模,多变量输入多输出。

data=xlsread('电荷数据.csv','B2:CX376');
%负荷数据--每天96个负荷值
%气象数据 最高温度℃ 最低温度℃ 平均温度℃ 相对湿度(平均) 降雨量(mm)
power=data(:,1:96);
weather=data(:,97:end);
% 归一化 或者 标准化 看哪个效果好
method=@mapminmax;%  mapstd mapminmax
[x1,mappingx1]=method(power');
[x2,mappingx2]=method(weather');
data=[x1' x2'];
% 前steps天steps*101 为输入,来预测未来一天的96负荷值 为输出
steps=10;
samples=size(data,1)-steps;%样本数
for i=1:samplesinput{i,:}=data(i:i+steps-1,:);output(i,:)=data(i+steps,1:96);
end

4.1 CNN-LSTM

4.2 GTO优化CNN-LSTM。

GTO找到一组网络超参数,使得 CNN-LSTM的误差最小,主要优化的超参数是:学习率,训练次数,batchsize,卷积层1的核数量、大小,池化层1的核大小,卷积层2的核数量、大小,池化层2的核大小,lstm层与全连接隐含层的节点数,共11个参数,适应度曲线为:

显示在第6次优化的时候,找到最优解,对应的11个参数分别是:

利用该超参数进行建模,结果为:

4.3 各算法结果对比

为了方便看,我们只画出最后两天的值,如图

5 更多

完整代码见评论区我的评论。后续将会推出粒子群、遗传、灰狼、浮游、阿基米德、算术优化、麻雀优化等,新旧算法都有。

目前已有:大猩猩部队优化算法,算术优化算法,蜜獾优化算法,都是近两年新的优化算法。

MATLAB人工大猩猩部队GTO优化CNN-LSTM用于多变量负荷预测相关推荐

  1. (Matlab)基于网格搜素优化的支持向量机实现电力负荷预测

  2. 智能优化算法:人工大猩猩部队优化算法-附代码

    智能优化算法:人工大猩猩部队优化算法 文章目录 智能优化算法:人工大猩猩部队优化算法 1.算法原理 1.1勘探阶段 1.2 开发阶段 1.2.1 跟随银背大猩猩 1.2.2 竞争成年雌性 2.实验结果 ...

  3. 基于人工大猩猩部队优化算法的函数寻优算法

    文章目录 一.理论基础 1.人工大猩猩部队优化算法(GTO) 1.1 探索阶段 1.2 开发阶段 1.2.1 跟随银背大猩猩 1.2.2 竞争成年雌性 2.GTO算法伪代码 二.仿真实验与分析 1.函 ...

  4. 机器学习之MATLAB代码--MATLAB量子粒子群优化LSTM超参数负荷预测(十三)

    机器学习之MATLAB代码--MATLAB量子粒子群优化LSTM超参数负荷预测(十三) 代码 数据 结果 代码 代码按照下列顺序依次: 1. function result(true_value,pr ...

  5. 分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测

    分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测 目录 分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测 ...

  6. TensorFlow搭建LSTM实现多变量时间序列预测(负荷预测)

    目录 I. 前言 II. 数据处理 III. LSTM模型 IV. 训练/测试 V. 源码及数据 I. 前言 在前面的一篇文章TensorFlow搭建LSTM实现时间序列预测(负荷预测)中,我们利用L ...

  7. 基于Adam算法优化GRU神经网络的短期负荷预测(Python代码实现)

    目录 1 Adam优化算法 2 Adam算法中的学习率衰减策略 3 GRU神经网络 4 运行结果 5 参考文献 6 Python代码实现 1 Adam优化算法 2 Adam算法中的学习率衰减策略 该文 ...

  8. 深度学习模型的准备和使用教程,LSTM用于锂电池SOH预测(第一节)(附Python的jypter源代码)

    本Python笔记本显示和分析了如何处理NASA获得的电池充电/放电数据集. 对于这个模型的训练阶段,需要安装Python 3.x以及以下库: Tensorflow 2.0 Numpy Pandas ...

  9. 使用 LSTM 进行多变量时间序列预测的保姆级教程

    来源:DeepHub IMBA 本文约3800字,建议阅读10分钟本文中我们将使用深度学习方法 (LSTM) 执行多元时间序列预测. 使用 LSTM 进行端到端时间序列预测的完整代码和详细解释. 我们 ...

最新文章

  1. 简明Python3教程 8.控制流
  2. Multi-band Blending
  3. 什么是消息队列 RocketMQ 版?
  4. MATLAB AWGN信道 M-ary PSK 误码性能
  5. 课时 29:安全容器技术(王旭)
  6. java Memcache使用详解
  7. Nagios监控Windows主机
  8. 最多两次股票交易-Best Time to Buy and Sell Stock III
  9. 2000年考研英语阅读理解文章三
  10. Linux学习之diction的编译与使用
  11. Delphi多线程详解CreateThread、TThread,以及线程间通过临界区(CriticalSection)实现同步
  12. sudo: unable to resolve host iZ2zecsdy8flu603bmdg1bZ
  13. PB 程序发布相关
  14. 华为手机2.3亿出货量背后,一场技术+市场的胜利
  15. cdh 6哈希验证失败解决方法
  16. 原生js打造自定义播放器
  17. beego的安装和升级
  18. java基础 流程控制语句循环流程控制控制循环语句
  19. 银行降转账额度 “余额宝”要当心了
  20. image_thumb

热门文章

  1. rsync+inotify自动同步
  2. 九宫格穷举所有解——九宫Killer
  3. 信息流平台“三足鼎立”,看点、头条与百度如何拉锯?
  4. Ros环境下配置启动Robotiq 2f-140 电爪
  5. Python读取并处理输出Excel表格(xlsx、xls表格)时,保持原格式不变
  6. [keil] Error: L6218E: Undefined symbol __aeabi_assert (referred from xxx.o).
  7. 【AI创造营】AI染发,拒绝选择。
  8. z2 pro android 8,zuk z2pro成功升级安卓8.0,这是否是最后一次升级?
  9. electron-asar的编译和反编译
  10. Python---分页爬取今日头条标题