💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥1 概述
基于VMD-CNN-BiLSTM的负荷预测研究,是将变分模态分解(VMD)、卷积神经网络(CNN)和双向长短时记忆网络(BiLSTM)三种技术相结合的预测模型,该模型在处理复杂、非线性的时间序列数据方面表现出色,特别适用于电力负荷预测等领域。以下是对该研究的详细分析:
一、模型原理
- 变分模态分解(VMD):
- 定义:VMD是一种自适应的信号分解方法,能够将输入的时间序列信号分解为多个内在模态分量(Intrinsic Mode Functions, IMFs)。每个IMF都代表信号中的一个独特频带或时间尺度,从而有助于提取出原始数据中的有用信息和特征。
- 作用:VMD通过对模态分量的带宽和中心频率进行约束,确保分解得到的IMFs在频域上有良好的分离性和紧凑性,从而有助于减少噪声和干扰,提高后续预测模型的准确性。
- 卷积神经网络(CNN):
- 定义:CNN是一种深度学习模型,特别擅长处理图像和具有网格结构的数据。在VMD-CNN-BiLSTM模型中,CNN用于从VMD分解得到的IMFs中提取局部特征。
- 作用:CNN通过卷积操作、激活函数和池化操作来提取输入数据的空间层次结构,从而生成对预测有用的特征表示。这些特征表示将作为BiLSTM的输入,用于进一步的时间序列建模。
- 双向长短时记忆网络(BiLSTM):
- 定义:BiLSTM是一种特殊的循环神经网络(RNN),它通过在RNN的基础上增加了一个反向传播的隐藏层,使得模型能够同时捕捉序列中的前向和后向信息。
- 作用:在VMD-CNN-BiLSTM模型中,BiLSTM用于对CNN提取的特征进行建模,并捕捉时间序列中的长期依赖关系。这种双向传播特性使得模型能够更好地理解时间序列数据中的动态变化,从而提高预测的准确性。
二、模型结构
VMD-CNN-BiLSTM模型的结构大致可以分为以下几个部分:
- VMD层:将原始时间序列信号输入到VMD层,通过VMD算法将信号分解为多个IMFs。
- CNN层:将VMD层输出的每个IMF作为CNN的输入,通过卷积操作、激活函数和池化操作提取IMFs的局部特征。
- BiLSTM层:将CNN层输出的特征向量输入到BiLSTM层,利用BiLSTM的双向传播特性捕捉序列中的长期依赖关系。
- 输出层:根据具体任务的需求,输出层可以采用不同的结构。在预测任务中,输出层通常是一个全连接层,用于输出预测结果。
三、应用步骤
基于VMD-CNN-BiLSTM的负荷预测研究可以按照以下步骤进行:
- 数据准备:收集历史负荷数据,并进行预处理,包括数据清洗、归一化等操作。
- 变分模态分解(VMD):对预处理后的负荷数据进行VMD分解,得到多个IMF成分。
- 序列构建:将VMD得到的IMF成分作为输入序列,构建适合CNN-BiLSTM模型的序列数据,并确定预测的时间步长。
- 模型设计:设计并训练CNN-BiLSTM模型,考虑到CNN和BiLSTM对数据的不同处理能力,可以设计多层CNN和BiLSTM结构,并通过调节网络的参数和结构来优化模型性能。
- 模型训练:使用历史数据对设计好的VMD-CNN-BiLSTM模型进行训练,利用反向传播算法进行参数更新。
- 模型评估:使用验证集对训练好的模型进行评估,通常采用常见的评估指标如均方根误差(RMSE)、平均绝对误差(MAE)等来评估模型的预测性能。
- 模型调优:根据评估结果对模型进行调优,可以调整超参数、改变模型结构等方法来提升模型性能。
- 模型预测:使用训练好的VMD-CNN-BiLSTM模型对未来负荷进行预测。
- 结果分析:分析预测结果,探讨模型的优缺点,以及可能的改进方法。
四、总结
基于VMD-CNN-BiLSTM的负荷预测研究通过结合变分模态分解、卷积神经网络和双向长短时记忆网络三种技术的优势,有效地提高了负荷预测的准确性和可靠性。该模型在电力负荷预测等领域具有广泛的应用前景,可以为电力系统的规划和运营提供有力的支持。
📚2 运行结果
部分代码:
def evaluate_forecasts(Ytest, predicted_data, n_out): # 定义一个函数来评估预测的性能。 mse_dic = [] rmse_dic = [] mae_dic = [] mape_dic = [] r2_dic = [] # 初始化存储各个评估指标的字典。 table = PrettyTable(['测试集指标','MSE', 'RMSE', 'MAE', 'MAPE','R2']) for i in range(n_out): # 遍历每一个预测步长。每一列代表一步预测,现在是在求每步预测的指标 actual = [float(row[i]) for row in Ytest] #一列列提取 # 从测试集中提取实际值。 predicted = [float(row[i]) for row in predicted_data] # 从预测结果中提取预测值。 mse = mean_squared_error(actual, predicted) # 计算均方误差(MSE)。 mse_dic.append(mse) rmse = sqrt(mean_squared_error(actual, predicted)) # 计算均方根误差(RMSE)。 rmse_dic.append(rmse) mae = mean_absolute_error(actual, predicted) # 计算平均绝对误差(MAE)。 mae_dic.append(mae) MApe = mape(actual, predicted) # 计算平均绝对百分比误差(MAPE)。 mape_dic.append(MApe) r2 = r2_score(actual, predicted) # 计算R平方值(R2)。 r2_dic.append(r2) if n_out == 1: strr = '预测结果指标:' else: strr = '第'+ str(i + 1)+'步预测结果指标:' table.add_row([strr, mse, rmse, mae, str(MApe)+'%', str(r2*100)+'%'])
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1]张鲁一航,杨彦明,陈永展,等.基于VMD-CNN-BiLSTM的变工况涡扇发动机剩余寿命预测[J].北京航空航天大学学报, 2024.DOI:10.13700/j.bh.1001-5965.2021.0051.
[2]赵征,周孜钰,南宏钢.基于VMD的CNN-BiLSTM超短期风电功率多步区间预测[J].华北电力大学学报, 2022(004):049.
[3]杨进昆,党建武,杨景玉,等.基于时序分析及CNN-BiLSTM-AM的阶跃型滑坡位移预测[J].国外电子测量技术, 2024, 43(1):126-134.
[4]邵星,曹洪宇,王翠香,等.一种基于注意力机制的VMD-CNN-LSTM短期风电功率预测方法[J].[2024-09-09].DOI:10.12677/ORF.2024.141067.
🌈4 Python代码、数据
资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取