加热炉钢坯出炉温度PCA-BP的预测模型研究

加热炉钢坯出炉温度PCA-BP的预测模型研究_杨铮

摘要
针对影响钢坯出炉温度因素之间存在高度非线性、数据冗余等特征。传统单一BP算法无法消除数据之间冗余和捕捉非线性规律,从而导致预测精度低的问题,鉴此,提出了一种基于主成分的BP神经网络(PCA-BPNN)预测模型。采用加热炉现场生产数据作为分析样本,首先对影响钢坯出炉温度的各因素进行主成分分析,消除各因素之间的冗余性,降低BP神经网络的输入维数,加快BP神经网络训练速度并提高预测精度,然后利用BP神经网络对保留成分进行建模预测,利用PCA-BPNN模型对样本进行了验证性测试和分析,Matlab仿真结果证明基于PCA-BP算法的预测精度最高,其次是BP算法。
引言
钢坯出炉温度直接影响钢坯的组织性能和力学性能。若要得到准确的钢坯出炉温度,一般可对其进行预测控制。而钢坯出炉温度预测模型是预测控制的重要基础。目前,对于钢温预测模型的研究主要分为两类:一类是以工艺理论为基础的多元回归模型,另一类是以工艺理论与现代控制理论相结合的智能学习模型。多元回归模型由于忽略了交互效应和非线性因果关系,准确性差,易受外界干扰。而智能学习模型一般采用模糊和神经网络来构建。但在模型建立时,神经网络的类型对钢温预测模型的预测精度有什么影响,目前尚少有比较研究。因此,本文以 1700 加热炉为研究背景,利用实际生产中采集的数据,对其进行了钢温预测神经网络模型的研究。即采用 BP 神经网络、RBF 神经网络、RBF-BP 组合神经网络这三种智能学习方法建立了不同的钢温预测模型,并从预测精度、学习速度和泛化能力等方面进行了比较研究,找出了较好的预测模型,从而找出更适合1700 加热炉实际情况的建模方法。
为了提高预测钢坯出炉温度精度与效率,本文基于PCA结合BP算法进行优化,可以有效改善模型训练性能,进而提高预测精度。由于BP神经网络没有考虑输入量的选取,输入变量太多时,网络结构复杂,网络训练沉重,学习速率下降;此外输入选择不当会造成与输出相关性很小,进而陷入局部极小点,这样既没有提高预测精度,也没有提高BP预测性能。
钢坯出炉温度是一多维的动态非线性系统,影响因素很多,包括钢坯入炉温度、第一加热段炉温、第二加热段炉温、均热段炉温、钢坯在第一加热段内停留的时间、钢坯在第二加热段内停留的时间、钢坯在均热段内停留的时间等各种变量,只有从中找到一组合适的输入才能有效地解释钢坯出炉温度的变化关系,才能对各种变化条件下提高钢坯出炉温度的预测精度。
针对当前BP在钢坯出炉温度预测中的问题,本文提出一种基于主成分分析的神经网络钢坯出炉温度预测方法(PCA-BPNN)。对包含各种因素的输入变量进行筛选,使用BP输入参数数量大大减小,不但成倍地减少BP的训练时间,而且获得了更好的预测精度。本文以1700加热炉为例,使用PCA分析方法对7个影响因子进行分析,提取重要影响因子,得到4个个主成分作为BP输入进行仿真。仿真结果表明,经过PCA分析方法筛选的输入变量用于BP运行时间大大减少,预测精度明显提高。
1 PCA-BPNN模型
1.1 建模原理
钢坯的出炉温度是决定其能否加热出合格钢坯的关键。出炉温度不合格,无法通过后续的轧制、无法生产出合格钢坯。
由于钢坯出炉温度受多种因素影响,呈高度非线性、数据之间存在高度冗余性,所以采用传统单一BP算法无法对钢坯出炉温度做出准确预测,导致预测精度低,进而制定出错误的控制策略,对企业、
环境带来不利。
本文利用PCA-BPNN模型对加热炉钢坯出炉温度进行预测,首先,构建钢坯出炉温度的影响因素体系,利用PCA分析方法消除数据的冗余信息,选择贡献率大的主成分作为输入数据训练样本,然后结合原始输出数据训练样本进行BP模型的训练和预测,最后对预测结果进行评价。
1.2 PCA分析方法
PCA分析方法,主要用于数据降维,保留了数据集中对方差贡献最大的若干个特征来达到简化数据集的目的。
实现数据降维的步骤:
1)、将原始数据中每一个样本用向量表示,把所有样本组合起来构成一个矩阵,通常需对样本矩阵进行处理,得到中性化样本矩阵;
2)、求样本矩阵的协方差矩阵;
3)、求协方差矩阵的特征值和特征向量;
4)、将求出的特征向量按照特征值的大小进行组合形成一个映射矩阵。并根据指定的PCA保留的特征个数取出映射矩阵的前n行或者前n列作为最终的映射矩阵;
5)、用映射矩阵对数据进行映射,达到数据降维的目的。

Matlab代码如下:
function [newX,TTmeanValue] = pcafun(X,CRate)
%每行是一个样本
%newX  降维后的新矩阵
%T 变换矩阵
%meanValue  X每列均值构成的矩阵,用于将降维后的矩阵newX恢复成X
%CRate 贡献率
%计算中心化样本矩阵
meanValue=ones(size(X,1),1)*mean(X);
%每个维度减去该维度的均值
X=X-meanValue;
%计算协方差矩阵
C=X'*X/(size(X,1)-1);
%计算特征向量,特征值
[V,D]=eig(C);
%将特征向量按降序排序
[dummy,order]=sort(diag(-D));
%将特征向量按照特征值大小进行降序排列
V=V(:,order);
%将特征值取出,构成一个列向量
d=diag(D);
%将特征值构成的列向量按降序排列
newd=d(order);
%取前n个特征向量,构成变换矩阵
sumd=sum(newd);%特征值之和
for j=1:length(newd)
%计算贡献率,贡献率=前n个特征值之和/总特征值之和
    i=sum(newd(1:j,1))/sumd;
%当贡献率大于95%时循环结束,并记下取多少个特征值
        if i>CRate
            cols=j;
            break;
        end
end
%取前cols个特征向量,构成变换矩阵T
T=V(:,1:cols);
%用变换矩阵T对X进行降维
newX=X*T;
end

1.2 BPNN分析方法
BPNN算法是一种有监督式的学习算法,输入学习样本,使用反向传播算法对网络的权值和偏差进行反复的调整训练,使输出的向量与期望向量尽可能地接近,当网络输出层的误差平方和小于指定的误差时训练完成,保存网络的权值和偏差。
实现BPNN的步骤:
1)、初始化,随机给定各连接权及阀值。
2)、由给定的输入输出模式对计算隐层、输出层各单元输出
3)、计算新的连接权及阀值,
4)、选取下一个输入模式对返回第2步反复训练直到网络设输出误差达到要求结束训练。
BPNN算法实质上是把一组样本输入、输出问题转化为一个非线性优化问题,并通过负梯度下降算法,利用迭代运算求解权值问题的一种学习方法。

Matlab代码如下:
clear;close all;clc;
PT = xlsread('hbis.xlsx','sheet1','B4:I153');
%网络输入训练数据 7维
P = PT(1:120,1:7)';
%网络输出训练数据 1维
T = PT(1:120,8)';
%网络输入测试数据 7维
P_test = PT(121:150,1:7)';
%网络输出测试数据 1维
T_test = PT(121:150,8)';
[p1,minp,maxp,t1,mint,maxt]=premnmx(P,T);
%创建网络
net=newff(minmax(p1),[13,1],{'tansig','purelin'},'traingd');
%设置训练次数
net.trainParam.epochs = 10000;
%设置收敛误差
net.trainParam.goal=0.0000001;
%训练网络
[net,tr]=train(net,p1,t1);
%输入数据
a = P_test;
%将输入数据归一化
a=premnmx(a);
%放入到网络输出数据
b=sim(net,a);
%将得到的数据反归一化得到预测数据
T_predict=postmnmx(b,mint,maxt);

2 基于PCA-BP模型钢坯出炉温度预测

Matlab代码如下:
clear;close all;clc;
PT = xlsread('hbis.xlsx','sheet1','B4:I153');
%PCA分析的输入训练数据
Pall = PT(1:150,1:7);
%假设贡献率为95%
[Pnewall,TT,meanValue]=pca_row(Pall,0.99);
%新网络输入数据 4维训练集
Pnew = Pnewall(1:120,:)';
%网络输出数据 1维训练集
T = PT(1:120,8)';
%新网络输入数据 6维测试集
Pnew_test = Pnewall(121:150,:)';
%网络输出数据 1维测试集
T_test = PT(121:150,8)';
[p1,minp,maxp,t1,mint,maxt]=premnmx(Pnew,T);
%创建网络
net=newff(minmax(p1),[7,1],{'tansig','purelin'},'traingd');
%设置训练次数
net.trainParam.epochs = 10000;
%设置收敛误差
net.trainParam.goal=0.0000001;
%训练网络
[net,tr]=train(net,p1,t1);
%输入数据
a =  Pnew_test;
%将输入数据归一化
a=premnmx(a);
%放入到网络输出数据
b=sim(net,a);
%将得到的数据反归一化得到预测数据
T_predict=postmnmx(b,mint,maxt);

3 Malab仿真结果分析

做图
采用\bf、\it、\rm控制字符分别定义黑体、斜体、正体字。
figure(1)
plot(T_test,'r--')
hold on;grid on
plot(T_predict,'b-')
xlabel('\fontsize{14}\fontname{楷体}\rm{测试点}\rm{ (Num)}');
ylabel('\fontsize{14}\fontname{楷体}\rm{钢坯出炉温度}\rm{ (^oC)}');
set(gca,'ytick',[980:20:1200]);
set(gca,'fontsize',14,'fontname','times new roman');
legend('\fontsize{14}\fontname{楷体}\rm{实际值}','\fontsize{14}\fontname{楷体}\rm{预测值}');
legend('boxoff');
title('\fontsize{14}\fontname{times new roman}\rm{PCA-BPNN}'); 

附录
在这里插入图片描述
在这里插入图片描述
数据见
https://download.csdn.net/download/weixin_37928884/85356009**

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨铮...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值