基于灰色模型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=1∑kx(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)(k−1)](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]e−a(t−1)(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]e−ak(6)
式子中,
k
=
1
,
2
,
.
.
.
,
n
−
1
k=1,2,...,n-1
k=1,2,...,n−1。
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 |
---|---|
1 | 8.8700 |
2 | 8.7800 |
3 | 8.4700 |
4 | 8.4500 |
5 | 8.1150 |
6 | 7.7900 |
7 | 7.7300 |
8 | 7.3300 |
9 | 7.2850 |
10 | 7.0100 |
11 | 6.8550 |
12 | 6.7050 |
13 | 6.5375 |
14 | 6.3000 |
15 | 5.9650 |
16 | 5.6250 |
17 | 5.3325 |
18 | 5.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.