基于bp神经网络的含水率预测模型matlab仿真(代码片段)

fpga和matlab fpga和matlab     2022-12-11     809

关键词:

欢迎订阅《FPGA学习入门100例教程》、《MATLAB学习入门100例教程

目录

一、理论基础

二、核心程序

三、测试结果


一、理论基础

       在人工神经网络的发展历史上,感知机(Multilayer Perceptron,MLP)网络曾对人工神经网络的发展发挥了极大的作用,也被认为是一种真正能够使用的人工神经网络模型,它的出现曾掀起了人们研究人工神经元网络的热潮。单层感知网络(M-P模型)做为最初的神经网络,具有模型清晰、结构简单、计算量小等优点。但是,随着研究工作的深入,人们发现它还存在不足,例如无法处理非线性问题,即使计算单元的作用函数不用阀函数而用其他较复杂的非线性函数,仍然只能解决线性可分问题.不能实现某些基本功能,从而限制了它的应用。增强网络的分类和识别能力、解决非线性问题的唯一途径是采用多层前馈网络,即在输入层和输出层之间加上隐含层。构成多层前馈感知器网络。
      20世纪80年代中期,David Runelhart。Geoffrey Hinton和Ronald W-llians、DavidParker等人分别独立发现了误差反向传播算法(Error Back Propagation Training),简称BP,系统解决了多层神经网络隐含层连接权学习问题,并在数学上给出了完整推导。人们把采用这种算法进行误差校正的多层前馈网络称为BP网。
BP神经网络具有任意复杂的模式分类能力和优良的多维函数映射能力,解决了简单感知器不能解决的异或(Exclusive OR,XOR)和一些其他问题。从结构上讲,BP网络具有输入层、隐藏层和输出层;从本质上讲,BP算法就是以网络误差平方为目标函数、采用梯度下降法来计算目标函数的最小值。

      BP神经网络,即Back Propagation神经网络,其本质是一种基于误差反馈传播的神经网络算法。从结构上讲,BP神经网络是由一个信息的正向传播网络和一个误差的反向传播网络两个模块构成。BP神经网络的基本结构如下图所示:

       从图2的结构可知,BP神经网络主要由输入层,隐含层以及输出层构成。来自外界的信息通过输入层传输进入到隐含层进行处理,并由输出层输出处理结果。当BP神经网络的输出结果和其期望结果之间的误差较大的时候,则进入反向传播阶段,并进行进行审计网络权值的修正,直到输出结果和期望结果误差满足一定条件为止。

 

 

 BP神经网络模型包括其输入输出模型、作用函数模型、误差计算模型和自学习模型。

二、核心程序

clc;
clear;
close all;
warning off;
rand('state',0);

%%
%输入数据为温度T,风速V,厚度h以及时间t
Ni         = 4;
No         = 1;
Num_Hidden = 8;%隐含层数量
%输出为水分比FSB
Num        = Ni + No;
%%
%训练数据设置
data = xlsread('datas\\data.xlsx'); 
[R,C] = size(data);
for i = 1:C/Num
    tmps = [];
    tmps = data(:,Num*(i-1)+1:Num*(i));
    tmps_check = tmps(:,1);
    tmps(isnan(tmps_check),:)=[];
    Train_input1i  = tmps(:,1:Ni);
    Train_output1i = tmps(:,Ni+1:Ni+No);
end

 

%%
%输入BP神经网络进行训练
P = [];
T = [];
for i=1:length(Train_input1);
    P = [P;Train_input1i];
    T = [T;Train_output1i];
end
 

%BP神经网络参数
net = newff(P',T',Num_Hidden);
net.adaptFcn='adaptwb';  
net.trainParam.mu=1.0000e-05;  
net.trainParam.mu_dec=0.1000;  
net.trainParam.mu_inc=10;  
net.trainParam.mu_max=1e10;  
net.trainparam.mc=0.2;                                                                                                                       
net.trainparam.lr=0.005; 
net.trainparam.epochs=2000; 
net.trainparam.goal=1e-9; 
% net.trainParam.max_fail=6;  
% net.trainParam.min_grad=1e-7;  
% net.performFcn='mse';  
net.trainFcn       ='trainlm';
net = train(net,P',T');   

save model.mat net
%输出BP神经网络的参数
Input_W        = net.IW1,1  
LayerOne_Bias  = net.b1
LayerOneToTwo_W= net.LW2,1 
LayerTwo_Bias  = net.b2  
%%
%通过BP神经网络训练后测试
for i = 1:length(Train_input1);
    y1i = sim(net,Train_input1i');
end
 
%%
%各种指标的输出分析
NAME1 = ['T=55,v=0.3,h=3']; 
NAME2 = ['T=55,v=0.6,h=3'];
NAME3 = ['T=55,v=0.7,h=3'];
NAME4 = ['T=55,v=1.2,h=3'];
NAME5 = ['h=3,T=55,v=0.9'];  
NAME6 = ['h=6,T=55,v=0.9'];
NAME7 = ['h=9,T=55,v=0.9'];
NAME8 = ['h=12,T=55,v=0.9'];
NAME9 = ['T=45,v=0.9,h=3'];  
NAME10= ['T=55,v=0.9,h=3'];
NAME11= ['T=65,v=0.9,h=3'];
NAME12= ['T=60,v=0.9,h=3'];
NAME13= ['T=50,v=0.9,h=3']; 
 
for i = 1:13;
    figure;
    subplot(211);
    plot(y1i,'ro');
    hold on
    plot(Train_output1i,'b');
    xlabel('times');
    ylabel('水分比');
    legend('BP神经网络输出水分比','实际测量水分比');
    title(NAMEi);
    grid on
    subplot(212);
    plot(y1i-Train_output1i' ,'b-*');
    xlabel('times');
    ylabel('水分比误差');
    grid on
    ylim([-1,1]);
end

%风速变化显示
figure;
subplot(121);
plot(y11,'r-o');
hold on
plot(y12,'b-s');
hold on
plot(y13,'k-*');
hold on
plot(y14,'m-^');
hold on
xlabel('times');
ylabel('水分比');
legend('T=55,v=0.3,h=3','T=55,v=0.6,h=3','T=55,v=0.9,h=3','T=55,v=1.2,h=3');
grid on
title('BP神经网络输出');
ylim([0,1.2]);
subplot(122);
plot(Train_output11,'r-o');
hold on
plot(Train_output12,'b-s');
hold on
plot(Train_output13,'k-*');
hold on
plot(Train_output14,'m-^');
hold on
xlabel('times');
ylabel('水分比');
legend('T=55,v=0.3,h=3','T=55,v=0.6,h=3','T=55,v=0.9,h=3','T=55,v=1.2,h=3');
grid on
title('测量值');
grid on
ylim([0,1.2]);

%厚度变化显示
figure;
subplot(121);
plot(y15,'r-o');
hold on
plot(y16,'b-s');
hold on
plot(y17,'k-*');
hold on
plot(y18,'m-^');
hold on
xlabel('times');
ylabel('水分比');
legend('h=3,T=55,v=0.9','h=6,T=55,v=0.9','h=9,T=55,v=0.9','h=12,T=55,v=0.9');
grid on
title('BP神经网络输出');
ylim([0,1.2]);
subplot(122);
plot(Train_output15,'r-o');
hold on
plot(Train_output16,'b-s');
hold on
plot(Train_output17,'k-*');
hold on
plot(Train_output18,'m-^');
hold on
xlabel('times');
ylabel('水分比');
legend('h=3,T=55,v=0.9','h=6,T=55,v=0.9','h=9,T=55,v=0.9','h=12,T=55,v=0.9');
grid on
title('测量值');
grid on
ylim([0,1.2]);

%温度变化显示
figure;
subplot(121);
plot(y19,'r-o');
hold on
plot(y110,'b-s');
hold on
plot(y111,'k-*');
hold on
plot(y112,'m-^');
hold on
plot(y113,'c->');
hold on
xlabel('times');
ylabel('水分比');
legend('T=45,v=0.9,h=3','T=55,v=0.9,h=3','T=65,v=0.9,h=3','T=60,v=0.9,h=3','T=50,v=0.9,h=3');
grid on
title('BP神经网络输出');
ylim([0,1.2]);
subplot(122);
plot(Train_output19,'r-o');
hold on
plot(Train_output110,'b-s');
hold on
plot(Train_output111,'k-*');
hold on
plot(Train_output112,'m-^');
hold on
plot(Train_output113,'c->');
hold on
xlabel('times');
ylabel('水分比');
legend('T=45,v=0.9,h=3','T=55,v=0.9,h=3','T=65,v=0.9,h=3','T=60,v=0.9,h=3','T=50,v=0.9,h=3');
grid on
title('测量值');
grid on
ylim([0,1.2]);

 

三、测试结果

 

 

 A05-60

基于bp神经网络/grnn神经网络的电力预测matlab仿真(代码片段)

...景三、MATLAB程序四、仿真结论分析一、理论基础    BP神经网络,即BackPropagation神经网络,其本质是一种基于误差反馈传播的神经网络算法。从结构上讲,BP神经网络是由一个信息的正向传播网络和一个误差的反向传... 查看详情

基于bp神经网络的多因素房屋价格预测matlab仿真(代码片段)

...B仿真四、仿真结论分析五、参考文献一、理论基础    神经网络主要由处理单元、网络拓扑结构、训练规则组成。处理单元是神经网络的基本操作单元,用以模拟人脑神经元的功能。一个处理单元有多个输入、输出,... 查看详情

优化预测基于matlab粒子群算法优化bp神经网络预测温度含matlab源码1302期

一、粒子群算法及RBF简介1粒子群算法简介1.1引言自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣所在。生物学家CraigReynolds在1987年提出了一个非常有影响的鸟群聚集模型,在他的仿真中,每一个个体都遵循:避免与邻... 查看详情

bp回归预测基于matlab思维进化算法优化bp神经网络回归预测含matlab源码2031期(代码片段)

一、思维进化算法及BP神经网络简介1思维进化算法的选择与改进1.1算法选择深度学习与人工智能发展迅速,在疾病预测方面也起到至关重要的作用。通过对比Logistic回归模型和BP神经网络两种模型,并将模型预测结果与传... 查看详情

bp预测基于鲸鱼算法优化bp神经网络实现数据预测matlab源码(代码片段)

 一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网络预... 查看详情

bp预测基于遗传算法优化bp神经网络实现数据预测matlab源码(代码片段)

    一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网... 查看详情

bp预测基于鲸鱼算法优化bp神经网络实现数据预测matlab源码(代码片段)

  一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网络... 查看详情

bp预测基于遗传算法优化bp神经网络实现数据预测matlab源码(代码片段)

   一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网... 查看详情

bp预测基于粒子群算法优化bp神经网络实现数据预测matlab源码(代码片段)

     一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经... 查看详情

bp预测基于粒子群算法优化bp神经网络实现数据预测matlab源码(代码片段)

    一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网... 查看详情

bp预测基于原子搜索算法优化bp神经网络实现数据预测matlab源码(代码片段)

  一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网络... 查看详情

bp预测基于原子搜索算法优化bp神经网络实现数据预测matlab源码(代码片段)

   一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网... 查看详情

基于bp/grnn神经网络的安全性数据预测matlab仿真(代码片段)

... 4.智能控制,智能优化5.其他一、理论基础    广义回归神经网络的理论基础是非线性 查看详情

matlab基于灰狼算法改进bp神经网络实现数据预测(代码片段)

一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网络预... 查看详情

matlab基于bp神经网络的预测算法(代码片段)

...、咨询、答疑2、内容说明略3、仿真分析%%该代码为基于BP神经网络的预测算法%%清空环境变量clcclearcloseall%%训练数据预测数据提取及归一化%下载输入输出数据input=xlsread('数据训练1.xlsx','sheet1');output=xlsread(' 查看详情

基于bp神经网络kmeans聚类和hc模型的火焰特征数据识别算法matlab仿真

目录一、理论基础二、案例背景三、MATLAB程序四、仿真结论分析一、理论基础    为了简化计算,可对 查看详情

bp预测基于logistic混沌映射改进的原子搜索算法优化bp神经网络实现数据预测matlab源码(代码片段)

    一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网... 查看详情

bp预测基于logistic混沌映射改进的原子搜索算法优化bp神经网络实现数据预测matlab源码(代码片段)

   一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网... 查看详情