基于蝴蝶算法优化卷积神经网络结合长短期记忆网络与注意力机制(CNN-LSTM-Attention)的风电场发电功率预测 - 教程

基于蝴蝶算法优化卷积神经网络结合长短期记忆网络与注意力机制(CNN-LSTM-Attention)的风电场发电功率预测

1.CNN原理

卷积神经网络(Convolutional Neural Network,CNN)是一种广泛应用于图像和视频处理任务的神经网络模型[13]。 CNN 模型通常由多个卷积层、激活函数、池化层和全连接层组成,通过反向传播算法进行训练。在训练过程中,CNN 利用调整权重参数来最小化损失函数,以使模型能够更好地预测目标。CNN 模型的网络结构如图 1 所示。

在这里插入图片描述

图 1 CNN 模型的网络结构

卷积计算方法:
Y i = f ( X i ⊗ w i + b b ) (1) Y_i=f\left(\mathrm{X}_i \otimes w_i+b_b\right) \tag{1}Yi=f(Xiwi+bb)(1)

式中,⊗ \otimes为卷积操作;X i \mathrm{X}_iXi为卷积计算的序列;w i w_iwi为卷积核的权重;b b b_bbb表示偏移量;f ( ⋅ ) f(\cdot)f()为激活函数。

2.LSTM原理

LSTM 模型首要引入了"门"的机制,其中包含三个门:遗忘门、输入门和输出门。通过这些门的组合,LSTM 能 够在序列中有效地存储和检索信息,从而更好地捕捉长期依赖关系。其结构如图 1 所示。

在这里插入图片描述

图 1 LSTM 模型的网络结构

当前状态与上一时刻状态关系为

f t = σ ( W f ∙ [ h t − 1 , x t ] + b f ) i t = σ ( W i ∙ [ h t − 1 , x t ] + b i ) C ~ t = tanh ⁡ ( W c ∙ [ h t − 1 , x t ] + b c ) o t = σ ( W o ∙ [ h t − 1 , x t ] + b o ) \begin{aligned} & f_t=\sigma\left(W_f \bullet\left[h_{t-1}, x_t\right]+b_f\right) \\ & i_t=\sigma\left(W_i \bullet\left[h_{t-1}, x_t\right]+b_i\right) \\ & \tilde{C}_t=\tanh \left(W_c \bullet\left[h_{t-1}, x_t\right]+b_c\right) \\ & o_t=\sigma\left(W_o \bullet\left[h_{t-1}, x_t\right]+b_o\right) \end{aligned}ft=σ(Wf[ht1,xt]+bf)it=σ(Wi[ht1,xt]+bi)C~t=tanh(Wc[ht1,xt]+bc)ot=σ(Wo[ht1,xt]+bo)

式中:σ \sigmaσ为 sigmod 激活函数;tanh ⁡ \tanhtanh为双曲正切激活函数;h t − 1 h_{t-1}ht1t − 1 \mathrm{t}-1t1时刻的输出;f t , i t , C ~ t , o t f_t, ~ i_t, ~ \tilde{C}_t, ~ o_tft,it,C~t,ot分别为 :t时刻下遗忘门限,输入门限,状态矩阵,输出门限;W f , W i , W c , W o W_f, ~ W_i, ~ W_c, ~ W oWf,Wi,Wc,Wo分别为各对应层的权重t;b f , b i , b c , b o b_f, ~ b_i, ~ b_c, ~ b_obf,bi,bc,bo分别为各对应层的偏置系数。

最终,新的状态表示为

C t = f t × c t − 1 + i t × C ~ t C_t=f_t \times c_{t-1}+i_t \times \tilde{C}_tCt=ft×ct1+it×C~t

3.注意力机制

注意力机制能对不同的输入特征赋予不同的权重,以增强重要特征,避免无关信息对最终结果造成影响。具体地,首先使用打分函数S t S_tSt,其表达式为

s t = tanh ⁡ ( W h h t + b h ) s_t=\tanh \left(W_{\mathrm{h}} h_t+b_{\mathrm{h}}\right)st=tanh(Whht+bh)

式中:W y W_{\mathrm{y}}Wy为 Attention 的权重;b y b_{\mathrm{y}}by为 Attention 的偏差;v vv为注意力值;h t ∗ h_t^*ht为 t 时刻 Attention 层的输出;α t \alpha_tαt为权重系数。

4.CNN-LSTM-Attention

在这里插入图片描述

利用卷积神经网络作为特征提取层,然后结合LSTM 与注意力机制进行预测

5.风电功率预测

5.1 数据集

数据集为2019年风电功率数据,数据集如下:

时间测风塔10m风速(m/s)测风塔30m风速(m/s)测风塔50m风速(m/s)测风塔70m风速(m/s)轮毂高度风速(m/s)测风塔10m风向(°)测风塔30m风向(°)测风塔50m风向(°)测风塔70m风向(°)轮毂高度风向(°)温度(°)气压(hPa)湿度(%)实际发电功率(mw)
2019-01-01 00:00:000.223000.8180.818166.816177.3556.224210.836210.836-13.154898.7153.4970.979591

数据特征除时间意外,一共包含14维特征

我们利用Windowsize = 5天的数据预测下一天的数据, 于是5天的数据一共包含14*5=70维度,预测输出1维资料,即实际发电功率(mw)。实际应用中,Windowsize的大小可根据实际情况进行修改。

6.基于蝴蝶算法优化的CNN-LSTM-Attention

蝴蝶算法原理请参考:https://blog.csdn.net/u011835903/article/details/107855860
由前文可知,CNN-LSTM-Attentio的参数设置具有满目性。本文利用蝴蝶算法对LSTM的参数(学习率,LSTM神经元个数,正则化参数)和注意力机制键值进行优化。适应度函数设计为训练集的MAPE平均百分比误差:
f i t n e s s = a r g m i n ( M A P E p r i d e c t ) fitness = argmin(MAPE{pridect})fitness=argmin(MAPEpridect)

适应度函数选取训练后的MAPE误差。MAPE误差越小表明预测的数据与原始数据重合度越高。最终优化的输出为最佳学习率,LSTM神经元个数,正则化参数,注意力机制键值。然后利用最佳学习率,LSTM神经元个数,正则化参数,注意力机制键值训练后的网络对测试数据集进行测试。

7.实验结果

在这里插入图片描述

8.Matlab代码

posted on 2025-11-05 13:24  blfbuaa  阅读(5)  评论(0)    收藏  举报