• 大小: 2.28MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-02
  • 语言: 其他
  • 标签:

资源简介

本文件功能:用BP神经网络预测温湿度。 本次仿真,预测模型为8*8*8*1,输入数据为359天数据(一个小时测一个数据,一天数据为24)。其中350天数据做训练样本,用来训练BP网络模型的权值和阈值,4天用来做测试样本,用来测试3天左右的温湿度预测值。 本次训练效果比较上次仿真较为准确,判定系数可以达到0.8左右(越靠近1表明仿真效果越好),预测值与实际值点状图基本围绕在主对角线左右,MSE平方误差可以达到0.01,BP网络预测输出图也可以看出预测值的变化趋势基本与期望值一致。 本次仿真存在不足: 1.未修改学习率、附加动量等参量没有解决BP网络收敛慢的问题。 2.没有使用全局优化的算法,没有解决BP容易陷入极值点的问题。 这种用BP网络来进行预测的模型网上有很多,但是大多数都是预测风力发电等,可能也是因为该BP模型是40年代所提出,我是没有找到有温湿度的预测,该代码纯属自己改写的,并且运行无误,现在分享出来,让大家节省一些时间去研究更有深度的算法。

资源截图

代码片段和文件信息

%% 该代码为基于双隐含层BP神经网络的预测
%% 清空环境变量
clc
clear

%% 训练数据预测数据提取及归一化
%装载输入输出数据
load temperature
load humidity
tday = 350;           %训练数据时间
sday = 10;           %预测数据时间
sdata = (tday+sday)*24;      %总的采集数据个数
oddata = 24;      %一天采集的数据个数
%在10天的数据中将10分钟的数据提取出来,总计2880个
temperature = Temp(1:1:sdata:);
humidity = Humidity(1:1:sdata:);
% information=[temp humidity];
% 初始化数据
[mn]=size(temperature);
n = 8;
% m = (m-sday*oddata/10)-oddata/10-n+1;
m = (m-sday*oddata)-oddata-n+1;
input = zeros(mn);
output = zeros(m1);
%找出训练数据和预测数据
for i = 1:m
%     input_train(i1:n/2) = temperature_10_14(i:i+5:);
%     input_train(in/2+1:n) = humidity(i:i+5:);
%     output_train(i:) = temp(i+oddata/10:);
    input_train(i1:n/2) = temperature(i:i+3:);
    input_train(in/2+1:n) = humidity(i:i+3:);
    output_train(i:) = temperature(i+oddata:);
end
[mn] = size(temperature);
n = 8;
% m = (m-tday*oddata/10)-oddata/10-n+1;
m = (m-tday*oddata)-oddata-n+1;
for i = 1:m
%     input_test(i1:n/2) = temp(i+tday*oddata/10:i+5+tday*oddata/10:);
%     input_test(in/2+1:n) = humidity(i+tday*oddata/10:i+5+tday*oddata/10:);
%     output_test(i:) = temp(i+oddata/10+tday*oddata/10:);
    input_test(i1:n/2) = temperature(i+tday*oddata:i+3+tday*oddata:);
    input_test(in/2+1:n) = humidity(i+tday*oddata:i+3+tday*oddata:);
    output_test(i:) = temperature(i+oddata+tday*oddata:);
end
input_train=input_train‘;
output_train=output_train‘;
input_test = input_test‘;
output_test=output_test‘;

%选连样本输入输出数据归一化
[inputninputps]=mapminmax(input_train01);
[outputnoutputps]=mapminmax(output_train01);

%% BP网络训练
% %初始化网络结构
net=newff(inputnoutputn[8 8]);

net.trainParam.epochs=200;
net.trainParam.lr=0.1;
net.trainParam.goal=0.0000004;

%网络训练
[nettr]=train(netinputnoutputn);

%% BP网络预测
%预测数据归一化
inputn_test=mapminmax(‘apply‘input_testinputps01);


%网络预测输出
an=sim(netinputn_test);

%网络输出反归一化
BPoutput=mapminmax(‘reverse‘anoutputps);

%% 结果分析

figure(1)
subplot(231)
plot(BPoutput‘:og‘)
hold on
plot(output_test‘-*‘);
legend(‘预测输出‘‘期望输出‘)
title(‘BP网络预测输出‘‘fontsize‘12)
ylabel(‘函数输出‘‘fontsize‘12)
xlabel(‘样本‘‘fontsize‘12)

%预测误差
error=BPoutput-output_test;
subplot(232)
plot(error‘-*‘)
title(‘BP网络预测误差‘‘fontsize‘12)
ylabel(‘误差‘‘fontsize‘12)
xlabel(‘样本‘‘fontsize‘12)

subplot(233)
plot((output_test-BPoutput)./BPoutput‘-*‘);
title(‘神经网络预测误差百分比‘)
ylabel(‘误差百分比‘‘fontsize‘12)
xlabel(‘样本‘‘fontsize‘12)

errorsum=sum(abs(error));
subplot(234)
plot(errorsum‘-*‘);
title(‘神经网络预测误差绝对值‘)
ylabel(‘误差绝对值‘‘fontsize‘12)
xlabel(‘样本‘‘fontsize‘12)

% a = tr.num_epochs;
% MSE = mse(error);
subplot(235)
plot(tr.epochtr.perf‘‘r‘tr.epochtr.vperf‘‘:g‘tr.epochtr.tperf‘‘-.b‘);
% legend([‘终止代数=‘ num2str(a)])
legend(‘训练‘‘确证‘‘测试‘-1)
title(‘误差曲线‘)
ylabel(‘MSE误差平方‘‘fontsize‘12)
xlabel(‘进化代数‘‘fontsize‘12)

fenmu = sum((output_test-mean(BPoutput)).^2);
fenzi = sum((output_test-BPoutput).^2);
R = 1-fenzi/fenmu;
subplot(236)
plot(BPoutputoutput_test‘.‘);
legend([‘R =

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3378  2019-10-14 21:57  BP预测温度模型_2019.10.14\BP_Hidden.m

     文件     134465  2019-10-14 18:21  BP预测温度模型_2019.10.14\humidity.mat

     文件        882  2019-10-14 21:52  BP预测温度模型_2019.10.14\readme.txt

     文件        936  2019-10-14 18:24  BP预测温度模型_2019.10.14\simpletime.m

     文件     303265  2019-10-14 18:21  BP预测温度模型_2019.10.14\temperature.mat

     文件     126722  2019-10-14 21:31  BP预测温度模型_2019.10.14\temperature_prediction.jpg

     文件   16197871  2019-02-19 00:58  BP预测温度模型_2019.10.14\WeatherHistory.csv

     目录          0  2019-10-14 21:48  BP预测温度模型_2019.10.14

----------- ---------  ---------- -----  ----

             16767519                    8


评论

共有 条评论