张炳达 吴东 沈捷 天津大学电气自动化与能源工程学院,300072 天津
专家系统(ES)是人工智能(AI)领域的一个重要研究方向,它的产生对AI的研究方法是一个重大突破,使AI由研究通用问题求解程序(GPS)转入解决实际问题的具体研究,从探索广泛普遍的思维规律转变到知识库研究。 由于每座实际变电站的主接线方式、运行方式、保护设置等方面都有各自的特点和独到之处,变电站培训仿真系统必须具有相当程度的通用性、灵活性,才能适应千变万化的具体情况。本文将专家系统原理应用到变电站培训仿真系统中去,较好地解决了多样性与通用性之间的矛盾,可方便地设计用于不同变电站的多套培训方案。
1 知识库数据结构 专家系统知识库主要由规则库和事实库组成,规则库中存储的是从专家那里总结出来的形如“IF—THEN”的逻辑表达式,事实库中则存储所需的状态陈述或断言。运用C++语言面向对象的特性,可构造适应于专家系统和具体变电站特点的各种数据结构及相应控件。 1.1 多表形式的事实库 在仿真推理中要用到各种事实,如元件的通断情况、关键节点的电源情况、故障的位置与类型、保护的启动情况等。为便于对事实库的搜索和匹配,将这些事实按类别定义为多个表,如元件表、关键节点电源表、故障表、保护表等,如下所示: int Element[MAX_ELEMENT]; int Power[MAX_POWER]; int Fault[MAX_FAULT]; int Protection[MAX_PROT]; 事实库不仅保存系统初始状态的事实,还会随着推理过程的进行不断有新事实加入,因而表中部分元素的状态在推理之前可能是不确定的。相应地,上述表中每个元素的取值有-1、0和+1三种可能性,分别对应事实的未确定、假和真三种状态。 1.2 事实子句 规则的基本组成单位是事实子句。事实子句是指表示某个事实的数据结构,即诸如Element、Fault、Power、Protection等事实表中某元素的引用方式。需特殊考虑的是这些事实表都是布尔型,所表达的是“Something is True or False”这样的含义,在数据结构中应有否定形式的表示方法。具体定义为 class K_Clause { int Type;∥子句的类型,可能的类型有:AND、OR、NOT以及FACT bool* FactTable;∥事实表的指针 int Position; ∥在事实表中的位置,如取值为负,表示否定 }; 在该结构中,当Type取值为AND、OR或NOT时,表示这是一个逻辑运算符,其余各域的值略。Position取值的正负表示事实的肯定与否定形式。 1.3 规则(知识) 每条产生式规则是形如“如果条件成立,则执行这样的操作”的“IF—THEN”语句模型,其一般形式为LHS→RHS,其中LHS和RHS是有序的符号串,分别称为规则的前件和后件,或称前提和结论。它们是由事实和逻辑运算符组成的后缀逻辑表达式,存储在相应的矢量之中,矢量中元素的数据类型就是前面定义的事实子句的类型。 class K_Rule { K_Clause Premise[MAX]; ∥前提,后缀逻辑表达式矢量 K_Clause Conclusion[MAX]; ∥结论,后缀逻辑表达式矢量 TMachResult MachResult;∥匹配结果,值为Success,Failure或Pending }; 1.4 规则库 规则库的数据结构是由规则组成的矢量: K_Rule_Rules_Base[MAX];
2 推理机控件 推理机制是专家系统的一个重要且必不可少的组成部分。推理机所执行的实际上是一个“识别→修正”的循环。不断地从事实数据库中选出一条最合适的规则,执行该规则,导致数据库的修改,并以修改之后的数据库为基础,继续“识别→修正”循环。在这个循环过程中,本文采用广度优先搜索的控制策略,即先检查规则的所有前提,而不深究每一个前提的细节,当发现尚未确定的间接条件时,不是立即就去确定该条件,而是继续下一条规则的识别。由于在规则构造过程中,已尽量限制了间接条件的数目,很可能在一次完全的搜索之后,就已确定了大多数的间接条件,下一轮的搜索只需在这些新确定的条件的范围内进行,搜索空间的不断缩小有利于搜索速度的提高。 为使推理机更易于在程序中使用,本文将推理机功能集成在一C++控件(即推理机控件)中,当需要推理模块时,只需构造该控件并启动即可。
3 分层知识库与分级推理 搜索空间的大小是影响专家系统推理效率的一个重要因素。随着知识库的增大,推理的解空间逐步扩大,甚至会发生“组合爆炸”, 过大的知识库将造成求解不可行。为解决这一问题,本文对仿真专家系统的知识库进行了分层处理,同时实行两级推理的策略,将推理过程分解在较小的范围内进行。 3.1 知识库的分层 知识库的一个特点在于可以按照一定的方式分块,对不同范围的问题采用相对独立的知识子库(规则库)进行推理。本文对知识库采取分级分层的组织方法,将不同类型的规则形成相对独立的规则子库,如相间短路知识库、单相接地知识库、误操作知识库等等,每一类子库之下又可根据具体的故障点形成为更细的子库划分。推理过程开始之前先进行知识子库的选取,在选出的较小的子库上进行实际推理,由于各子库按照模块化的原则构造,某一子库可成为多个推理过程的搜索对象。这种分块化的处理方法有效地缩小了推理搜索的解空间,提高了推理效率,保证了仿真实时性。 3.2 两级推理 为进一步缩小解空间,提高推理速度,本文将变电站培训仿真的整体过程分解为形式上分离,却又互相作用的两个子过程。一个是由开入信息驱动的对主接线图进行拓扑分析和专家系统推理过程,另一个是以0.1 s为步长按时间段逐步进行的对各保护控件的仿真过程。在变电站状态发生变化时(如学员进行了操作,教员机设置了故障,或者仿真机发出开出信号等),首先对一次系统进行图形拓扑分析和专家系统推理,得出有哪些保护应启动的结论,然后根据此结论在按时间段的保护逐段仿真过程中调用相应的保护仿真控件,进行具体的推理过程,最终得出变电站应产生的相应现象。这种两级式的推理方式使得每次推理所用到的知识库都比较小,从而有效地降低了“组合爆炸”发生的可能性,从而仿真的效率得到提高。 3.3 保护仿真控件 对保护的仿真是仿真总体过程的一个重要组成部分,为提高系统的模块化程度和灵活性,将变电站中安装的各种保护设计为相应的保护仿真控件,以实现对各保护的仿真。针对不同的变电站,只需添加、减少或修改相应的保护仿真控件,就可以完成移植,减少了系统的开发工作量。当从仿真变的一次系统状态变化过程中分析出各保护的启动情况之后,由保护仿真控件通过专家系统的推理算法决定保护是否实际动作。 分析二次系统展开图,可知某保护能否动作,涉到保护直流电源的有无,控制保险的通断,线圈是否断线,继电器是否拒动,时间元件的延时是否到达等因素,构成“与”“或”的关系。以上述条件形成保护动作的规则库,运用推理机控件就很易得到结论。
4 结论 本文从提高变电站培训仿真系统通用性的角度出发,提出将专家系统原理运用到培训仿真中去的方案,并用C++语言对系统实现的主要问题进行了讨论。对知识库实行分级组织,同时构造保护仿真控件,与一次系统仿真相结合形成两级推理,使专家系统仿真的搜索空间缩小,提高了仿真效率。
5 参考文献 1 赵瑞清.专家系统原理.北京:气象出版社,1986 2 王树林,袁志宏.专家系统设计原理.北京:科学出版社,1991 3 李树鸿,张炳达,刘长胜.变电站培训仿真系统.天津电力技术,1995(2):15~19 4 [美]Herbert Sehildt著.白为民,张蒙生译.C语言与人工智能.中国科学院希望高级电脑技术公司,1991,2 5 程慧霞et al.用C++建造专家系统.北京:电子工业出版社,1996 6 朱永利,杨以涵.专家系统在编写变电站倒闸操作票中的应用.中国电机工程学报,1998(6) 7 吴斌,刘沛,陈德树.继电保护中的人工智能技术及其应用.电力系统自动化,1995,19(5) 8 王克昌et al.继电保护智能化整定计算和管理.中国电机工程学会第五届全国继电保护学术会议论文集,1993 9 黄晓玲,曹铁军.专家系统在继电保护中的应用.东北电力技术,1997(3) 10 秦红霞,董张卓et al.基于面向对象技术的变电站故障诊断及恢复处理专家系统.电力系统自动化,1996,20(9)
|