Introduction
本文提出了如何利用基于神经网络的残差和基于物理的模型来定位系统中的未知故障
1、本文中提到的方法,依靠残差进行故障隔离和分类。
2、这里不仅考虑了故障隔离,而且还考虑了未知故障的定位。
研究对象(非线性双水箱模拟的实例研究)
x
f
,
i
x_{f,i}
xf,i表示水箱
i
i
i的输出;
u
u
u是第一个水箱的已知输入;
y
1
,
y
2
,
y
3
,
y
4
y_1,y_2,y_3,y_4
y1,y2,y3,y4是传感器数据,
h
1
(
.
)
,
h
2
(
.
)
h_1(.),h_2(.)
h1(.),h2(.)映射每个水箱中水位的变化取决于流入量和流出量;
g
1
(
.
)
,
g
2
(
.
)
g_1(.),g_2(.)
g1(.),g2(.)映射水箱流出量取决于水箱内的水位
基于模型的故障诊断(残差)
r
=
y
−
y
^
r=y-\hat{y}
r=y−y^,理想状态下
r
=
0
r=0
r=0,用残差来判断是否出现故障
没一个故障位置设计一个残差,发生故障,该部位残差偏移标称值,其他残差不应受到影响,以此识别故障和定位。
基于神经网络的残差生成
ξ
(
.
)
\xi(.)
ξ(.)表示神经网络,
r
1
,
r
2
r_1, r_2
r1,r2静态代数关系,模拟了每个水箱中测量的水位与每个水箱中测量的流出量之间的关系。
r
3
.
.
.
r
7
r_3...r_7
r3...r7具有内部动力学,在方程中残差r6的动力学方程中引入了一个小的反馈项(12),因为在训练模型时难以达到令人满意的预测误差。注:
r
6
r_6
r6中
x
^
1
,
t
−
1
\hat{x}_{1,t-1}
x^1,t−1不作为神经网络的输入。表1给出所有残差的模型支持情况;表2给出不考虑模型的不确定时理想的故障定位性能。
由表2,
e
2
,
e
6
,
e
8
e_2,e_6,e_8
e2,e6,e8中的故障不能与
e
4
e_4
e4中的故障隔离。
残差实现与训练
pytorch编程,使用仿真无故障数据训练模型
每个
ξ
(
.
)
\xi(.)
ξ(.)使用一个三层隐藏层神经网络建模,每层32个神经元,激活函数为ReLU。
使用ADAM求解器最小化均方根误差
Σ
t
(
y
t
−
y
t
^
)
2
\Sigma_t(y_t-\hat{y_t})^2
Σt(yt−yt^)2
图5显示了标称情况下的评估剩余输出的一个示例。
左边是时序数据,右边是前后两段的直方图。红虚线表示蓝色直方图的前1%和99%。
实验评估
根据 r r r 的变化寻找出问题的 e e e ,根据相应的 e e e 判断出了哪种故障
实验1:
水箱1泄露故障,1000个样本量
r
5
,
r
6
r_5,r_6
r5,r6明显偏移标称值,其他变化不大。
将
r
5
,
r
6
r_5,r_6
r5,r6与表1对照,交叉点在
e
1
,
e
7
e_1,e_7
e1,e7,
e
1
e_1
e1代表着水箱1的动态水位,
e
7
e_7
e7代表着水箱1流出水的传感器数据。
实验2:
水箱2流出堵塞
r
1
,
r
4
r_1,r_4
r1,r4变化显著,
r
7
r_7
r7变化比较小(疑问:
r
6
r_6
r6呢?看着变化挺大的啊),与表1对照,交叉点在
e
4
,
e
6
e_4,e_6
e4,e6,
e
4
e_4
e4代表着水箱2中的水位与产生的流出量之间的关系,
e
6
e_6
e6代表着测量水箱 2 中水位的传感器。
针对上述疑问:因为 e 2 , e 6 , e 8 e_2,e_6,e_8 e2,e6,e8 中的故障不能与 e 4 e_4 e4 中的故障隔离。那么, e 2 , e 6 , e 8 e_2,e_6,e_8 e2,e6,e8 出问题的时候会影响到 e 4 e_4 e4,但反应到对应的 r r r上时可以在后半段恢复到标称值。
对于未知故障,由于本方法思路是只训练无故障数据,一旦出现故障就会报警,因此,出现的都是未知故障。