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

作者:智能算法研学社(Jack旭)日期:2025/10/12

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

文章目录

  • 基于旗鱼算法优化卷积神经网络结合长短期记忆网络与注意力机制(CNN-LSTM-Attention)的风电场发电功率预测
    • 1.CNN原理
    • 2.LSTM原理
    • 3.注意力机制
    • 4.CNN-LSTM-Attention
    • 5.风电功率预测
    • 5.1 数据集
    • 6.基于旗鱼算法优化的CNN-LSTM-Attention
    • 7.实验结果
    • 8.Matlab代码

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(Xi​⊗wi​+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​∙[ht−1​,xt​]+bf​)it​=σ(Wi​∙[ht−1​,xt​]+bi​)C~t​=tanh(Wc​∙[ht−1​,xt​]+bc​)ot​=σ(Wo​∙[ht−1​,xt​]+bo​)​

式中: σ \sigmaσ 为 sigmod 激活函数; tanh ⁡ \tanhtanh 为双曲正切激活函数; h t − 1 h_{t-1}ht−1​ 为 t − 1 \mathrm{t}-1t−1 时刻的输出; 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}_t Ct​=ft​×ct−1​+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(Wh​ht​+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/109256699
由前文可知,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代码


基于旗鱼算法优化卷积神经网络结合长短期记忆网络与注意力机制(CNN-LSTM-Attention)的风电场发电功率预测》 是转载文章,点击查看原文


相关推荐


C++ const 用法全面总结与深度解析
oioihoii2025/10/10

1. const 基础概念 const 关键字用于定义不可修改的常量,是C++中确保数据只读性和程序安全性的核心机制。它可以应用于变量、指针、函数参数、返回值、成员函数等多种场景,深刻影响代码的正确性和性能。 1.1 本质与编译期处理 const变量在编译时会被编译器严格检查,任何修改尝试都会导致编译错误。与C语言不同,C++中的const变量(尤其是全局const)通常不会分配内存,而是直接嵌入到指令中(类似#define),但在以下情况会分配内存: 取const变量地址时 const变量为


php artisan db:seed执行的时候遇到报错
快支棱起来2025/10/9

INFO Seeding database. Illuminate\Database\QueryException SQLSTATE[42S22]: Column not found: 1054 Unknown column 'email_verified_at' in 'field list' (Connection: mysql, SQL: insert into users (name, email, email_verified_at, password, remember_token,


apache POI 万字总结:满足你对报表一切幻想
大鱼七成饱2025/10/7

背景 国庆期间接了个兼职,处理机构的几张Excel报表。初次沟通,感觉挺简单,接入Easyexcel(FastExcel),然后拼lamda表达式就跑出来了。不过毕竟工作了这些年,感觉没这么简单。后面找业务方详细聊了一次,将需求落到纸面上。逐行研究了下BRD,有点挠头,跑数加各种样式,兼容新老版本,老方案是不行了。综合对比,最终选了老牌的 Apache POI 实现,下面说下为啥选POI,还有POI怎么用,包含样式、公式、动态表头、安全防范、百万级数据导入导出等功能。 一、技术选型 如果实现该


【转载】前验光师如何通过聪明模仿而非蛮干构建月收入3.5万美元的SaaS应用
是魔丸啊2025/10/6

转载 大多数人都认为你需要在科技领域拥有突破性的想法才能成功。 Samuel Rondot的想法与众不同。他的整个行动手册建立在一个简单的规则上:不要重新发明轮子——只要让它变得1%更好。 这种心态帮助他辞去了验光师的工作,从零开始自学编程,并推出了三个现在每月收入3.5万美元的SaaS应用。 以下是他如何做到的。 从验光师到自学程序员 Samuel从未计划成为一名程序员。几年前,他在眼镜行业工作,完全没有编程经验。 什么改变了?他想重建一个自己正在使用的Instagram工具——这一次,完全靠


免费领源码-Spring boot的物流管理系统 |可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
vx_dmxq2112025/10/5

目   录 摘  要 Abstract 1  前言 1.1 设计目的 1.2 设计思路 1.3 国内外研究现状 2  相关技术 2.1  Java语言 2.2 MySQL数据库 2.3 Spring Boot框架 2.4 B/S模式 3  系统分析 3.1  可行性分析 3.2  系统需求分析 3.2.1  功能性分析 3.2.2  非功能性需求分析 3.3  系统用例分析 3.3.1  注


第一章 机器学习基础理论:机器学习概述(一)
FPGA+护理+人工智能2025/10/3

第一章 机器学习基础理论:机器学习概述 文章目录 第一章 机器学习基础理论:机器学习概述具体的专栏内容请参考: 人工智能专栏一、目标二、重点与难点三、内容1. 机器学习概述2. 机器学习在精神病护理领域的应用 前面python的基础内容算是完成了,接下来将要进入机器学习部分了。 具体的专栏内容请参考: 人工智能专栏 一、目标 通过本章学习,能够: 理解机器学习的基本概念和发展历程 了解机器学习在精神病护理领域的应用现状与前


在 Trae 国际版中添加 Chrome Dev MCP Server(Windows 实战指南)
wuhanwhite2025/10/2

前言 最近在折腾 Trae 国际版这类 AI 编程工具的时候,我发现它虽然支持接入 MCP(Model Context Protocol),但是只接受通过 npx 或 uvx 启动的 stdio 模式。 与此同时,Chrome 端的 mcp-chrome 扩展确实很好用,可以让 AI 直接获取浏览器标签页、截图、修改网页样式,甚至做一些自动化操作。但它默认暴露的是 Streamable HTTP 接口,并不符合 Trae 的要求。 这篇文章记录一下我在 Windows 环境下的实践


设计模式——单例模式
舒克起飞了2025/10/2

单例模式是一种创建型设计模式,它可以确保一个类在整个程序运行过程中只有一个实例,并提供一个全局访问点以获取该实例。         单例模式的核心思想就是:控制对象的实例化,防止创建多个实例,从而节省资源并保证行为一致性。 关键点: 单例类:包含单例实例的类,通常将构造函数声明为私有;静态成员变量:用于存储单例实例的静态成员变量;获取实例方法:静态方法,用于获取单例实例;私有构造函数:防止外部直接实例化单例类;线程安全处理:确保在多线程环境下单例实例的创建是安全的。构造函数和析构函数是私有


Python 的内置函数 breakpoint
IMPYLH2025/10/2

Python 内建函数列表 > Python 的内置函数 breakpoint def breakpoint(): ''' 调用位置进入调试器 ''' Python 的内置函数 breakpoint() 是一个用于调试的便捷工具,它会在调用时自动触发调试器,让开发者能够暂停程序执行并检查当前状态。这个函数在 Python 3.7 及更高版本中引入,旨在简化调试过程,特别是在复杂程序中设置断点的场景。 基本用法: def calculate_sum(a, b):


Navicat导入Excel至瀚高数据库
瀚高PG实验室10/1/2025

解决方案:将Excel中没有数据行,执行删除操作。步骤五:将Excel分成若干部分导入,核实为数据库地址信息列字段长度设置小于实际数据长度。步骤三:导入显示成功,且显示行数与Excel行数一致。步骤四:导出数据与Excel进行比对,核实缺失数据。将缺失数据单独导入没有问题。解决客户使用Navicat导入Excel至瀚高数据库数据条数不一致问题。二、导入数据少于Excel数据行及Navicat导入结果显示行。步骤一:导入Excel,配置数据与Excel对应关系。一、导入数据多于Excel数据行。

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0