3 故障诊断专家系统的基本原理
树的结构定义是一个递归的定义,即在树的定义中又用到树的概念,它道出了树的固有特性:分支分层。树的结点包含一个数据元素及若干指向其子树的分支。
结点拥有的子树数称为结点的度。例如在树的示例中,A的度为3, C的度为1,F的度为0。结点的子树的根称为该结点的孩子,相应的,该结点称为该子的双亲。
例如,在树的示例所示的树中,D为A的子树,同时又是T3的根,则D是A的孩子,而A则是D的双亲,同一个双亲的孩子之间互称兄弟。例如,H, I和J互为兄弟。结点的层次从根开始定义起,根为第一层,根的孩子为第二层。树中结点的最大层次称为树的深度或高度。如A树的深度为4。如果将树中结点的各子树看成从左至右是有次序的(即不能互换),则称该树为有序树,否则称为无序树。在有序树中最左边的子树的根称为第一个孩子,最右边的孩子称为最后一个孩子。 3.3.3 发动机故障树与树状数据结构
图3-2(图略)为发动机起动困难的故障树,B表示发动机起动困难,为故障树的根结点,下一层N, O, P为故障树的子树结点即为一级原因,再下一层则是二级原因的树叉,二级原因下边又包含三级原因,即故障树的第三层,由于故障树比较大,在这里就不详细叙述了。对于发动机的故障来说有好多,根据此种数据结构可以构成多棵故障树,即为故障森林。
森林是m(m>=0)棵互不相交的树的集合。对树中每个结点而言,其子树的集合即为森林。
3.3.4 二叉树及其操作
在数据结构当中有一种特殊树的抽象数据类型——二叉树。二叉树是另一种树状结构,它的特点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。对于二叉树重点讨论它的存储结构及操作。二叉树的存储结构一般采用双链式存储结构来存储,因为在二叉树的一些应用中,常常要求在树中查找具有某种特征的结点,或者对树中全部结点逐一进行某种处理。这里提出一个遍历二叉树的问题,即如何按某条搜索路径巡访树中每个结点,使得每个结点均被访问一次,而且仅被访问一次。“访问”的含义很广,可以是对结点作各种处理,表现在数据库当中一般为检索、插入和删除等操作。
遍历对线性结构来说,是一个容易解决的问题。而对二叉树则不然,由于二叉树是一种非线性结构,每个结点都只能有两棵子树,因而需要寻找一种存储规律,以便使二叉树上的结点能排列在一个线性队列上,从而便于某种操作的产生。分析表明,二叉树采用双向链表的存储结构对于各种操作都是比较便利的。表示二叉的链表中的结点至少
7
山西国际商务职业学院毕业设计
包含4个域:数据域和左、右孩子域,及父亲结点域。利用这两种结点结构所得二叉树的存储结构称之为三叉链表或双向链表。
先序遍历二叉树的操作定义为:
若二叉树为空,则空操作;否则访问根结点;先序遍历左子树;先序遍历右子树。 中序遍历二叉树的操作定义为:若二叉树为空,则空操作;否则中序遍历左子树;访问根结点;中序遍历右子树。
后序遍历二叉树的操作定义为:若二叉树为空,则空操作;否则后序遍历左子树;后序遍历右子树;访问根结点。
对薪酬的期望0.450.40.350.3比例0.250.20.150.10.0501000以下1000-15001500-2000薪酬2000-25002500以上山西大学太原理工山西师范大同大学中北大学晋中学院
图3.5毕业生对薪酬期望所占比例 表3.8毕业生对薪酬期望频度分布
学校 山西大学 太原理工 山西师范 大同大学 中北大学 晋中学院
1000以下
2 1 3 9 7 11
1000-1500
10 4 16 14 11 9
1500-2000
18 14 24 12 11 7
2000-2500
20 22 21 7 3 1
2500以上
9 11 5 1 0 0
8
3 故障诊断专家系统的基本原理
依照递归算法执行过程中递归工作栈的状态变化情况可直接写出相应的非递归算法。例如,从中序遍历递归算法执行中递归工作栈的状态可见:(1)工作记录中包含两项,其一是递归调用的语句编号,其二是指向根结点的指针,则当栈顶记录中的指针非空时,应遍历左子树,即指向左子树根的指针进栈;(2)若栈顶的记录中的指针值为空,则应退至上一层,若是从左子树返回,则应访问当前层即栈顶记录中指针所指的根结点;(3)若是从右子树返回,则表明当前层的遍历结束,应继续退栈。从另一角度看,这意味着遍历右子树时不再需要保存当前层的根指针,可直接修改栈顶记录中的指针即可。由此可得中序遍历二叉数的非递归算法:
表4.6学生在毕业后对单位性质的选择
政府机关
学校
人 数
比 例
事业单位 人 数
比 例
外资企业 人 数
比 例
民营企业 人 数
比 例
国营企业 人 数
比 例
人 数
其他 比 例
山西大学 16 0.271186 20 0.338983 7 0.118644 3 0.050847 11 0.186441 2 0.033898 太原理工 14 0.269231 16 0.307692 7 0.134615 5 0.096154 8 0.153846 2 0.038462 山西师范 12 0.173913 45 0.652174 2 0.028986 1 0.014493 8 0.115942 1 0.014493 大同大学 9 0.209302 6 0.139535 2 0.046512 17 0.395349 6 0.139535 3 0.069767 中北大学 7
0.21875
6
0.1875
1
0.03125 12
0.375
4
0.125
2
0.0625
晋中学院 6 0.214286 5 0.178571 1 0.035714 9 0.321429 5 0.178571 2 0.071429
毕业生对工作单位性质的选择0.70.60.5山西大学太原理工大学山西师范大学大同大学中北大学晋中学院比例0.40.30.20.10政府机关事业单位外资企业民营企业单位性质国营企业其他
图4.3各高校毕业生对单位性质选择的比例分布情况
9
山西国际商务职业学院毕业设计
上面详细论述了二叉树的存储结构及其三种遍历的方法,那二叉树和故障森林有什么联系呢?经过上述分析,发动机故障采用故障树的结构来组织,多个故障就意味着一个故障森林,由上述分析可知,对于多个故障树的操作是相当的困难的,所以我们必须把故障森林转化成一棵故障树,这就是森林转化为二叉树的操作。 3.3.5 森林与二叉树的转换
经过上述分析,发动机故障采用故障树的结构来组织,多个故障就意味着一个故障森林,可以仔细的思考思考,对于多个故障树的操作是相当的困难的,所以就必须把故障森林转化成一棵故障树,这就是森林转化为二叉树的操作,如图3-4(图略)所示。 3.3.6 故障森林与故障二叉树的转换
若把森林中的第二棵树的干结点看成是第一棵树的根结点的兄弟,则同样可导出森林和二叉树的对应关系。如图3-6所示,发动机起动困难的故障树:
故障森林转换成一棵故障二叉树是发动机故障诊断专家系统的重要的前提条件,只有把后台的数据库结构完善后才能作各种给予二叉故障树的操作。
3.4 故障诊断的知识表示
从故障树的顶事件至每一个底事件形成了故障分析支路。这样的支路在程序实现时均与一个链表结构对应。为了方便解释,在系统中采用了双向链表结构来表示这些支路,并用数据库表结构表示,见表3-1(表略)。
下面对各个字段进行解释。
结点标识码ID:节点标识码,字符串,是节点的标记。每一个显节点均对应唯一的标识码。标识码由数字组成。
结点数据ask 1,ask2:根据类型的不同有不同的含义。当类型为“提问”时askl为现象或故障,ask2设置为空;当类型为“结论”时,askl为诊断结果,ask2为排除方法。
父亲结点firstl:父亲结点标识;左孩子结点next1:左孩子结点标识;右孩子结点next2:右孩子结点标识。
结点类型lei:结点的类型
3.5 故障诊断推理机制基本思想
首先用户选择故障名称,找到相应的故障入口,然后根据故障入口给出相应的提问,并在用户回答问题以后进行推理,如此反复,引导用户完成诊断过程。如果用户没有找到结果,允许用户重新诊断。
10
3 故障诊断专家系统的基本原理
3.6 诊断流程
柴油机常见故障诊断流程如图3-7(图略)所示。
图3.1生源占学生总数的比例
11