CLIPS和C#结合实现电力操作票的自动生成
2017-08-12曾利孟文
曾 利 孟 文
(西南交通大学机械工程学院 四川 成都 610031)
CLIPS和C#结合实现电力操作票的自动生成
曾 利 孟 文
(西南交通大学机械工程学院 四川 成都 610031)
运用专家系统技术是实现电力操作票系统智能推理过程的主要手段,专家系统开发工具CLIPS可实现操作票专家系统模块的设计。为了弥补CLIPS图形界面开发能力的不足,以CLIPS和C#混合编程的方式研究操作票专家系统模块。CLIPS负责操作票专家系统的逻辑推理开发,主要完成CLP知识文件的设计,而C#负责图形界面的设计。C#通过调用免费的CLIPS动态链接库来完成两者的交互,实现了操作票从图形界面操作任务的制定到推理的自动生成过程。该方法较好地解决了操作票系统智能性不足的问题,实现了专家系统与用户界面的友好交互。
操作票系统 专家系统 CLIPS C# 自动生成
0 引 言
电力操作票制度是保障电网安全运行的重要手段之一,为减轻工作人员的劳动强度并提高开票效率,智能电网操作票系统应运而生。近年来,随着电力行业 “大数据”时代的到来,对智能电网的应用提出了更迫切的需求,从目前研究成果看,操作票系统的研究热点也集中在智能性上[1-3]。
智能操作票系统的智能性主要体现在智能推理开票、防误检测等,而具体实现又依赖于专家系统技术的应用。专家系统属于人工智能研究领域,它通过运用专家的知识和经验来解决实际问题。目前,专家系统的开发工具主要有ART、OPS、CLIPS、FRL等,它们各有优缺点。CLIPS即C语言集成产生式系统,由美国国家航天局NASA研发的一种多范例编程语言[4]。CLIPS的基本结构是产生式系统,推理过程采用的RETE算法利用了产生式系统的时间冗余和模式相似的特性,保留了规则匹配过程的中间信息,减少了后续匹配时间,显著地提高了系统的推理速度[5]。
CLIPS是一款应用广泛、成熟的轻量级解决方案,支持C/C++集成[6],但图形界面开发能力有所欠缺。故本文选取CLIPS和C#混合编程的方式对操作票专家系统模块进行研究,以实现操作票系统的智能推理开票。
1 CLIPS与C#的结合
CLIPS为人工智能而设计,具有强大的逻辑推理能力和良好的兼容性。外部程序代码可以作为一个外部函数在CLIPS中被定义和调用,同样,CLIPS除了可以被当作一个独立的工具之外,还能被其他应用程序语言调用,从而有利于大型智能系统的开发。另外,CLIPS的使用非常方便,CLIPS的源代码和执行文档在网上免费提供给开发人员,为用户的二次开发提供了便利[7]。
CLIPS是基于DOS操作系统,不利于用户命令的输入输出,缺乏友好的用户交互界面[8-9]。随着科学技术的发展,专家系统需要更友好的操作方式来服务用户[10],而C#作为主流的基于面向对象的程序开发语言,易于开发友好的用户界面,适合软件的快速开发[11]。从以上分析可知,CLIPS和C#结合开发应用程序可以实现二者的优势交互,CLIPS强大的逻辑推理负责专家系统知识库和推理机的开发,而C#负责系统图形界面的开发和外部数据的处理。
2 操作票专家系统模块简介
专家系统是智能倒闸操作票系统实现推理开票、防误检测等智能过程的主要工具。操作票专家系统模块不仅包含核心的知识库和推理机部分,还需要人机接口实现专家系统与用户界面的交互。运用专家系统进行自动推理开票就是在一定的设备拓扑连接前提下,根据电力操作规则及操作经验等,对初始操作任务指令决定出具体的设备操作步骤[12-13]。
CLIPS和C#混合编程完成操作票专家系统的开发,其基本模型如图1所示。其中,知识库和推理机是操作票专家系统的核心部分,由CLIPS负责,用户界面由C#开发完成。用户提取实际系统的知识抽象成事实模板和规则模板,其中包括电力操作规则、工作人员操作经验、系统设备状态与连接关系等。建立系统的规则库和事实库,形成CLP知识文件,操作任务作为用户的指令,在图形界面完成设置后,转换成专家系统可识别的知识格式后写入专家系统事实库,经由CLIPS内核推理机推理运行,决策出正确的操作步骤集,用户通过人机接口获取推理结果,并在用户界面显示。其中,事实模板与外部数据库保持一致的映射关系。
图1 操作票专家系统分析模型
3 建立系统知识文件
CLIPS的基本结构包括知识库、事实库、推理机等部分[14]。利用CLIPS进行操作票专家系统的开发时,首先需要建立系统的知识库和事实库。事实库包含推理的事实数据,知识库包含推理机运行依据的规则,推理机对运行进行总体控制。CLIPS的事实库表和规则库以CLIPS语法格式写入CLP格式文件,形成系统的知识文件。可在CLIPS环境中对CLP知识文件进行验证,验证无误后,可供C#开发环境中直接调用。
根据对电力倒闸操作票专家系统模块的分析,操作票专家系统的事实列表主要存储系统的设备信息及其拓扑连接关系,而规则知识库主要存储以电力操作规则为依据表示的操作推理规则和操作经验。
3.1 建立系统事实库
由于电力系统涉及的设备种类多种多样、操作类型复杂多变等实际情况,本文主要考虑电力一次设备的操作。建立一次设备的事实模板,同时为各设备类添加间隔属性,同一间隔内的设备具有相同的间隔属性,从而保证了设备之间的连接关系。
在CLIPS中事实模板类型类似于面向对象编程中的类,定义事实模板的关键字为deftemplate,按照CLIPS语法,定义断路器可描述成下面自定义模板:
(deftemplate Breaker “断路器”
(slot id)
(slot name)
(slot type)
(slot status)
(slot bayCode))
完成各设备类型事实模板的定义后,添加事实,通过事实列表关键字(deffacts)把具体的设备对象写入事实列表中。为保证事实库与实时数据库的一致性,用户通过CLIPS接口将数据库中的设备事实信息映射到专家系统的事实列表中,也便于专家系统事实库的更新。
3.2 建立系统知识库
知识库是专家系统的核心组成之一,专家系统所有的推理工作都必须在知识的指导下完成。操作票专家系统推理开票的过程就是根据用户输入的操作任务,按照设备连接形式与电力操作规则生成符合要求的操作序列集合[15]。
根据电力操作规程和电力操作经验,制定系统的推理开票规则。所有的操作最后都将具体到断路器集的操作,所以规则的结论部分将只涉及断路器和关联刀闸的操作。由于在特定的操作任务下,专家系统推理的结果将是一个操作集,即包含多条执行语句的操作集合,因此,在特定的操作对象和操作任务前提下,知识库中可能存在多条规则同时满足的情况。而实际上,各项操作存在先后操作顺序,所以在定义推理规则时,添加顺序操作码,同一操作任务前提下的规则通过顺序操作码形成顺序规则链。另外,具体规则的激发可能会导致事实库的变化(设备事实状态改变),形成新的事实,进而激发其他规则。
CLIPS中采用产生式表示法来表示规则,即采用“IF A THEN B”的格式,其中A表示规则的条件,B表示规则的结论。在操作票系统中,一个可能的规则为:
IF操作任务为断路器201由运行转热备用,THEN断开断路器201。
而用CLIPS的语法表示为:
(defrule bkRule
(1)
(Task (value 01)(objName bk201))
(2)
?bk <-(Breaker (name bk201)(status on))
(3)
(runcode (value 1))
(4)
=>
(assert (item (action BKOFF) (objName bk201)))
(5)
(modify ?bk (status off))
(6)
(modify (runcode (value 2))))
(7)
说明:
(1) 定义规则名称为bkRule;
(2) 表示操作对象名称bk201,内容为由运行转热备用的操作任务,“01”表示由运行转热备用;
(3) 从事实列表中搜索匹配的断路器,检测是否存在该设备事实;
(4) 表示顺序操作码,实现前后规则的衔接;
(5) (item模板表示操作语句)该条指令执行添加操作事实动作,action属性表示操作语句,objName属性表示操作对象名称,用来将action语句具体化;
(6) 修改断路器状态,由闭合至断开状态;
(7) 修改顺序操作码的值,作为下一条规则的条件。
实际运行时,推理机推理得到操作步骤集合,通过人机接口将该操作集反馈到用户界面,用户界面通过语义转化与具体化过程,得到推理开票过程最终的操作序列。
4 CLIPS和C#混合编程的实现
CLIPS和C#混合编程开发程序,主要有直接嵌入式和DLL混合式编程两种方法。直接嵌入式编程时, CLIPS的源码公开,用户可直接将CLIPS的源代码添加到C#程序中,进行适当地修改。而DLL式混合编程时,将开发者免费提供的CLIPS动态链接库添加到C#主程序中,由于动态链接库封装了Load、Reset、Run等CLIPS核心操作命令,用户直接通过调用操作函数实现与CLIPS专家系统的交互。本文采用DLL式混合编程的方法实现CLIPS和C#对操作票专家系统的共同开发。
互联网上有免费的CLIPS源代码和动态链接库供开发者使用,Mommosoft.ExpertSystem.dll是Mommosoft公司的clipsNet程序集,专门用于CLIPS和C#的混合编程。在C#开发环境中引入该链接库,就可实现用户界面对CLIPS专家系统的操作。
4.1 Mommosoft.ExpertSystem.dll函数接口说明
在使用DLL动态库的命令前需要了解各操作命令的含义及使用方法:
(1) Environment:CLIPS环境对象,CLIPS所有的活动操作都必须在该环境下完成。
(2) Load( string loadpath):表示Environment对象下的加载命令,loadpath表示待加载文件的路径,待加载文件即为用户已建立的CLP知识文件,通过该命令将CLIPS知识库与事实列表导入到系统开发平台,供推理机推理使用,例如environment.Load(“clipsKB.clp”)。
(3) Reset():该命令对已加载的CLP知识文件进行初始化。
(4) AssertString(string message):插入命令,可以将外部数据写入到CLIPS的知识库中,例如实现事实的添加等。待插入的数据格式必须符合CLIPS语法。
(5) Eval(string message):该命令可获取CLIPS知识库中的事实,实现专家系统图形界面的输出。推理开票时,将推理结果反馈到开票界面,从而完成开票过程。
4.2 DLL方式实现CLIPS与C#的交互
本文以Visual Studio2010为C#工具,开发基于Web的操作票系统。在其中添加对Mommosoft.ExpertSystem.dll的引用,C#客户端调用其动态库中封装的操作命令来实现操作票的自动生成。其基本流程如下:
(1) 在图形开票界面完成操作任务的设置与校核。
(2) 调用CLIPS动态库,定义CLIPS环境对象。
(3) 通过Load命令加载自定义并验证无误的CLP知识文件。
(4) 将自定义操作任务转化成符合CLIPS格式的事实对象,通过AssertString命令写入事实列表。比如,自定义操作任务(0→3):将断路器bk201由运行转检修,转化为:Task (value 03)(objName bk201),通过AssertString命令写入事实列表中。
(5) 然后执行Reset命令,初始化CLIPS环境。
(6) 执行Run命令,推理机推理运行,其结果保存在item事实模板中。
(7) 通过Eval命令获取推理结果,即item对象,并反馈到开票界面。
整个执行流程中,操作任务转化成CLIPS格式知识传入专家系统,启发系统规则的执行,推理机搜索相应的设备信息得到对应的推理结果,并将其翻译后反馈给用户,其知识的传递如图2所示。
图2 基本流程及知识传递
用户在图形界面设置初始任务,如图3所示,初始任务经过校核后转化成符合CLIPS语法的字符串,通过AssertString命令写入专家系统事实列表中,推理机运行。通过搜索到事实任务与对应的设备后,匹配激发规则R1,R1运行执行结论(向事实库写入操作语句)。然后继续进行事实与规则的搜索匹配,执行激发的规则。最终通过接口函数将推理得到的操作指令经语义转化与具体化过程后,形成具体的操作步骤集并反馈到开票界面,如图4所示。通过知识库中规则的完善,系统可满足用户的多种开票需求。
图3 操作任务设置
图4 推理结果
5 结 语
CLIPS是一款强大的专家系统开发工具,与C#结合开发专家系统,可以弥补CLIPS不利于用户交互的缺陷,实现与用户的友好交互。本文结合CLIPS和C#实现了电力倒闸操作票的自动生成过程。系统方便可靠、扩展性好、开发成本低,适应多种实际的开票需求,可通过规则的添加完善进而完成操作的防误检测等过程,对其他智能系统的开发有一定的借鉴意义。
[1] 徐俊杰,赵京虎,饶明军,等.基于SCADA系统的地区电网调度操作票系统的设计[J].电力系统保护与控制,2010,38(13):104-107.
[2] 林晓庆,任建文,张丙合,等.基于网络重构的电网智能调度操作票系统开发研究[J].电力系统保护与控制,2012,40(7):143-147.
[3] 刘伟.调控一体化模式下的电网调度智能操作票系统改造设计[D].南昌:南昌大学,2015.
[4] Joseph Giarratano,Gary Riley.专家系统原理及编程[M].印鉴,刘星成,汤庸,译.北京:机械工业出版社,2000.
[5] 谢晓方,姜震.一种结合CLIPS和VC++开发专家系统的方法[J].计算机系统应用,2004(12):61-63.
[6] Teubler T,Shuang L,Hellbruck H.Integrating expert system CLIPS into DUNE for AUV control[C]//OCEANS 2015-Genova.IEEE,2015.
[7] 华珊珊,李龙澍.CLIPS与高级语言交互的研究与实现[J].微机发展,2005,15(10):65-67.
[8] 陶元芳,宁志强.运用CLIPS推理机的桥式起重机起升机构设计专家系统[J].起重运输机械,2013(5):59-62.
[9] 温国谊,查广东,张翔.基于CLIPS的某型飞机故障诊断专家系统的设计与实现[J].中南大学学报(自然科学版),2013,44(S1):157-161.
[10] 王溪波,杨志浩.一种新的基于Web的专家系统开发方法[J].计算机技术与发展,2015,25(8):147-151.
[11] 韦辽.在C#.NET中调用CLIPS的技术实现与应用[J].机械工程师,2015(2):39-41.
[12] 庄海峰.智能调度操作票生成专家系统的设计与实现[J].安徽电力工程职业技术学院学报,2005,10(3):26-28.
[13] 陈素芳,王凯.基于多智能体的电网操作票自动生成系统[J].电力系统自动化,2008,32(15):49-53.
[14] 衣治安,赵旦春.基于CLIPS的油水井动态分析模型研究与实现[J].计算机与现代化,2014(11):122-126.
[15] 钟继凤,李晓明.多站倒闸操作票自动生成系统[J].电力自动化设备,2001,21(11):48-50.
IMPLEMENTATIONOFAUTOMATICGENERATIONOFPOWEROPERATIONORDERSYSTEMCOMBINEDCLIPSANDC#
Zeng Li Meng Wen
(SchoolofMechanicalEngineering,SouthwestJiaotongUniversity,Chengdu610031,Sichuan,China)
Using expert system technology is the main method to realize intelligent reasoning process of power operation order system. CLIPS, an expert system development tool, can realize the design of operation order expert system module. In order to make up for the inadequacy of CLIPS graphical interface development ability, we used mixed programming with CLIPS and C# to study the operation order expert system module. CLIPS is responsible for the logic development of expert system, and completes the design of CLP format knowledge file mainly. C# is responsible for design of the graphical interface. The system realizes friendly interaction of CLIPS and C# through that C# calls free CLIPS a dynamic library. The system implements the automatic generation process of an operation order system from setting operation task on graphical interface to the reasoning process. The method has well solved the poor intelligence of operation ticket system, realizing friendly interaction between expert system and user interface.
Operation order system Expert system CLIPS C# Automatic generation
2016-11-23。曾利,硕士生,主研领域:电力SCADA系统开发。孟文,副教授。
TP182
A
10.3969/j.issn.1000-386x.2017.08.022