热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【ELAMN预测】基于粒子群算法优化ELMAN神经网络实现数据回归预测matlab代码

1简介风能,作为一种重要,有潜力,无污染,可再生、可持续的能源,已经成为全球发电最为迅速的能源之一,越来越受到世界各国的青睐。近年来,为缓解能源短缺问题,改善环境,实现经济乃至人

1 简介

风能,作为一种重要,有潜力,无污染,可再生、可持续的能源,已经成为全球发电最为迅速的能源之一,越来越受到世界各国的青睐。近年来,为缓解能源短缺问题,改善环境,实现经济乃至人类的可持续发展,世界各国纷纷大力发展风能资源。然而,在实际操作中,风能固有的波动性和间歇性通常会增加风能入网的难度,致使风电场输出功率不稳定,严重影响输出的电能质量,大大增加了电网安全性和稳定性运行风险,因此,风速预测在风电相关工作中至关重要,准确、可靠的预测结果不仅有利于调度人员事先掌握风电场的功率变化情况,及时制定调度运行计划,提高能量转换效率、降低风险,增加发电量等,同时也有利于风电并网稳定运行和有效消纳,对可能存在影响电网安全稳定运行的风险及时预警,从而避免风电功率随机波动造成电能损耗甚至电网崩溃。近年来,国内外学者进行了大量风速预测相关研究,风速预测水平得到一定程度的提升。单一预测模型虽简单容易实施,但其预测精度往往较低,难以满足风电场发电的需求。相比之下,基于优化算法和数据分解法的混合预测模型对风速预测性能有很大的提升。然而,现有的模型只是使用单目标优化算法,针对预测模型精度的提高,很少关注预测结果稳定性的增强,涉及多目标优化算法的混合预测模型更是少之又少。因此,这些模型往往会降低预测结果的稳定性,对风电场发电以及风电并网的安全性和稳定性带来巨大的挑战。针对如上问题,本文构建出一个基于粒子群算法和Elman神经网络的混合预测模型,本文所提出的混合预测模型不仅可以降低预测误差,提高风速预测精度,增强预测结果的稳定性,同时对风电场发电的完善,发展以及风电并网安全管理也大有裨益。

图片


2 部分代码

%% 基于ELM的工程费用预测
clc
clear all
close all
%% 读取数据
XX=xlsread('工程费用.xlsx');
data=XX';
% % 训练集比例
[W,D]=size(data);
ratio=0.8;
tr=round(ratio*size(data,1));
%% 训练数据
input_train = data(1:tr,1:D-1)';%输入属性特征数据
output_train= data(1:tr,D)';%输出 修改这里
%% 测试数据
input_test= data(tr+1:end,1:D-1)';%输入属性特征数据
output_test =data(tr+1:end,D)';%输出
%% 数据归一化
% 训练集
[inputn,inputps] = mapminmax(input_train);
[outputn,outputps] = mapminmax(output_train);
% 测试集
input1 = mapminmax('apply',input_test,inputps);
output1 = mapminmax('apply',output_test,outputps);
%% ELM网络设置
% 隐含层神经元数量
hiddennum=10;
%极限学习机神经网络的建立
[IW,B,LW,TF,TYPE] = elmtrain(inputn,outputn,hiddennum,'sig',0);%IW输入层和隐含层之间的连接权值,B隐含层神经元的阀值,LW隐含层与输出层的连接权值,TF隐含层神经元的激活函数
%TYPE表示极限学习机的应用类型,0表示回归、拟合,1表示分类,20表示隐含层神经元的个数
%训练输入的预测结果
Tn_sim= elmpredict(inputn,IW,B,LW,TF,TYPE);
%仿真结果反归一化
T_sim = mapminmax('reverse',Tn_sim,outputps);%反归一化的结果
% 评价指标
R1=eva1(output_train,T_sim);
mape1=eva2(output_train,T_sim);
figure
plot(T_sim,'b-*','linewidth',1)
hold on
plot(output_train,'r-.','linewidth',1)
legend('预测值','实际值')
xlabel('训练集')
ylabel('工程费用')
axis tight
string = {'训练集ELM';['(mape = ' num2str(mape1) ' R^2 = ' num2str(R1) ')']};
title(string)
% %测试集
TTn_sim = elmpredict(input1,IW,B,LW,TF,TYPE);
TT_sim = mapminmax('reverse',TTn_sim,outputps);
R2=eva1(output_test,TT_sim);
mape2=eva2(output_test,TT_sim);
figure
plot(TT_sim,'b-*','linewidth',1)
hold on
plot(output_test,'r-.','linewidth',1)
xlabel('测试集')
ylabel('工程费用')
legend('预测值','实际值')
axis tight
string = {'测试集ELM';['(mape = ' num2str(mape2) ' R^2 = ' num2str(R2) ')']};
title(string)

3 仿真结果


4 参考文献

[1]牟家奇. 基于主成分分析-极限学习机的港口国监督选船研究. Diss. 大连海事大学, 2020.



推荐阅读
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • Opencv提供了几种分类器,例程里通过字符识别来进行说明的1、支持向量机(SVM):给定训练样本,支持向量机建立一个超平面作为决策平面,使得正例和反例之间的隔离边缘被最大化。函数原型:训练原型cv ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了Java高并发程序设计中线程安全的概念与synchronized关键字的使用。通过一个计数器的例子,演示了多线程同时对变量进行累加操作时可能出现的问题。最终值会小于预期的原因是因为两个线程同时对变量进行写入时,其中一个线程的结果会覆盖另一个线程的结果。为了解决这个问题,可以使用synchronized关键字来保证线程安全。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 网址:https:vue.docschina.orgv2guideforms.html表单input绑定基础用法可以通过使用v-model指令,在 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • OCR:用字符识别方法将形状翻译成计算机文字的过程Matlab:商业数学软件;CUDA:CUDA™是一种由NVIDIA推 ... [详细]
author-avatar
你不知道的人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有