【风电功率预测】海洋捕食算法MPA优化BP神经网络风电功率预测【含Matlab源码 3770期】-程序员宅基地

技术标签: matlab  Matlab神经网络预测与分类 (进阶版)  

博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
个人主页:海神之光
代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

一、海洋捕食算法MPA优化BP神经网络风电功率预测

1 海洋捕食算法
海洋捕食算法(Marine Predators Algorithm,MPA)是一种受到海洋捕食行为启发的群体智能优化算法。它模拟了海洋生态系统中的捕食行为,通过个体之间的相互作用和信息交流来寻找最优解。

海洋捕食算法的基本原理是将问题转化为一组个体在搜索空间中的位置,这些个体被称为捕食者和猎物。捕食者根据自身适应度和周围猎物的信息选择最佳的位置,而猎物则根据自身适应度和周围捕食者的信息选择逃避或者被捕食的策略。

海洋捕食算法的主要步骤如下:
(1)初始化种群:随机生成一组捕食者和猎物个体,并为每个个体分配初始位置和速度。
(2)评估适应度:根据问题的优化目标,计算每个个体的适应度值。
(3)更新位置和速度:根据捕食者和猎物个体之间的相互作用和信息交流,更新每个个体的位置和速度。
(4)选择最优解:根据适应度值,选择出最优的解决方案作为当前的最优解。
(5)终止条件判断:判断是否满足终止条件,如果满足则结束算法,否则回到第3步继续迭代。
海洋捕食算法具有一定的全局搜索能力和收敛性能,适用于解决各种优化问题,如函数优化、参数优化、组合优化等。它在某些问题上能够提供较好的性能和效果。

2 BP神经网络
2.1 BP神经网络的结构组成
BP神经网络结构组成:2输入1输出,5个隐含层的,也称为2-5-1网络结构;
Neural Network:神经网络
Input:输入
Hidden LayerOutput Layer:隐藏层输出层
Output Layer:输出层
Output :输出
在这里插入图片描述
2.2 BP神经网络训练界面的参数
2.2.1 BP神经网络算法
Algorithms:算法
Data Division:Random(divider and) 数据划分:随机(除数和)
Training:Levenberg-Marquardt(train lm) 训练:表示训练采用的方法
Performance:Mean Squared Error(mse) 性能:均方误差(mse) 用均方误差衡量网络性能
Calculations:MEX 计算方式:MEX

2.2.2 BP神经网络进程
Progress 进程
Epoch: 训练次数
Time: 训练时间
Performance: 网络性能
Gradient: 梯度算子
Mu: 误差精度
Validation Checks: 泛化性( 表示BP神经网络在训练过程中,如果均方误差(MSE)连续6次不降反升,则网络停止训练)

2.2.3 BP神经网络情节
Plots 绘图
Performance 网络性能
Training State 训练阶段参数变化情况
Regression 相关性分析

2.3 BP神经网络预测步骤
(1)读取数据
(2)设置训练数据和预测数据
(3)训练样本数据归一化
(4)构建BP神经网络
(5)网络参数配置(训练次数,学习速率,训练目标最小误差.等)
(5)BP神经网络训练
(6)测试样本归一化
(7)BP神经网络预测
(8)预测结果反归一化与误差计算
(8)验证集的真实值与预测值误差比较

2.4 BP神经网络预测案例代码

%% 此程序为matlab编程实现的BP神经网络
% 清空环境变量
clear
close all
clc

%%第一步 读取数据
input=randi([1 20],200,2);  %载入输入数据
output=input(:,1)+input(:,2);  %载入输出数据

%% 第二步 设置训练数据和预测数据
input_train = input(1:190,:)';
output_train =output(1:190,:)';
input_test = input(191:200,:)';
output_test =output(191:200,:)';
%节点个数
inputnum=2; % 输入层节点数量
hiddennum=5;% 隐含层节点数量
outputnum=1; % 输出层节点数量
%% 第三本 训练样本数据归一化
[inputn,inputps]=mapminmax(input_train);%归一化到[-1,1]之间,inputps用来作下一次同样的归一化
[outputn,outputps]=mapminmax(output_train);
%% 第四步 构建BP神经网络
net=newff(inputn,outputn,hiddennum,{
    'tansig','purelin'},'trainlm');% 建立模型,传递函数使用purelin,采用梯度下降法训练

W1= net. iw{
    1, 1};%输入层到中间层的权值
B1 = net.b{
    1};%中间各层神经元阈值

W2 = net.lw{
    2,1};%中间层到输出层的权值
B2 = net. b{
    2};%输出层各神经元阈值

%% 第五步 网络参数配置( 训练次数,学习速率,训练目标最小误差等)
net.trainParam.epochs=1000;         % 训练次数,这里设置为1000次
net.trainParam.lr=0.01;                   % 学习速率,这里设置为0.01
net.trainParam.goal=0.00001;                    % 训练目标最小误差,这里设置为0.00001

%% 第六步 BP神经网络训练
net=train(net,inputn,outputn);%开始训练,其中inputn,outputn分别为输入输出样本

%% 第七步 测试样本归一化
inputn_test=mapminmax('apply',input_test,inputps);% 对样本数据进行归一化

%% 第八步 BP神经网络预测
an=sim(net,inputn_test); %用训练好的模型进行仿真

%% 第九步 预测结果反归一化与误差计算     
test_simu=mapminmax('reverse',an,outputps); %把仿真得到的数据还原为原始的数量级
error=test_simu-output_test;      %预测值和真实值的误差

%%第十步 真实值与预测值误差比较
figure('units','normalized','position',[0.119 0.2 0.38 0.5])
plot(output_test,'bo-')
hold on
plot(test_simu,'r*-')
hold on
plot(error,'square','MarkerFaceColor','b')
legend('期望值','预测值','误差')
xlabel('数据组数')
ylabel('样本值')
title('BP神经网络测试集的预测值与实际值对比图')

[c,l]=size(output_test);
MAE1=sum(abs(error))/l;
MSE1=error*error'/l;
RMSE1=MSE1^(1/2);
disp(['-----------------------误差计算--------------------------'])
disp(['隐含层节点数为',num2str(hiddennum),'时的误差结果如下:'])
disp(['平均绝对误差MAE为:',num2str(MAE1)])
disp(['均方误差MSE为:       ',num2str(MSE1)])
disp(['均方根误差RMSE为:  ',num2str(RMSE1)])

二、部分源代码

%% 基于海洋捕食优化的BP神经网络预测
clear all
clc
close all
warning off;
%% 导入数据
load data
% 训练集——1900个样本
P_train=input(1:1900,:)‘;
T_train=output(1:1900);
% 测试集——100个样本
P_test=input(1901:2000,:)’;
T_test=output(1901:2000);

%% 归一化
% 训练集
[Pn_train,inputps] = mapminmax(P_train,-1,1);
Pn_test = mapminmax(‘apply’,P_test,inputps);
% 测试集
[Tn_train,outputps] = mapminmax(T_train,-1,1);
Tn_test = mapminmax(‘apply’,T_test,outputps);
%% 构造网络结构
%创建神经网络
inputnum = 2; %inputnum 输入层节点数 4维特征
hiddennum = 10; %hiddennum 隐含层节点数
outputnum = 1; %outputnum 隐含层节点数
%% BP
net = newff( minmax(Pn_train) , [hiddennum outputnum] , { ‘logsig’ ‘purelin’ } , ‘traingdx’ ) ;
%设置训练参数
net.trainparam.show = 50 ;
net.trainparam.epochs = 200 ;
net.trainparam.goal = 0.01 ;
net.trainParam.lr = 0.01 ;
net = train( net, Pn_train , Tn_train ) ;
%测试集预测
Y = sim( net , Pn_test );
error = Y - Tn_test;

%% 构造海洋捕食优化器
popsize = 20;%种群数量
Max_iteration = 50;%最大迭代次数
lb = -2;%权值阈值下边界
ub = 2;%权值阈值上边界
% inputnum * hiddennum + hiddennumoutputnum 为权值的个数
% hiddennum + outputnum 为阈值的个数
dim = inputnum * hiddennum + hiddennum
outputnum + hiddennum + outputnum ;% inputnum * hiddennum + hiddennum*outputnum维度
fobj = @(x)funBP(x,inputnum,hiddennum,outputnum,Pn_train,Tn_train,Pn_test,Tn_test);
[Best_score,Best_pos,MPA_cg_curve]=MPA(popsize,Max_iteration,lb,ub,dim,fobj);
[fitness,Y_MPA ] = funBP(Best_pos,inputnum,hiddennum,outputnum,Pn_train,Tn_train,Pn_test,Tn_test);
figure
plot(MPA_cg_curve,‘Color’,‘r’)
title(‘Objective space’)
xlabel(‘Iteration’);
ylabel(‘Best score obtained so far’);
legend(‘MPA’)
grid on;
%测试集预测

%% 作图
figure
plot(Tn_test,‘k-p’,‘linewidth’,1)
hold on
plot(Y,‘c-s’,‘linewidth’,1,‘markerfacecolor’,‘b’)
hold on
plot(Y_MPA,‘g-o’,‘linewidth’,1,‘markerfacecolor’,‘r’)
legend(‘真实值’,‘BP预测值’,‘海洋捕食算法优化BP预测值’)
xlabel(‘测试样本编号’)
ylabel(‘指标值’)
title(‘海洋捕食算法优化前后的BP神经网络预测值和真实值对比图’)

error = Y_MPA - Tn_test;
% 均方误差
E1 = mse(error);
figure
plot(error,‘b:o’)
title(‘海洋捕食BP神经网络预测得到的误差分布’)
xlabel(‘index’)
ylabel(‘误差’)
grid on
disp([‘海洋捕食BP神经网络得到的MSE:’,num2str(E1)])

三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]赵侃,师芸,牛敏杰,王虎勤.基于改进麻雀搜索算法优化BP神经网络的PM2.5浓度预测[J].测绘通报. 2022(10)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/KeepingMatlab/article/details/136335074

智能推荐

Windows目录下SysWow64文件夹与System32文件夹-程序员宅基地

文章浏览阅读9.2k次,点赞10次,收藏14次。首先说一句,被坑不浅……1. System32Windows 操作系统的系统文件夹。是操作系统的神经中枢.文件夹中包含了大量的用于Windows操作系统的文件.这里主要用于存储 DLL 文件,控制面板小程序(.CPL), 设备驱动 (.drv), 帮助文件 (.hlp 和 .cnt), MS-DOS 工具 (.com), 语言支持文件 (.nls), 屏幕保护 (.scr), 安装信息文件 (..._syswow64

windows(win7)+ MATLAB 配置 SNOPT7-程序员宅基地

文章浏览阅读1.5k次。0 下载SNOPT-matlab :https://github.com/snopt/snopt-matlab (download zip)1 申请license(https://ccom.ucsd.edu/~optimizers/downloads/,填写信息(非美国的教育机构)即可,快的话2分钟即可授权)2 邮箱中,下载license & 邮件链接中 的 mex文件(sn..._snopt

SFTP 子系统申请已拒绝 请确保ssh连接的sftp子系统设置有效_-bash: /etc/init.d/sshd: no such file or directory-程序员宅基地

文章浏览阅读4.3k次。SFTP 子系统申请已拒绝 请确保ssh连接的sftp子系统设置有效1.Xftp连接出错2.解决方案3.遇到的问题1.Xftp连接出错2.解决方案# 1.编辑文件vim /etc/ssh/sshd_config# 2.修改以下内容Subsystem sftp /usr/libexec/openssh/sftp-server# 3.重新加载/etc/init.d/sshd reloa..._-bash: /etc/init.d/sshd: no such file or directory

超级详细的使用VMware安装Centos7环境_vmware centos xfp-程序员宅基地

文章浏览阅读981次,点赞3次,收藏8次。大数据学习安装环境安装VMware安装Centos7分配IP地址插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入安装环境你好! 欢迎来到大数据劝退系列之环境安装。正如你所视,大多数准备学习大数据或对大数据稍有兴趣的人,在经历一这枯燥无味,问题频出的环境安装时,都会火大的让人抓头。所以,如_vmware centos xfp

ucharts x轴数据多小程序端滚动卡顿问题_小程序使用ucharts卡顿-程序员宅基地

文章浏览阅读694次。uniapp 使用 ucharts 小程序端滑动非常卡如图 x 轴数据量特别多ucharts数据多的情况下小程序端卡顿严重视频里面上面的图表数据多滑动明显卡顿,下面的数据少滑动正常,只有微信小程序出现卡顿问题,app端没有问题。网上有帖子给出的解决方案是减小图表拖拽每秒渲染次数 touchMoveLimit: 20, 默认值是 20,尝试改为10、1、0都不起作用。_小程序使用ucharts卡顿

libreoffice 7 ( arm64 ubuntu20.04 环境) 源码编译_libreoffice arm-程序员宅基地

文章浏览阅读2.5k次。kkfileviewlibreoffice_libreoffice arm

随便推点

为了让手表更好用,苹果找人先“戴”了7年半-程序员宅基地

文章浏览阅读184次。很 多时候,Apple Watch 远没有 iPhone 那么惹人关注,一来智能手表没有那么成熟的市场需求,二来大 众对可穿戴设备的关注也越 趋疲态。但即 便这样,也未能改变苹果想让 Apple Watch 变得更好用 的努 力 和事实。为此,在过去 5 年里,苹果特地建了一 幢楼,让1万名志愿者结合器械做不同的动作,以此做了 33000 次的记录,还..._苹果手表有让你的生活变得更方便吗

【初/中级前端面经】中小型公司面试时都会问些什么?-程序员宅基地

文章浏览阅读2.2k次,点赞5次,收藏28次。前言现在百度,阿里,腾讯,字节跳动等大厂的面试真题、面经随处可见。甚至还有多家教育机构专门针对这一部分设计了课程,但是中小厂的面经倒是很稀缺。但其实中小厂面经的需求还是有的,很多的开发者可..._数据请求从发起到接收数据之间发生了什么

卸载Linux自带的JDK并配置自己的jdk_linux 有默认jdk 和自己配置的jdk-程序员宅基地

文章浏览阅读97次。1.用下面命令可查看自带jdk版本已经名称rpm -qa | grep gcjrpm -qa | grep jdkrpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64rpm -e --nodeps java-1.6.0-openjdk-devel-1.6.0.0-1.66.1.13.0.el6.x86_6..._linux 有默认jdk 和自己配置的jdk

关于SearchView设置字体颜色,提示字体及背景的解决方法_searchview queryhint 颜色适配-程序员宅基地

文章浏览阅读3.9k次。最近由于项目的需要搜索功能,我们为了方便,则用android自带的搜索组件------SearchView,使用起来方便快捷,但是SearchView默认的提示字和需要输入的字符往往与界面不是很匹配,导致用户体现效果不是很好,由于本人是菜鸟,遇见问题的第一反应就是查找资料和找度娘,在查找的过程中发现许多初学的猿们也在为这个问题忧愁,所以我就把我所了解的一小小的解决方法分享出来,是大家一起学习。言归_searchview queryhint 颜色适配

解决树莓派4b使用vnc远程桌面连接时遇到Cannot currently show the desktop问题_树莓派vnc连接不显示桌面-程序员宅基地

文章浏览阅读842次,点赞8次,收藏13次。在较新的机器与系统上(树莓派4b+2021年5月份之后的32位桌面版系统),树莓派检测没插显示器,就关闭图像输出,VNC自然就获取不到桌面图像了。_树莓派vnc连接不显示桌面

HashMap的四种遍历方式_hashmap循环-程序员宅基地

文章浏览阅读7.2k次,点赞4次,收藏19次。第一种方式:采用for循环遍历key,然后根据key从HashMap中获取值代码如下 @Test void mapTraversal1() { HashMap<String, String> map = new HashMap<>(); map.put("key1", "value1"); map.put("key2", "value2"); map.put("key3", "value3"); _hashmap循环

推荐文章

热门文章

相关标签