基于改进神经网络的风电功率预测(Matlab代码实现)

news2024/11/13 9:07:57

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者

⛳️座右铭:行百里者,半于九十。

目录

💥1 概述

📚2 运行结果

2.1 初始BP神经网络

2.2 GA-BP神经网络​

🎉3 参考文献

🌈4 Matlab代码实现

💥1 概述

​      ​国民经济可持续发展要求国家进一步深化能源结构改革,扩大可再生能源规模。风能作为一种重要的清洁能源,近年来发展迅速。然而风电固有的间歇性、随机性和波动性的特点给大规模风电并网的安全调度和平稳运营带来挑战。风电功率预测技术能够预测未来一段时间风电机组的输出功率情况,能够为控制人员保障电网平稳运行提供有效依据,且有助于降低风力发电成本,为提高风电并网规模创造条件。因此,风电输出功率预测技术是国家电网安全调度与平稳运行的关键,提升风电功率预测的精度具有重要的意义。

📚2 运行结果

2.1 初始BP神经网络

2.2 GA-BP神经网络​

 

部分代码:

%{
_train:训练
_test:测试
_norm:归一化,数据位于(0,1)
tic和toc用来记录matlab命令执行的时间
%}

% 初始化
tic 
clear;
clc;

% 数据
input = load('input.txt');
output = load('output.txt');
save data input output

% 数据初始化
input_train = input(1:150,:)';
output_train = output(1:150,:)';
input_test = input(151:186,:)';
output_test = output(151:186,:)';

% 训练数据归一化
[input_norm, is] = mapminmax(input_train);    %is:输入数据归一化参数
[output_norm, os] = mapminmax(output_train);  %os:输出数据归一化参数

% BP初始化
input_num = 3;
hidden_num = 6;
output_num = 1;

% 建立网络
TF1 = 'tansig'; TF2 = 'purelin';
net = newff(input_norm, output_norm, hidden_num, {TF1 TF2}, 'trainlm');


% 遗传参数初始化
iteration_num = 10; %进化次数,即迭代次数
popsize = 30; %种群规模,自定义
pc = 0.3; %交叉概率
pm = 0.1; %变异概率


numsum=input_num*hidden_num+hidden_num+hidden_num*output_num+output_num;
lenchrom=ones(1,numsum);       
bound=[-3*ones(numsum,1) 3*ones(numsum,1)];    %数据范围
individuals=struct('fitness',zeros(1,popsize), 'chrom',[]);  %将种群信息定义为一个结构体


%各种群适应度计算 
for i=1:popsize
    individuals.chrom(i,:) = Code(lenchrom, bound);  %编码
    x = individuals.chrom(i,:);
    %计算适应度
    individuals.fitness(i) = fun(x,input_num,hidden_num,output_num,net,input_norm,output_norm);
end

[bestfitness, bestindex] = min(individuals.fitness);
bestchrom = individuals.chrom(bestindex,:);  %最好的染色体
%-------以上:完成第一次的适应度计算即存储,接下来选择交叉变异从而获得更好的个体,迭代十次---------%


% 选择,交叉,变异
for i=1:iteration_num
    % 选择  
    individuals=select(individuals,popsize);
    % 交叉  
    individuals.chrom=Cross(pc,lenchrom,individuals,popsize,bound);  
    % 变异  
    individuals.chrom=Mutation(pm,lenchrom,individuals,popsize,i,iteration_num,bound);
    
    % 计算适应度
    for j=1:popsize
        x = individuals.chrom(j,:); %个体,本段与上面一样,但无需编码,要做的是计算选择/交叉/变异之后的适应度值
        %计算适应度
        individuals.fitness(j) = fun(x,input_num,hidden_num,output_num,net,input_norm,output_norm);
    end    
    %找到最小适应度的染色体及它们在种群中的位置
    [newbestfitness,newbestindex] = min(individuals.fitness);
    [worestfitness,worestindex] = max(individuals.fitness);
    % 代替上一次进化中最好的染色体
    if newbestfitness < bestfitness
       bestfitness = newbestfitness;
       bestchrom = individuals.chrom(newbestindex,:);
    end
    individuals.chrom(worestindex,:) = bestchrom;
    individuals.fitness(worestindex) = bestfitness;   %把最糟糕的用最好的替换
end


% 判断是否达标,已达标,进入下一步

% 获得最佳初始阀值权值

x = bestchrom;
w1 = x(1:input_num*hidden_num);
B1 = x(input_num*hidden_num+1:input_num*hidden_num+hidden_num);
w2 = x(input_num*hidden_num+hidden_num+1:input_num*hidden_num+hidden_num+hidden_num*output_num);
B2 = x(input_num*hidden_num+hidden_num+hidden_num*output_num+1:input_num*hidden_num+hidden_num+hidden_num*output_num+output_num);

net.iw{1,1} = reshape(w1,hidden_num,input_num);
net.lw{2,1} = reshape(w2,output_num,hidden_num);
net.b{1} = reshape(B1,hidden_num,1);
net.b{2} = reshape(B2,output_num,1);

% BP网络训练
% 网络参数
net.trainParam.epochs=1000;
net.trainParam.lr=0.1;
net.trainParam.goal=0.0001;

net.divideFcn = ''; % 为和书本一致,对于样本极少的情况,不要再三分了

%网络训练
[net,tr]=train(net,input_norm,output_norm);

%数据归一化
input_test_norm = mapminmax('apply',input_test,is);
an = sim(net,input_test_norm); %归一化的预测结果
output_test_BP = mapminmax('reverse',an,os); %预测结果
error = output_test_BP-output_test;

% 画图
figure(1)
plot(output_test_BP,':og','LineWidth',1.5)
hold on
plot(output_test,'-*','LineWidth',1.5);
legend('预测输出','期望输出')
grid on
set(gca,'linewidth',1.0);
xlabel('样本','FontSize',15);
ylabel('函数输出','FontSize',15);
set(gcf,'color','w')
title('GA-BP 网络','Color','k','FontSize',15);

toc

 

🎉3 参考文献

[1]赏益. 基于改进神经网络的风电功率预测研究[D].南京信息工程大学,2020.DOI:10.27248/d.cnki.gnjqc.2020.000066.

[2]寇金驰. 基于改进神经网络的风电功率预测系统设计[D].沈阳工程学院,2021.DOI:10.27845/d.cnki.gsygc.2021.000022.

[3]刘增里,杨静,刘亚林,熊力.基于改进BP神经网络的风电功率超短期预测[J].船舶工程,2019,41(S1):282-287.DOI:10.13788/j.cnki.cbgc.2019.S1.069.

🌈4 Matlab代码实现

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【K8S系列】Kubernetes 之kubectl 常用命令汇总

目录 一、kubetcl简单介绍 二、命令介绍 详细介绍&#xff1a; 三、部分命令详细介绍 3.1 create 3.2 get 3.3 describe 3.4 rolling-update 3.5 exec 3.6 log kubectl 是 Kubernetes 自带的客户端&#xff0c;可以用它来直接操作 Kubernetes 集群。 日常在使用 Kuber…

Swift 周报 第十六期

前言 本期是 Swift 编辑组自主整理周报的第七期&#xff0c;每个模块已初步成型。各位读者如果有好的提议&#xff0c;欢迎在文末留言。 欢迎投稿或推荐内容。目前计划每两周周一发布&#xff0c;欢迎志同道合的朋友一起加入周报整理。 当你来到双水村以外的大世界&#xff…

操作系统实验二死锁避免之银行家算法的模拟

文章目录 死锁 &#xff08;1&#xff09;定义 &#xff08;2&#xff09;死锁产生的原因 &#xff08;3&#xff09;死锁产生的必要条件 &#xff08;4&#xff09;死锁的处理策略 银行家算法 &#xff08;1&#xff09;核心思想 &#xff08;2&#xff09;数据结构 &#x…

2.2 Pycharm 的使用

文章目录1. PyCharm 安装2. Python 项目3. 外貌设置4. 配色方案5. 字体大小6. 自动换行7. 汉化8. 翻译插件9. 添加多个解释器10. Pycharm 常用快捷键11. 自定义文件模板内容12. 前端代码运行浏览器13. 关闭 with open 提示14. 双击shift查找15. 导出配置导入配置1. PyCharm 安装…

Gwas实战分析3_群体结构增加

1.sh plink 格式转化 plink1.map/plink1.ped ------plink2.bim/fam/bed plink --file 1001genomes_snps_only_ACGTN1 --make-bed --out plink2 2.sh 群体结构分析 时间过久&#xff1a; for K in 2 3 4 5 6 7 8 9 10; do admixture --cv plink2.bed K∣teeadmixtrueK | tee…

HTML小游戏4 —— 简易版英雄联盟(附完整源码)

&#x1f482; 网站推荐:【神级源码资源网】【摸鱼小游戏】&#x1f91f; 风趣幽默的前端学习课程&#xff1a;&#x1f449;28个案例趣学前端&#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】&#x1f4ac; 免费且实用的计算机相关知…

基于C#实现的在线聊天室的桌面系统软件

资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/86863237 资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/86863237 目录 个人聊天室软件 1 需求分析与概要设计 1 项目说明 1 1.1. 项目目标&#xff1a; 1 1.2. 软硬件环境…

庖丁解牛 指针的高端操作

本章重点 写在前面 1.字符指针 2.指针数组 3.数组指针 3.1数组指针的定义 3.2 &数组名VS数组名 3.3 数组指针的使用 二维数组与数组指针 4.数组参数和指指针参数 4.1一维数组传参 4.2 二维数组传参 4.3一级指针传参 4.4二级指针传参 5.函数指针 5.1函数指针的…

SSM基于小程序的医院预约挂号系统 毕业设计-附源码260839

SSM医院预约挂号小程序的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对医院排…

Prometheus系列(2)之EC2安装Node端

目标 为Prometheus安装Node程序。 步骤 node exporter程序 wget https://github.com/prometheus/node_exporter/releases/download/v1.4.0/node_exporter-1.4.0.linux-amd64.tar.gz tar xvzf node_exporter-1.4.0.linux-amd64.tar.gz cd node_exporter-1.4.0.linux-amd64/s…

技术分享 | 专项测试技术初识Hook

本文节选自霍格沃兹测试学院内部教材Hook 技术需要预先分析目标应用的源代码和逻辑&#xff0c;根据目标测试场景设置目标、逻辑和数据&#xff0c;然后运行时动态的对目标函数参数值、逻辑或者返回值做修改&#xff0c;达到修改现有函数逻辑、实现目标测试场景的目的。 Hook的…

汇编语言指令

文章目录算术运算指令ADDADDISUB伪指令LUILIAUIPCLA逻辑运算指令内存读写指令条件分支指令无条件跳转指令算术运算指令 ADD 语法ADD RD&#xff0c;RS1,RS2例子add x5,x6,x7x5x6x7编码格式&#xff1a;R-type opcode(7):0110011(OP) 从RS里面取出数据&#xff0c;把里面的数据…

【MyBatis框架】关联映射

关系映射1. 关联映射概述2. 环境搭建3.处理字段名和属性名不一致的情况4. 处理一对一映射5. 处理多对一映射5.1 级联方式处理5.2 使用association处理映射关系5.3 分步查询6. 处理一对多查询7. 小结1. 关联映射概述 在关系型数据库中&#xff0c;多表之间存在着三种关联关系&a…

Linux文件打包及压缩、解包及解压

目录 前言 什么是压缩&#xff1f; tar的介绍与使用 简介 打包压缩文件 打包文件&#xff08;不压缩&#xff09; gzip压缩类型压缩文件 bzip压缩类型压缩文件 xzip压缩类型压缩文件 解包解压文件 简介 解压缩&#xff08;解压到当前目录&#xff09; 解压缩&#x…

线代 | 【提神醒脑】自用笔记串联

一、初等变换 1、初等行变换与方程组的同解变换 2、初等行变换关系网 ※ 3、关联结论 —— 同解方程 4、行、列变换适用场景

Java 线程池之ThreadPoolExecutor学习总结

前提 java version "1.8.0_25" 池简述 软件开发活动中&#xff0c;我们经常会听到数据库连接池、内存池、线程池等各种“池”概念&#xff0c;这些“池”到底是什么东西呢&#xff1f;程序的世界里&#xff0c;我们可以将池简单的理解为一种容器类数据结构&#x…

哪本计算机书籍,让你有了醍醐灌顶突然开悟的感觉?

计算机书籍每年都会出版很多&#xff0c;但是能影响几代程序员的有这几本书&#xff0c;推荐一下&#xff0c;肯定让你有醍醐灌顶的开悟的感觉。 1、重构 改善既有代码的设计&#xff08;第2版 平装版&#xff09; 豆瓣评分&#xff1a;9.2 本书是一本为专业程序员编写的重构指…

30岁本科男,在测试行业干了五年还只会功能测试,难道真的要去送外卖吗?

在网上看到一个帖子 从发帖内容可以看出&#xff0c;题主是一位拥有五年功能测试经验的IT从业者&#xff0c;他也深知功能测试现在的处境艰难&#xff0c;想改变&#xff0c;却又因为年龄和经济压力的原因迟迟不敢迈出第一步&#xff0c;其实这是很多年近30岁的人事业危机的缩影…

【Java】之File类

个人主页&#xff1a;天寒雨落的博客_CSDN博客-C,CSDN竞赛,python领域博主 特别标注&#xff1a;仅为自己的学习记录笔记&#xff0c;方便复习和加深记忆&#xff0c;仅供借鉴参考&#xff01; 前篇回顾&#xff1a;【java】之File类_天寒雨落的博客-CSDN博客 目录 目录的遍历…

五 系统安全分析与设计

目录 一、安全基础技术 1.1 对称与非对称加密 1.2 数字签名&#xff08;防抵赖&#xff09; 1.3 信息摘要&#xff08;防篡改&#xff09; 1.4 加密、数字签名、信息摘要结合使用 1.5 数字证书&#xff08;防止公钥被截取篡改&#xff09; 二、网络安全 2.1 安全协议 …