【风电功率预测】海洋捕食算法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

智能推荐

用CPLEX写个数学模型就这么难?_cplex does not support nonconvex quadratic constra-程序员宅基地

文章浏览阅读6.4k次,点赞20次,收藏148次。一、前言小编有个小伙伴,隔三差五就过来跟我说:这个模型CPLEX怎么写呢?我说我不是给你讲过好多次?他说CPLEX太复杂了,俺没学过学不会呢。Similarly,遇到这个问题的不止小编这个小伙伴。很多刚入行的小伙伴都表示CPLEX对初学者来说并不是很友好,就连学习资料都不知道去哪里看,不像Excel或者Word,百度一下出来好多资料。其实吧,这玩意儿并没有大家想的那么难,尤其是简单使用CPLEX求解一个模型的话,用来用去都是那几个函数而已。下面小编来给大家好好理一下,看完相信你也能用CPLEX跑一下论_cplex does not support nonconvex quadratic constraints

R语言在矢量地图上绘制分级设色散点图_r语言在地图上绘制不同颜色散点图-程序员宅基地

文章浏览阅读1.9k次。实现效果:R语言中ggplot2包提供绘制地图、散点图的方法,是实现在矢量地图上绘制分级设色散点图核心包绘制多边形geom_polygon(data,aes,fill, colour) 绘制点 geom_point .....0、需要用到的包library(maptools) # 读取shp数据常用,可以将shp数据读取为SpatialPolygonsDataFrame 格式,为DataFrame(数据帧)子类,也称为空间多边形数据帧library(ggplot2) #绘图核..._r语言在地图上绘制不同颜色散点图

【matlab】求空间两个向量之间的夹角_matlab 向量夹角-程序员宅基地

文章浏览阅读3.1w次,点赞28次,收藏73次。原点O[0,0,0]OA=[1,1,0];OB=[1,0,0];sigma = acos(dot(OA,OB)/(norm(OA)norm(OB)));%弧度制sigma/pi180%换算成角度_matlab 向量夹角

论文阅读笔记——野外和非侵入性遗传方法评估棕熊种群规模_棕熊 微卫星标记-程序员宅基地

文章浏览阅读497次。论文阅读笔记论文简介标题期刊情况论文内容摘要介绍论文简介标题英文:《An evaluation of field and non-invasive genetic methodsto estimate brown bear (Ursus arctos) population size》翻译:《野外和非侵入性遗传方法评估棕熊种群规模》期刊情况期刊:《Biological Conservation》期刊情况:2020年影响因子:4.711JCR分区 / 中科院分区:Q1 / 2区审_棕熊 微卫星标记

如何将手机变成一个(Linux)服务器_手机改服务器-程序员宅基地

文章浏览阅读2.2w次,点赞16次,收藏103次。看到就是赚到_手机改服务器

java double转String,去掉科学计数法_数值类型转成字符串后,不要用科学计数法-程序员宅基地

文章浏览阅读1.8k次。在数值型double转String格式时,如果同时遇到数值较大的double和小数位较多的double处理方法:double a = 123456789.10001;double b = 1.987654321;System.out.println("a: " + a);System.out.println("b: " + b);java.text.NumberFormat NF = java.text.NumberFormat.getInstance();//设置数值的小数部分所允许的最大._数值类型转成字符串后,不要用科学计数法

随便推点

QUESTION 41-benefits of installing Grid Infrastructure software_which are two benefits of installing grid infrastr-程序员宅基地

文章浏览阅读97次。What are two benefits of installing Grid Infrastructure software for a stand-alone server before installing and creating an Oracle database? (Choose two.)A. Effectively implements role separationB. Enables you to take advantage of Oracle Managed Files.C._which are two benefits of installing grid infrastructure software for a stan

基于SegNet和UNet的遥感图像分割代码解读_unet遥感图像分割-程序员宅基地

文章浏览阅读5.6k次,点赞9次,收藏104次。基于SegNet和UNet的遥感图像分割代码解读目录基于SegNet和UNet的遥感图像分割代码解读前言概述代码框架代码细节分析划分数据集gen_dataset.pyUNet模型训练unet_train.py模型融合combind.pyUNet模型预测unet_predict.py分类结果集成ensemble.pySegNet模型训练segnet_train.py前言上了一学期的课,趁着寒假有时间,看了往年论文和部分比赛的代码,现在整理出来。整理的这部分内容以实际操作为主,主要讲解代码部分的分析。概_unet遥感图像分割

Vue组件开发——异步组件_vue2 defineasynccomponent-程序员宅基地

文章浏览阅读566次。一、引入我们在讲异步组件之前,我们再来回顾一下webpack打包时的分包操作。我们可以使用import()异步加载模块来实现分包操作。import函数的返回值是一个Promise,所以我们可以使用then进行下一步处理。如下图所示为打包后的文件目录,因为我们如果同步加载math.js文件,此时就不存在中间的文件,此时当浏览器请求资源时,就会很慢。二、vue中的异步组件通过上面的webpack配置我们明白了为什么要进行分包操作,此时我们想一个问题,如果一个网站的页面在用户第一次浏览器时就将全部页面_vue2 defineasynccomponent

解决ToolBox升级IDEA后导致之前配置的插件消失问题(附:IDEA2020版本前后配置文件地址)【修理篇】_toolbox 下载的ide没有copy之前的插件进来-程序员宅基地

文章浏览阅读2.5k次。【修理篇】ToolBox升级IDEA后之前配置的插件消失问题(附:IDEA2020版本前后配置文件地址)    在IDEA的插件配置地址都是可配置的,通过修改idea.properties可指定插件和logs的地址等这个配置文件地址在IDEA2020.1版本后出现了一些变化。如下:2020.1版本之前:配置文件地址在IDEA安装目录的bin目录下。2020.1版本之后:在此版本之后有两种方法。1.从C盘\User\Administrator里开始找AppData\Roaming\JetBra_toolbox 下载的ide没有copy之前的插件进来

File Monitor on WinRT-程序员宅基地

文章浏览阅读48次。http://lunarfrog.com/blog/filesystem-change-notifications Use CreateFileQueryWithOptions to add file monitor(win32 use file watcher).* By default it FolderDepth is Shallow(root folder only), D..._file monitor on window server

vue2 + electron 用超简单方法搭建前端桌面应用_vue 2.0 安装electron-程序员宅基地

文章浏览阅读564次。vue2 + electron 非常简单的搭建方法_vue 2.0 安装electron

推荐文章

热门文章

相关标签