基于灰色模型GM的管道腐蚀预测 - 附代码

基于灰色模型GM的管道腐蚀预测 - 附代码


摘要:本文主要介绍灰色模型相关知识,并将其用于管道腐蚀预测。

1.灰色模型(GM( 1,1) )原理

灰色预测 GM( 1,1) 模型利用原始序列累加生成新的序列,使原本混乱的数据呈现出规律性,即使
只有较少的数据,也能得到良好的预测结果,其一般包括累加生成、建模求解、累减还原 3 个步骤,具体如下:

1)累加生成。

X ( 0 ) = { x ( 0 ) ( 1 ) , x ( 0 ) ( 2 ) , . . . , x ( 0 ) ( n ) } X^{(0)}=\{x^{(0)}(1),x^{(0)}(2),...,x^{(0)}(n)\} X(0)={x(0)(1),x(0)(2),...,x(0)(n)}为原始非负数据序列;则 X ( 1 ) = { x ( 1 ) ( 1 ) , x ( 1 ) ( 2 ) , . . . , x ( 1 ) ( n ) } X^{(1)}=\{x^{(1)}(1),x^{(1)}(2),...,x^{(1)}(n)\} X(1)={x(1)(1),x(1)(2),...,x(1)(n)}​为 X ( 0 ) X^{(0)} X(0) 的一阶累加生成序列,其中:
x ( 1 ) ( k ) = ∑ i = 1 k x ( 0 ) ( i ) (1) x^{(1)}(k)=\sum_{i=1}^kx^{(0)}(i)\tag{1} x(1)(k)=i=1kx(0)(i)(1)
式子中, k = 1 , 2 , . . . , n k=1,2,...,n k=1,2,...,n

Z ( 1 ) = { z ( 1 ) ( 2 ) , z ( 1 ) ( 3 ) , . . . , z ( 1 ) ( n ) } Z^{(1)}=\{z^{(1)}(2),z^{(1)}(3),...,z^{(1)}(n)\} Z(1)={z(1)(2),z(1)(3),...,z(1)(n)} X ( 1 ) X^{(1)} X(1)的紧邻均值生成序列,其中:
z ( 1 ) ( k ) = 1 2 [ x ( 1 ) ( k ) + x ( 1 ) ( k − 1 ) ] (2) z^{(1)}(k)=\frac{1}{2}[x^{(1)}(k)+x^{(1)}(k-1)]\tag{2} z(1)(k)=21[x(1)(k)+x(1)(k1)](2)
式子中, k = 2 , 3 , . . . , n k=2,3,...,n k=2,3,...,n

2)建模求解

x ( 0 ) ( k ) + a z ( 1 ) ( k ) = b x^{(0)}(k)+az^{(1)}(k)=b x(0)(k)+az(1)(k)=b​为 GM( 1,1)模型的灰微分方程,其白化微分方程为:
d x ( 1 ) ( t ) d t + a x ( 1 ) ( t ) = b (3) \frac{dx^{(1)}(t)}{dt}+ax^{(1)}(t)=b\tag{3} dtdx(1)(t)+ax(1)(t)=b(3)
式中, a a a 为发展系数, b b b 为灰色作用量,均为待解参数,可通过最小二乘法估计 a a a b b b 的值。
( a , b ) T = ( B T B ) − 1 B T Y (4) (a,b)^T=(B^TB)^{-1}B^TY \tag{4} (a,b)T=(BTB)1BTY(4)
式中, B = [ − z ( 1 ) ( 2 ) 1 − z ( 1 ) ( 3 ) 1 . . . . . . − z ( 1 ) ( n ) 1 ] B=\left[\begin{matrix} -z^{(1)}(2)&1\\ -z^{(1)}(3)&1\\ ...&...\\ -z^{(1)}(n)&1\\ \end{matrix}\right] B=z(1)(2)z(1)(3)...z(1)(n)11...1​​, Y = [ x ( 0 ) ( 2 ) x ( 0 ) ( 3 ) . . . x ( 0 ) ( n ) ] Y=\left[\begin{matrix} x^{(0)}(2)\\ x^{(0)}(3)\\ ...\\ x^{(0)}(n)\\ \end{matrix}\right] Y=x(0)(2)x(0)(3)...x(0)(n)​​

则白化微分方程的解为:
x ( 1 ) ( t ) = b a + [ x ( 1 ) ( 1 ) − b a ] e − a ( t − 1 ) (5) x^{(1)}(t)=\frac{b}{a}+[x^{(1)}(1)-\frac{b}{a}]e^{-a(t-1)}\tag{5} x(1)(t)=ab+[x(1)(1)ab]ea(t1)(5)
GM( 1,1) 模型的时间响应序列为:
x ( 1 ) ( k + 1 ) ∗ = b a + [ x ( 0 ) ( 1 ) − b a ] e − a k (6) x^{(1)}(k+1)^*=\frac{b}{a}+[x^{(0)}(1)-\frac{b}{a}]e^{-ak}\tag{6} x(1)(k+1)=ab+[x(0)(1)ab]eak(6)
式子中, k = 1 , 2 , . . . , n − 1 k=1,2,...,n-1 k=1,2,...,n1

3)累减还原。原始数据序列还原值为
x ( 0 ) ( k + 1 ) ∗ = x ( 1 ) ( k + 1 ) ∗ − x ( 1 ) ( k ) ∗ (7) x^{(0)}(k+1)^*=x^{(1)}(k+1)^*-x^{(1)}(k)^*\tag{7} x(0)(k+1)=x(1)(k+1)x(1)(k)(7)

2.管道腐蚀预测

为了检验本文提出的预测模型的有效性,用常压蒸馏塔塔顶换热器入口分配管弯头测厚数据进行比较分析,壁厚测量的平均值见表 1。表中前 12 个工作月的数据作为灰色建模方法的原始序列,后 6 个工作月的数据作为预测序列,用于评估预测方法的准确性。

工作月数壁厚/mm
18.8700
28.7800
38.4700
48.4500
58.1150
67.7900
77.7300
87.3300
97.2850
107.0100
116.8550
126.7050
136.5375
146.3000
155.9650
165.6250
175.3325
185.1100
clc;clear;
%用前1:12个数据进行预测
A = [8.87,8.78,8.47,8.45,8.115,7.79,7.73,7.33,7.285,7.01,6.855,6.705,6.5375,6.3,5.965,5.625,5.3325,5.11];
[~,a,b] = GMfunction(A(1:12));
%用训练得到的a,b,预测所有18个所有数据
[G] = GMPredict(a,b,A,18);
disp(['预测数据为:',num2str(G)]);
Error = A-G;
MSE = mse(A-G);
disp(['MSE:',num2str(MSE)]);

实验结果如下图所示:

请添加图片描述

预测数据为:8.87 8.7863 8.5472 8.3146 8.0883 7.8682 7.654 7.4457 7.2431 7.046 6.8542 6.6677 6.4862 6.3097 6.1379 5.9709 5.8084 5.6503
MSE:0.040304

3.参考文献

[1]秦谢勋,刘文彬,陈良超.基于改进蜂群算法和灰色模型的管道腐蚀预测[J].北京化工大学学报(自然科学版),2021,48(01):74-80.

4.Matlab代码

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智能算法研学社(Jack旭)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值