一种基于粗糙集理论的航空发动机故障规则生成方法转让专利

申请号 : CN201910986127.8

文献号 : CN110765177B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赵旭东徐现强张硕孙希明

申请人 : 大连理工大学

摘要 :

一种基于粗糙集理论的航空发动机故障规则生成方法,属于航空发动机故障诊断技术领域。首先通过对航空发动机的历史工况信息进行数据采集,确定各参数隶属函数表达式,并进行离散化处理,同时结合与之对应的决策样本,建立了航空发动机的历史故障数据表。根据故障数据表,采用粗糙集数据挖掘算法实现规则。本发明的方法从工程应用角度出发,为航空发动机故障诊断专家系统提供了有效的故障分析知识。

权利要求 :

1.一种基于粗糙集理论的航空发动机故障规则生成方法,其特征在于,步骤如下:第一步,确定样本属性和决策属性

确定样本属性:获取航空发动机历史故障仿真数据,性能参数数据包括油门杆角度PLA、高压转子转速NH、低压转子转速NL、风扇出口内涵总压P23、压气机进口总温T25、压气机出口总压P3、压气机出口总温T25、低压涡轮出口总压P6、低压涡轮出口总温T6,共9组参数;其中,PLA是控制量,其它8组参数均包括真实值和基线值;

确定决策属性:包括低压涡轮故障、风扇故障、高压涡轮故障和压气机故障;每种故障各有n组数据;另有h组无故障数据作为离散化依据;

第二步,历史故障数据预处理及离散化

(1)数据异常点处理

根据拉依达规则,消除航空发动机性能参数真实值与原始数据之间的粗大误差:a.计算时序数据样本第k个数据前面的N个数据平均值

其中,x表示样本数据;

b.依据贝塞尔公式计算这N个数据的标准差

c.含有粗大误差数据的判别

当待判定的第k个数据位于 之间,则视为数据没有粗大误差,决定保留,当待判定的第k个数据位于 之外,则说明数据存在粗大误差,需要去除;

d.粗大误差数据的替换

将判别出含有粗大误差的数据剔除后,使用该数据前面和后面两个数据的平均值代替,即:(2)标准化

其中,发动机基线是指在标准大气环境下,处于理想状态下的某个型号的发动机状态参量与发动机控制量之间的函数关系;

(3)离散化

a.根据无故障状态下参数的分布区间获得该区间的上下限,即一级警戒线;在上下界之间则参数等级为“正常”,超过上限则参数等级为“高”,低于下限则参数等级为“低”;

b.在标准a正常区间上限的基础上加基线值乘1%得到二级高警戒线;相应的在标准a正常区间下限的基础上减基线值乘1%得到二级低警戒线;超过二级高警戒线则参数等级为“极高”,低于二级低警戒线则参数等级为“极低”;

第三步,利用粗糙集对航发故障样本进行属性约简

(1)确定分辨矩阵e

信息系统S=(U,R,V,f)中,U={x1,x2,…,xn}为论域,它是全体样本的集合;R=C∪D是属性集合,其中,子集C为条件属性集,反映对象的特征,D为决策属性集,反映对象的类别;

为属性值的集合,Vr表示属性r的取值范围;f为一个信息函数,用于确定U中每个对象x的属性值,即任一xi∈U,r∈R,则f(xi,r)=Vr;ak(xj)是样本xj在属性ak上的取值;信息系统的分辨矩阵定义为一个n×n阶矩阵M(S)=[mij]n×n,其中第i行j列处元素:分辨矩阵中元素mij是能够区别对象xi和xj的所有属性的集合,当xi和xj属于同一个决策类时,则分辨矩阵中元素mij的取值为空集Φ;所以M(S)=[mij]n×n是一个对称矩阵,主对角线上的元素是空集;

每一个分辨矩阵M(S),能够诱导出一个分辨函数fM(S)如下:fM(S)(a1,a2,…,am)=∧{∨mij,1≤j

(2)利用分辨函数求核

在分辨函数中很容易找出信息系统的核,所有单个元素组成的集合即为核,在分辨函数中按顺序先找成对括号中右括号的位置,再找左括号的位置,最后用右括号的位置减去左括号的位置,结果为2,就说明左右括号间只有一个元素,也就是核;

(3)利用核对分辨函数进行化简

a.利用左右括号提取分辨函数括号里的数据,保存到字符串str中;

b.当字符串str的长度为1,则说明是核,连同括号保存到字符串str2中,清空str,准备进行下一次提取;当长度不为1,转移到步骤c;

c.检查字符串str中所有字符是否包含核,包含,则清空str,准备进行下一次提取;否则检查字符串里的所有字符是否与核比较结束,结束且没有与核相同的字符,则把字符串str保存到字符串str2中,清空str,准备进行下一次提取;

d.最后得到约简;

(4)删除冗余项

对得到的约简进行查重,删除重复项,将再次得到约简合取范式转换为最小析取范式,其中每一个最小析取范式对应一个约简;

第四步,对航发故障样本进行值约简

(1)将每个最小析取范式分别与决策属性组合,形成新的决策表;

(2)删除重复行,得到约简表2;

(3)定义3个数组junce、junce1和junce2,junce用来存放约简表2,把junce赋给junce2,当有属性值可以省略时,就使该属性值对应的数组junce2数组元素为"*";把junce赋给junce1,之后把要判断的条件属性的列都清空,其余的属性列和决策列按行组合到一起,如果组合后有重复的,把所有重复的行与清空的条件属性相交的属性值对应的数组junce2数组元素为“*”;得到约简表3;

(4)删除所有属性列的行全为“*”的行

统计属性列的个数,有几个属性列就赋给str3几个“*”,把所有属性列的组合到一起,分别与str3比较,相等就将该行删掉;得到约简表4;

第五步,规则提取及检测

(1)规则提取

跳过属性值为“*”的数组元素,把每行条件属性与对应的条件属性值不为“*”的数组元素组合起来,中间用“和”连接,再把该行决策属性值与对应决策属性组合起来,最后在组合前加“如果”,在条件组合与决策组合中间加“,则可以推断出”;使规则以“如果+条件属性值+且+条件属性值+且…,则可以推断出+决策属性,值+”形式显示,得到规则表;

(2)对规则进行检测

a.矛盾的规则:对于两条或者两条以上的规则,它们的条件属性完全一样,但结论不一样;矛盾的规则在规则库中是不允许同时存在的,要根据专家的见解,去除其中的一条或几条,保留一条;

矛盾规则的检测方法是:首先对所有知识的条件属性进行检测,当有条件属性相同的,则把他们全部提取出来,再对提取出来的规则的结论进行检测;当检测出结论不相同,则说明这几条规则是矛盾的;

b.相同的规则:对于两条或者两条以上的规则,它们的条件属性完全一样,且结论也完全一样,相同的规则有相同条件和相同的结论,要在规规则库中保留一条,其余的去除;

相同规则的检测方法是:首先对所有知识的条件属性进行检测,当有条件属性相同的,则把他们全部提取出来,再对提取出来的规则的结论进行检测;当检测出结果是一样的,则说明这几条规则是一样的;

c.冗余的规则:对于规则库里的两个规则,它们的结论是完全一样的,但在它们的前提条件中只有一个条件属性对应的属性值是不一样的,其余的条件属性对应的属性值都是一样的,这个条件属性在这两个规则中是不必要的,是能去除的,这样这两个规则就变成了一个规则,从知识库中去除这两个规则,把下面的规则添加到知识库中;

冗余规则的检测方法是:首先对所有知识的结论进行检测,当有两个规则结论是相同的,则把他们它们提取出来,再对提取出来的规则的条件进行检测;当只有一个条件是不一样的,其余条件都一样,那就说明这两个规则的条件存在冗余;

d.从属的规则:对于规则库里的两个规则,它们的结论是完全一样的,但在它们的前提条件中存在包含关系,即一个规则的所有条件在另一个规则中都能找到;对于这样的规则要根据领域专家的见解,删除其中的一个规则或者把两个规则都保在知识库中;

从属规则的检测方法是:首先对所有知识的结论进行检测,当有两个规则结论是相同的,就把它们提取出来,再对提取出来的规则的条件进行检测;当一个规则的条件在另一个规则中都能够找到,那就说明这两个规则存在从属关系。

说明书 :

一种基于粗糙集理论的航空发动机故障规则生成方法

技术领域

[0001] 本发明属于航空发动机故障诊断技术领域,具体涉及基于模糊集的知识获取方法对航空发动机历史故障数据进行规则生成。

背景技术

[0002] 航空发动机工作环境恶劣复杂,转子转动速度高、高温高压气流均会对发动机的结构强度产生较大影响。因此,发动机在工作过程中极易出现各种故障,并且故障特征具有多源、异构等复杂特性,然而在这些较为复杂的故障特征当中存在着隐藏的故障模式,那么如何从复杂特征中挖掘出航空发动机的故障模式是一个重要问题。
[0003] 目前已有很多国内外学者展开了航空发动机故障诊断方面的工作,其方法主要可以分为以下三类:
[0004] a.以数字建模及故障参数预估为基础的诊断方法在航空发动机故障诊断方法[0005] 这种方法要求有很强的数学建模基础,在建模过程中所使用的参数往往很难在实际生产中找到完全相似的样本,因此当使用的参数不准确时在很大程度上会影响故障诊断准确率。
[0006] b.通过实测发动机状态参数诊断方法
[0007] 这种方法在实际应用中通过对发动机故障的监测,对这些参数进行统计,并以创立故障树模型加以辅助、误差分析-试车数据图表法、分类识别等,不过在实际情况中,上述方法存在着描述不具体,分类不明确的缺陷。
[0008] c.基于专家经验知识的专家系统方法
[0009] 航空发动机故障诊断专家系统是一种以在航空维修领域有较高技术水平的工程技术人员的经验、方法为基础的排故方系统,这个系统可以通过利用专家的经验和知识给出解决故障问题的信息和方法,且能以比较强的表达能力和丰富的专业知识和推理来判定发动机故障现象的原因。
[0010] 然而专家系统知识库建立大多是凭借专家经验,往往具有主观性,使得知识的准确性差,所以知识获取是专家系统的瓶颈。专家系统对于不确定信息的处理通常需要附加信息或先验知识,而这些附加信息和先验知识往往又凭借经验给定,所以具有主观性。同时模糊集和神经网络不能处理不完备信息,也不能消除信息冗余。而对于粗糙集来说,不需要数据之外的先验知识,对于不确定信息的处理具有客观性。
[0011] 因此本发明提出一种基于粗糙集理论的航空发动机故障规则生成方法,并对规则进行检测(包括对等价、冗余、矛盾和从属规则处理),得到最终使用的规则,为航空发动机故障诊断专家提供故障分析知识,进而存储到专家系统知识库。

发明内容

[0012] 本发明针对现有技术存在的上述不足,提出一种基于粗糙集理论的航空发动机故障规则生成方法。首先通过对航空发动机的历史工况信息(如压气机进口总温,高压转子转速等等)进行数据采集,确定各参数隶属函数表达式,并进行离散化处理,同时结合与之对应的决策样本,建立了航空发动机的历史故障数据表。根据故障数据表,采用粗糙集数据挖掘算法实现规则。从工程应用角度出发,为航空发动机故障诊断专家系统提供了有效的故障分析知识。
[0013] 本发明的技术方案:
[0014] 一种基于粗糙集理论的航空发动机故障规则生成方法,步骤如下:
[0015] 第一步,确定样本属性和决策属性
[0016] 确定样本属性:获取航空发动机历史故障仿真数据,性能参数数据包括油门杆角度PLA、高压转子转速NH、低压转子转速NL、风扇出口内涵总压P23、压气机进口总温T25、压气机出口总压P3、压气机出口总温T25、低压涡轮出口总压P6、低压涡轮出口总温T6,共9组参数;其中,PLA是控制量,其它8组参数均包括真实值和基线值;
[0017] 确定决策属性:包括低压涡轮故障、风扇故障、高压涡轮故障和压气机故障;每种故障各有n组数据;另有h组无故障数据作为离散化依据;
[0018] 第二步,历史故障数据预处理及离散化
[0019] (1)数据异常点处理
[0020] 根据拉依达规则,消除航空发动机性能参数真实值与原始数据之间的粗大误差:
[0021] a.计算时序数据样本第k个数据前面的N个数据平均值
[0022]
[0023] 其中,x表示样本数据;
[0024] b.依据贝塞尔公式计算这N个数据的标准差
[0025]
[0026] c.含有粗大误差数据的判别
[0027] 当待判定的第k个数据位于 之间,则视为数据没有粗大误差,决定保留,当待判定的第k个数据位于 之外,则说明数据存在粗大误差,需
要去除。
[0028] d.粗大误差数据的替换
[0029] 将判别出含有粗大误差的数据剔除后,使用该数据前面和后面两个数据的平均值代替,即:
[0030]
[0031] (2)标准化
[0032]
[0033] 其中,发动机基线是指在标准大气环境下,处于理想状态下的某个型号的发动机状态参量与发动机控制量之间的函数关系;
[0034] (3)离散化
[0035] a.根据无故障状态下参数的分布区间获得该区间的上下限,即一级警戒线;在上下界之间则参数等级为“正常”,超过上限则参数等级为“高”,低于下限则参数等级为“低”;
[0036] b.在标准a正常区间上限的基础上加基线值乘1%得到二级高警戒线;相应的在标准a正常区间下限的基础上减基线值乘1%得到二级低警戒线;超过二级高警戒线则参数等级为“极高”,低于二级低警戒线则参数等级为“极低”;
[0037] 第三步,利用粗糙集对航发故障样本进行属性约简
[0038] (1)确定分辨矩阵e
[0039] 信息系统S=(U,R,V,f)中,U={x1,x2,…,xn}为论域,它是全体样本的集合;R=C∪D是属性集合,其中,子集C为条件属性集,反映对象的特征,D为决策属性集,反映对象的类别; 为属性值的集合,Vr表示属性r的取值范围;f为一个信息函数,用于确定U中每个对象x的属性值,即任一xi∈U,r∈R,则f(xi,r)=Vr。ak(xj)是样本xj在属性ak上的取值;信息系统的分辨矩阵定义为一个n×n阶矩阵M(S)=[mij]n×n,其中第i行j列处元素:
[0040]
[0041] 分辨矩阵中元素mij是能够区别对象xi和xj的所有属性的集合,当xi和xj属于同一个决策类时,则分辨矩阵中元素mij的取值为空集Φ;所以M(S)=[mij]n×n是一个对称矩阵,主对角线上的元素是空集;
[0042] 每一个分辨矩阵M(S),能够诱导出一个分辨函数fM(S)如下:
[0043] fM(S)(a1,a2,…,am)=∧{∨mij,1≤j
[0044] 其形式为:
[0045]
[0046] (2)利用分辨函数求核
[0047] 在分辨函数中很容易找出信息系统的核,所有单个元素组成的集合即为核,在分辨函数中按顺序先找成对括号中右括号的位置,再找左括号的位置,最后用右括号的位置减去左括号的位置,结果为2,就说明左右括号间只有一个元素,也就是核;
[0048] (3)利用核对分辨函数进行化简
[0049] a.利用左右括号提取分辨函数括号里的数据,保存到字符串str中;
[0050] b.当字符串str的长度为1,则说明是核,连同括号保存到字符串str2中,清空str,准备进行下一次提取;当长度不为1,转移到步骤c;
[0051] c.检查字符串str中所有字符是否包含核,包含,则清空str,准备进行下一次提取;否则检查字符串里的所有字符是否与核比较结束,结束且没有与核相同的字符,则把字符串str保存到字符串str2中,清空str,准备进行下一次提取;
[0052] d.最后得到约简;
[0053] (4)删除冗余项
[0054] 对得到的约简进行查重,删除重复项,将再次得到约简合取范式转换为最小析取范式,其中每一个最小析取范式对应一个约简;
[0055] 第四步,对航发故障样本进行值约简
[0056] (1)将每个最小析取范式分别与决策属性组合,形成新的决策表;
[0057] (2)删除重复行,得到约简表2;
[0058] (3)定义3个数组junce、junce1和junce2,junce用来存放约简表2,把junce赋给junce2,当有属性值可以省略时,就使该属性值对应的数组junce2数组元素为"*";把junce赋给junce1,之后把要判断的条件属性的列都清空,其余的属性列和决策列按行组合到一起,如果组合后有重复的,把所有重复的行与清空的条件属性相交的属性值对应的数组junce2数组元素为“*”。得到约简表3;
[0059] (4)删除所有属性列的行全为“*”的行
[0060] 统计属性列的个数,有几个属性列就赋给str3几个“*”,把所有属性列的组合到一起,分别与str3比较,相等就将该行删掉。得到约简表4;
[0061] 第五步,规则提取及检测
[0062] (1)规则提取
[0063] 跳过属性值为“*”的数组元素,把每行条件属性与对应的条件属性值不为“*”的数组元素组合起来,中间用“和”连接,再把该行决策属性值与对应决策属性组合起来,最后在组合前加“如果”,在条件组合与决策组合中间加“,则可以推断出”;使规则以“如果+条件属性值+且+条件属性值+且…,则可以推断出+决策属性,值+”形式显示,得到规则表;
[0064] (2)对规则进行检测
[0065] a.矛盾的规则:对于两条或者两条以上的规则,它们的条件属性完全一样,但结论不一样;矛盾的规则在规则库中是不允许同时存在的,要根据专家的见解,去除其中的一条或几条,保留一条;
[0066] 矛盾规则的检测方法是:首先对所有知识的条件属性进行检测,当有条件属性相同的,则把他们全部提取出来,再对提取出来的规则的结论进行检测;当检测出结论不相同,则说明这几条规则是矛盾的;
[0067] b.相同的规则:对于两条或者两条以上的规则,它们的条件属性完全一样,且结论也完全一样,相同的规则有相同条件和相同的结论,要在规规则库中保留一条,其余的去除;
[0068] 相同规则的检测方法是:首先对所有知识的条件属性进行检测,当有条件属性相同的,则把他们全部提取出来,再对提取出来的规则的结论进行检测;当检测出结果是一样的,则说明这几条规则是一样的;
[0069] c.冗余的规则:对于规则库里的两个规则,它们的结论是完全一样的,但在它们的前提条件中只有一个条件属性对应的属性值是不一样的,其余的条件属性对应的属性值都是一样的,这个条件属性在这两个规则中是不必要的,是能去除的,这样这两个规则就变成了一个规则,从知识库中去除这两个规则,把下面的规则添加到知识库中;
[0070] 冗余规则的检测方法是:首先对所有知识的结论进行检测,当有两个规则结论是相同的,则把他们它们提取出来,再对提取出来的规则的条件进行检测;当只有一个条件是不一样的,其余条件都一样,那就说明这两个规则的条件存在冗余;
[0071] d.从属的规则:对于规则库里的两个规则,它们的结论是完全一样的,但在它们的前提条件中存在包含关系,即一个规则的所有条件在另一个规则中都能找到;对于这样的规则要根据领域专家的见解,删除其中的一个规则或者把两个规则都保在知识库中;
[0072] 从属规则的检测方法是:首先对所有知识的结论进行检测,当有两个规则结论是相同的,就把它们提取出来,再对提取出来的规则的条件进行检测;当一个规则的条件在另一个规则中都能够找到,那就说明这两个规则存在从属关系。
[0073] 本发明的有益效果:本发明提出一种基于粗糙集理论的航空发动机故障规则生成方法从工程应用角度出发,为航空发动机故障诊断专家系统提供了有效的故障分析知识。

附图说明

[0074] 图1某型航空发动机故障规则获取流程图。
[0075] 图2NH的离散化。

具体实施方式

[0076] 下面将结合具体实施例对本发明的技术方案进行进一步的说明。
[0077] 一种基于粗糙集理论的航空发动机故障规则生成方法,步骤如下:
[0078] 第一步,确定样本属性和决策属性
[0079] 以某高校提供的航空发动机历史故障仿真数据为例,性能参数数据包括油门杆角度PLA、高压转子转速NH、低压转子转速NL、风扇出口内涵总压P23、压气机进口总温T25、压气机出口总压P3、压气机出口总温T25、低压涡轮出口总压P6、低压涡轮出口总温T6,共9组参数。
[0080] 说明:
[0081] (1)PLA等于70%是控制量,也为前提条件,其它8组参数的数值都是在此工作状态下的数值。
[0082] (2)除控制量PLA外,每组参数都有真实值和基线值。
[0083] 包含的故障类型共4种,分别为低压涡轮故障、风扇故障、高压涡轮故障、压气机故障,每种故障各有500组数据。此外,另有500组无故障数据作为离散化依据。
[0084] 综上,前提条件为PLA等于70%,{NH,NL,P23,T25,P3,T25,P6,T6}为样本属性,{低压涡轮故障,风扇故障,高压涡轮故障,压气机故障}为决策属性。
[0085] 第二步,历史故障数据预处理及离散化
[0086] (1)数据异常点处理
[0087] 收集得到的航空发动机性能参数实际测量值样本属于原始数据,由于传感器失常等客观因素的存在,从机载数据链获得的发动机正常状态的原始数据中可能存在一些数据与真实值相比有很大的偏差,这样的误差称为粗大误差.
[0088] 根据拉依达规则的定义,以时序数据样本第k个数据为例,具体数据粗大误差消除的步骤如下:
[0089] a.计算第k个数据前面的N个数据平均值
[0090]
[0091] 其中x表示样本数据。
[0092] b.依据贝塞尔公式计算这N个数据的标准差
[0093]
[0094] c.含有粗大误差数据的判别
[0095] 若待判定的数据位于 之间则视为数据没有粗大误差,可以保留,若在这个范围外则说明数据存在粗大误差,需要去除。
[0096] d.粗大误差数据的替换
[0097] 将判别出含有粗大误差的数据剔除后,通常使用该数据前面和后面各个数据的平均值代替,即:
[0098]
[0099] (2)标准化
[0100] 为了消除不同参数的单位量纲的差别,我们对发动机历史故障数据进行标准化处理,使用相对误差公式,其转换形式如下:
[0101]
[0102] 其中,发动机基线是指在标准大气环境下,处于理想状态下的某个型号的发动机状态参量与发动机控制量之间的函数关系。当控制量PLA为70%时,各参数基线值如下表:
[0103] 表1某型号发动机性能参数基线值表(PLA=70%)
[0104]NH NL P23 P3 P6 T25 T3 T6
13212.84 10302 406.11 2512.91 403.93 450.89 791.62 1192.18
[0105] (3)离散化
[0106] 实际工作中,从故障检测对象上采集的数据有很大一部分是连续型数据,比如整数、浮点数。而粗糙集对数据的约简只能对离散型数据进行约简,因此要求把连续型数据转化成离散型数据。在航空发动机中,除去小部分的开关量和数字信号,仍有很大一部分信号部分是模拟信号。
[0107] 因此,为了提高诊断规则的适应性和诊断效率,就需要一种能够对记录下的数据进行处理,把隶属于各属性的连续型数据值转化成具有同等效力的离散型数据值的方法。在得到离散的决策表后,才能进行下一步约简。根据专家经验,离散方法如下:
[0108] a.根据无故障状态下参数的分布区间获得该区间的上下限,即一级警戒线,如图2。在上下界之间则参数等级为“正常”,超过上限则参数等级为“高”,低于下限则参数等级为“低”;
[0109] b.在标准a正常区间上限的基础上加基线值乘1%得到二级高警戒线,如图2;相应的在标准a正常区间下下限的基础上减基线值乘1%得到二级低警戒线。超过二级高警戒线则参数等级为“极高”,低于二级低警戒线则参数等级为“极低”。以NH为例,如图2。
[0110] 8个样本属性的分级限值如下表(表中数据均已进行标准化):
[0111] 表2分级限值表
[0112]  二级低警戒线 一级低警戒线 一级高警戒线 二级高警戒线
NH -0.032832577 -0.022832577 0.0000176 0.010017629
NL -0.029707577 -0.019707577 0.011088362 0.021088362
P23 0.113936665 0.123936665 0.151928353 0.161928353
P3 0.271504396 0.281504396 0.325124849 0.335124849
P6 0.312216256 0.322216256 0.354404591 0.364404591
T25 -0.535749399 -0.525749399 -0.505958573 -0.495958573
T3 -0.316849435 -0.306849435 -0.284332816 -0.274332816
T6 -0.14554618 -0.13554618 -0.089590962 -0.079590962
[0113] 第三步,利用粗糙集对航发故障样本进行属性约简
[0114] 分辩矩阵是粗糙集中又一个重要概念,它将决策表中关于属性区分的信息浓缩进一个矩阵当中,可用于决策表的属性约简。
[0115] 一信息系统S=(U,R,V,f)中,U={x1,x2,…,xn}为论域,它是全体样本的集合;R=C∪D是属性集合,其中,子集C为条件属性集,反映对象的特征,D为决策属性集,反映对象的类别; 为属性值的集合,Vr表示属性r的取值范围;f为一个信息函数,用于确定U中每个对象x的属性值,即任一xi∈U,r∈R,则f(xi,r)=Vr。ak(xj)是样本xj在属性ak上的取值;信息系统的分辨矩阵定义为一个n×n阶矩阵M(S)=[mij]n×n,其中第i行j列处元素:
[0116]
[0117] 也即,分辨矩阵中元素mij是能够区别对象xi和xj的所有属性的集合。但若xi和xj属于同一个决策类时,则分辨矩阵中元素mij的取值为空集Φ。由定义可见,M(S)=[mij]n×n是一个对称矩阵,主对角线上的元素是空集。因此只要考虑上半或者下半三角部分足以。
[0118] 每一个分辨矩阵M(S),可以诱导出一个分辨函数fM(S)如下:
[0119] fM(S)(a1,a2,…,am)=∧{∨mij,1≤j
[0120] 为更好理解,下面以虚构的航空发动机7条故障数据为例,其决策表如表3所示,由此可以得到分辨矩阵如表4所示。
[0121] 表3航空发动机故障决策表
[0122] 编号 NH NL P23 T25 故障类型1 低 正常 极高 低 低压涡轮故障
2 低 正常 极高 正常 低压涡轮故障
3 低 低 正常 正常 高压涡轮故障
4 低 低 极高 低 压气机故障
5 高 高 正常 正常 高压涡轮故障
6 高 高 高 正常 高压涡轮故障
7 高 高 极高 低 低压涡轮故障
[0123] 表4分辨矩阵
[0124]
[0125] 由表4的分辨矩阵得到的分辨函数为:f=(b∨c∨d)∧(b)∧(a∨b∨c∨d)∧(a∨b∨c∨d)∧(b∨c)(b∨d)∧(a∨b∨c)∧(a∨b∨c)∧(c∨d)∧(a∨b∨c∨d)∧(a∨b∨c∨d)∧(a∨b∨c∨d)∧(a∨b)∧(c∨d)∧(c∨d)。
[0126] 利用分辨函数求核。方法是:先分辨函数中顺序寻找右括号的位置,再找左括号的位置,最后用右括号的位置减去左括号的位置,结果为2,就说明左右括号间只有一个元素,也就是核。本例中求得核为b。
[0127] 利用核对分辨函数进行化简:1)利用左右括号提取分辨函数括号里的数据,保存到字符串str中;2)如果字符串str的长度为1,则说明是核,连同括号保存到字符串str2中,清空str,准备进行下一次提取。如果长度不为1,转移到3);3)检查字符串str中所有字符是否包含核,如果包含,就把str清空,准备进行下一次提取,否则检查字符串里的所有字符是否与核比较结束,如果结束且没有与核相同的字符,就把字符串str保存到字符串str2中,清空str,准备进行下一次提取。最后得到约简为:(b)(c∨d)(c∨d)(c∨d)。
[0128] 删除冗余项。对得到的约简进行查重,删除重复项,得到的约简为(b)(c∨d)。
[0129] 将合取范式(b)(c∨d)转换为最小析取范式bc∨bd,其中每一个最小析取范式对应一个约简。
[0130] 第四步,利用粗糙集对航发故障样本进行值约简
[0131] 将每个最小析取分别与决策属性组合,形成新的决策表(以下仅以bc为例)。如表5为生成的约简表1。
[0132] 表5生成的约简表1
[0133]NL P23 故障类型
正常 极高 低压涡轮故障
正常 极高 低压涡轮故障
低 正常 高压涡轮故障
低 极高 压气机故障
高 正常 高压涡轮故障
高 高 高压涡轮故障
高 极高 高压涡轮故障
[0134] 删除重复行,得到约简表2,如表6所示。
[0135] 表6生成的约简表2
[0136]NL P23 故障类型
正常 极高 低压涡轮故障
     
低 正常 高压涡轮故障
低 极高 压气机故障
高 正常 高压涡轮故障
高 高 高压涡轮故障
高 极高 高压涡轮故障
[0137] 定义3个数组junce、junce1、junce2,junce用来存放约简表2,把junce赋给junce2,当有属性值可以省略时,就使该属性值对应的数组junce2数组元素为"*"。把junce赋junce1,之后把要判断的条件属性的列都清空,其余的属性列和决策列按行组合到一起,如果组合后有重复的,把所有重复的行与清空的条件属性相交的属性值对应的数组junce2数组元素为“*”。得到约简表3,如表7所示。
[0138] 表7生成的约简表3
[0139]NL P23 故障类型
* 极高 低压涡轮故障
* *  
* 正常 高压涡轮故障
低 极高 压气机故障
* * 高压涡轮故障
高 * 高压涡轮故障
* 极高 高压涡轮故障
[0140] 删除所有属性列的行全为“*”的行。统计属性列的个数,有几个属性列就赋给str3几个“*”,本例中str3=“**”。把所有属性列的组合到一起,分别与str3比较,相等就将该行删掉。得到约简表4,如表8所示。
[0141] 表8生成的约简表4
[0142] NL P23 故障类型* 极高 低压涡轮故障
* 正常 高压涡轮故障
低 极高 压气机故障
高 * 高压涡轮故障
* 极高 高压涡轮故障
[0143] 第五步,规则提取及检测
[0144] 跳过属性值为“*”的数组元素,把每行条件属性与对应的条件属性值不为“*”的数组元素组合起来,中间用“和”连接,再把该行决策属性值与对应决策属性组合起来,最后在组合前加“如果”,在条件组合与决策组合中间加“,则可以推断出”。使规则以“如果(条件属性值)且(条件属性值)且…,则可以推断出(决策属性,值)”形式显示。得到规则表如表9所示。
[0145] 表9规则表
[0146]编号 规则
1 如果P23极高,则可以推断出故障类型为低压涡轮故障
2 如果P23正常,则可以推断出故障类型为高压涡轮故障
3 如果NL低且P23极高,则可以推断出故障类型为低压涡轮故障
4 如果NL高,则可以推断出故障类型为高压涡轮故障
5 如果P23极高,则可以推断出故障类型为低压涡轮故障
[0147] 最后对规则进行检测。通过粗糙集获取到的知识不可以直接做为诊断系统的应用规则,因为这些知识可能存在矛盾、重复、冗余或者从属,这样就要求我们对这些知识做一些检测处理。
[0148] (1)矛盾的规则。就是对于两条或者两条以上的规则,它们的条件属性完全一样,[0149] 但是它们的结论却不一样。如下面的两条规则:
[0150] 规则一:if m=1 and n=0 then r=0
[0151] 规则二:if m=1 and n=0 then r=1
[0152] 通常来说矛盾的规则在规则库中是不允许同时存在的,要根据专家的见解,去除其中的一条或几条,保留一条。矛盾规则的检测方法是:首先对所有知识的条件属性进行检测,如果有条件属性相同的,就把他们全部提取出来,再对提取出来的规则的结论进行检测,如果检测出结论不相同,那就说明这几条规则是矛盾的。
[0153] (2)相同的规则。就是对于两条或者两条以上的规则,它们的条件属性完全一样,并且它们的结论也完全一样。如下面的两条规则:
[0154] 规则一:if n=0 and m=1 then r=0
[0155] 规则二:if m=1 and n=0 then r=0
[0156] 相同的规则有相同条件和相同的结论,要在规规则库中保留一条,其余的去除。相同规则的检测方法是:首先对所有知识的条件属性进行检测,如果有条件属性相同的,就把他们全部提取出来,再对提取出来的规则的结论进行检测,如果检测出结果是一样的,那就说明这几条规则是一样的。
[0157] (3)冗余的规则。就是对于规则库里的两个规则,它们的结论是完全一样的,但在它们的前提条件中只有一个条件属性对应的属性值是不一样的,其余的条件属性对应的属性值都是一样的,所以这个条件属性在这两个规则中是不必要的,是可以去除的。如下面的两条规则:
[0158] 规则一:if m=0 and n=0 then r=1
[0159] 规则二:if m=1 and n=0 then r=1
[0160] 由这两个规则可以看出,前提条件中m是不必要的,可以将条件m去除。这样这两个规则就变成了一个规则,从知识库中去除这两个规则,把下面的规则添加到知识库中:
[0161] 规则一:if n=0 then r=1
[0162] 冗余规则的检测方法是:首先对所有知识的结论进行检测,如果有两个规则结论是相同的,就把他们它们提取出来,再对提取出来的规则的条件进行检测,如果只有一个条件是不一样的,其余条件都一样,那就说明这两个规则的条件存在冗余。
[0163] (4)从属的规则。就是对于规则库里的两个规则,它们的结论是完全一样的,但在它们的前提条件中存在包含关系(即一个规则的所有条件在另一个规则中都可以找到)。对于这样的规则要根据领域专家的见解,可以删除其中的一个规则或者把两个规则都保在知识库中。
[0164] 如下面的两条规则:
[0165] 规则一:if m=0 then r=1
[0166] 规则二:if m=0 and n=0 then r=1
[0167] 从属规则的检测方法是:首先对所有知识的结论进行检测,如果有两个规则结论是相同的,就把它们提取出来,再对提取出来的规则的条件进行检测,如果一个规则的条件在另一个规则中都可以找到,那就说明这两个规则存在从属关系。
[0168] 示例中表9的第二条规则与无故障情况下参数特征矛盾,故删掉。得到最简、最完整且能够判断为何种故障的规则表。
[0169] 表10:根据某高校提供的航空发动机故障仿真数据得到的最终约简表[0170]
[0171] 表11:由最终约简表提取得到的规则表
[0172]
[0173] 表12:对最终约简表进行规则检测修改后的约简表
[0174]
[0175] 表13:经规则检测修改后的规则表
[0176]
[0177] 本发明在原有粗糙集理论的基础上完善和创新,并将其应用到航空发动机故障诊断领域,根据某高校提供的基于航空发动机模型得到的故障仿真数据,得到有4种故障的故障规则表(见表13),同时总结出一套完善的基于数据驱动生成航空发动机故障规则的方法。其主要步骤为:
[0178] (1)首先通过对航空发动机的历史工况信息(如压气机进口总温,高压转子转速等等)进行数据采集。
[0179] (2)确定样本属性和各参数隶属函数表达式,并对数据进行预处理和离散化处理,同时结合与之对应的决策样本,建立了航空发动机的历史故障数据表。
[0180] (3)根据故障数据表,采用粗糙集数据挖掘算法属性约简和值约简,得到最终约简表进而生成文字规则。
[0181] (4)最后对规则进行检测。包括对等价、冗余、矛盾和从属规则处理,得到最终使用的规则,为航空发动机故障诊断专家提供提供有效的故障分析知识,进而存储到专家系统知识库。