曾 利 孟 文
(西南交通大學機械工程學院 四川 成都 610031)
?
CLIPS和C#結(jié)合實現(xiàn)電力操作票的自動生成
曾 利 孟 文
(西南交通大學機械工程學院 四川 成都 610031)
運用專家系統(tǒng)技術(shù)是實現(xiàn)電力操作票系統(tǒng)智能推理過程的主要手段,專家系統(tǒng)開發(fā)工具CLIPS可實現(xiàn)操作票專家系統(tǒng)模塊的設(shè)計。為了彌補CLIPS圖形界面開發(fā)能力的不足,以CLIPS和C#混合編程的方式研究操作票專家系統(tǒng)模塊。CLIPS負責操作票專家系統(tǒng)的邏輯推理開發(fā),主要完成CLP知識文件的設(shè)計,而C#負責圖形界面的設(shè)計。C#通過調(diào)用免費的CLIPS動態(tài)鏈接庫來完成兩者的交互,實現(xiàn)了操作票從圖形界面操作任務的制定到推理的自動生成過程。該方法較好地解決了操作票系統(tǒng)智能性不足的問題,實現(xiàn)了專家系統(tǒng)與用戶界面的友好交互。
操作票系統(tǒng) 專家系統(tǒng) CLIPS C# 自動生成
電力操作票制度是保障電網(wǎng)安全運行的重要手段之一,為減輕工作人員的勞動強度并提高開票效率,智能電網(wǎng)操作票系統(tǒng)應運而生。近年來,隨著電力行業(yè) “大數(shù)據(jù)”時代的到來,對智能電網(wǎng)的應用提出了更迫切的需求,從目前研究成果看,操作票系統(tǒng)的研究熱點也集中在智能性上[1-3]。
智能操作票系統(tǒng)的智能性主要體現(xiàn)在智能推理開票、防誤檢測等,而具體實現(xiàn)又依賴于專家系統(tǒng)技術(shù)的應用。專家系統(tǒng)屬于人工智能研究領(lǐng)域,它通過運用專家的知識和經(jīng)驗來解決實際問題。目前,專家系統(tǒng)的開發(fā)工具主要有ART、OPS、CLIPS、FRL等,它們各有優(yōu)缺點。CLIPS即C語言集成產(chǎn)生式系統(tǒng),由美國國家航天局NASA研發(fā)的一種多范例編程語言[4]。CLIPS的基本結(jié)構(gòu)是產(chǎn)生式系統(tǒng),推理過程采用的RETE算法利用了產(chǎn)生式系統(tǒng)的時間冗余和模式相似的特性,保留了規(guī)則匹配過程的中間信息,減少了后續(xù)匹配時間,顯著地提高了系統(tǒng)的推理速度[5]。
CLIPS是一款應用廣泛、成熟的輕量級解決方案,支持C/C++集成[6],但圖形界面開發(fā)能力有所欠缺。故本文選取CLIPS和C#混合編程的方式對操作票專家系統(tǒng)模塊進行研究,以實現(xiàn)操作票系統(tǒng)的智能推理開票。
CLIPS為人工智能而設(shè)計,具有強大的邏輯推理能力和良好的兼容性。外部程序代碼可以作為一個外部函數(shù)在CLIPS中被定義和調(diào)用,同樣,CLIPS除了可以被當作一個獨立的工具之外,還能被其他應用程序語言調(diào)用,從而有利于大型智能系統(tǒng)的開發(fā)。另外,CLIPS的使用非常方便,CLIPS的源代碼和執(zhí)行文檔在網(wǎng)上免費提供給開發(fā)人員,為用戶的二次開發(fā)提供了便利[7]。
CLIPS是基于DOS操作系統(tǒng),不利于用戶命令的輸入輸出,缺乏友好的用戶交互界面[8-9]。隨著科學技術(shù)的發(fā)展,專家系統(tǒng)需要更友好的操作方式來服務用戶[10],而C#作為主流的基于面向?qū)ο蟮某绦蜷_發(fā)語言,易于開發(fā)友好的用戶界面,適合軟件的快速開發(fā)[11]。從以上分析可知,CLIPS和C#結(jié)合開發(fā)應用程序可以實現(xiàn)二者的優(yōu)勢交互,CLIPS強大的邏輯推理負責專家系統(tǒng)知識庫和推理機的開發(fā),而C#負責系統(tǒng)圖形界面的開發(fā)和外部數(shù)據(jù)的處理。
專家系統(tǒng)是智能倒閘操作票系統(tǒng)實現(xiàn)推理開票、防誤檢測等智能過程的主要工具。操作票專家系統(tǒng)模塊不僅包含核心的知識庫和推理機部分,還需要人機接口實現(xiàn)專家系統(tǒng)與用戶界面的交互。運用專家系統(tǒng)進行自動推理開票就是在一定的設(shè)備拓撲連接前提下,根據(jù)電力操作規(guī)則及操作經(jīng)驗等,對初始操作任務指令決定出具體的設(shè)備操作步驟[12-13]。
CLIPS和C#混合編程完成操作票專家系統(tǒng)的開發(fā),其基本模型如圖1所示。其中,知識庫和推理機是操作票專家系統(tǒng)的核心部分,由CLIPS負責,用戶界面由C#開發(fā)完成。用戶提取實際系統(tǒng)的知識抽象成事實模板和規(guī)則模板,其中包括電力操作規(guī)則、工作人員操作經(jīng)驗、系統(tǒng)設(shè)備狀態(tài)與連接關(guān)系等。建立系統(tǒng)的規(guī)則庫和事實庫,形成CLP知識文件,操作任務作為用戶的指令,在圖形界面完成設(shè)置后,轉(zhuǎn)換成專家系統(tǒng)可識別的知識格式后寫入專家系統(tǒng)事實庫,經(jīng)由CLIPS內(nèi)核推理機推理運行,決策出正確的操作步驟集,用戶通過人機接口獲取推理結(jié)果,并在用戶界面顯示。其中,事實模板與外部數(shù)據(jù)庫保持一致的映射關(guān)系。

圖1 操作票專家系統(tǒng)分析模型
CLIPS的基本結(jié)構(gòu)包括知識庫、事實庫、推理機等部分[14]。利用CLIPS進行操作票專家系統(tǒng)的開發(fā)時,首先需要建立系統(tǒng)的知識庫和事實庫。事實庫包含推理的事實數(shù)據(jù),知識庫包含推理機運行依據(jù)的規(guī)則,推理機對運行進行總體控制。CLIPS的事實庫表和規(guī)則庫以CLIPS語法格式寫入CLP格式文件,形成系統(tǒng)的知識文件。可在CLIPS環(huán)境中對CLP知識文件進行驗證,驗證無誤后,可供C#開發(fā)環(huán)境中直接調(diào)用。
根據(jù)對電力倒閘操作票專家系統(tǒng)模塊的分析,操作票專家系統(tǒng)的事實列表主要存儲系統(tǒng)的設(shè)備信息及其拓撲連接關(guān)系,而規(guī)則知識庫主要存儲以電力操作規(guī)則為依據(jù)表示的操作推理規(guī)則和操作經(jīng)驗。
3.1 建立系統(tǒng)事實庫
由于電力系統(tǒng)涉及的設(shè)備種類多種多樣、操作類型復雜多變等實際情況,本文主要考慮電力一次設(shè)備的操作。建立一次設(shè)備的事實模板,同時為各設(shè)備類添加間隔屬性,同一間隔內(nèi)的設(shè)備具有相同的間隔屬性,從而保證了設(shè)備之間的連接關(guān)系。
在CLIPS中事實模板類型類似于面向?qū)ο缶幊讨械念悾x事實模板的關(guān)鍵字為deftemplate,按照CLIPS語法,定義斷路器可描述成下面自定義模板:
(deftemplate Breaker “斷路器”
(slot id)
(slot name)
(slot type)
(slot status)
(slot bayCode))
完成各設(shè)備類型事實模板的定義后,添加事實,通過事實列表關(guān)鍵字(deffacts)把具體的設(shè)備對象寫入事實列表中。為保證事實庫與實時數(shù)據(jù)庫的一致性,用戶通過CLIPS接口將數(shù)據(jù)庫中的設(shè)備事實信息映射到專家系統(tǒng)的事實列表中,也便于專家系統(tǒng)事實庫的更新。
3.2 建立系統(tǒng)知識庫
知識庫是專家系統(tǒng)的核心組成之一,專家系統(tǒng)所有的推理工作都必須在知識的指導下完成。操作票專家系統(tǒng)推理開票的過程就是根據(jù)用戶輸入的操作任務,按照設(shè)備連接形式與電力操作規(guī)則生成符合要求的操作序列集合[15]。
根據(jù)電力操作規(guī)程和電力操作經(jīng)驗,制定系統(tǒng)的推理開票規(guī)則。所有的操作最后都將具體到斷路器集的操作,所以規(guī)則的結(jié)論部分將只涉及斷路器和關(guān)聯(lián)刀閘的操作。由于在特定的操作任務下,專家系統(tǒng)推理的結(jié)果將是一個操作集,即包含多條執(zhí)行語句的操作集合,因此,在特定的操作對象和操作任務前提下,知識庫中可能存在多條規(guī)則同時滿足的情況。而實際上,各項操作存在先后操作順序,所以在定義推理規(guī)則時,添加順序操作碼,同一操作任務前提下的規(guī)則通過順序操作碼形成順序規(guī)則鏈。另外,具體規(guī)則的激發(fā)可能會導致事實庫的變化(設(shè)備事實狀態(tài)改變),形成新的事實,進而激發(fā)其他規(guī)則。
CLIPS中采用產(chǎn)生式表示法來表示規(guī)則,即采用“IF A THEN B”的格式,其中A表示規(guī)則的條件,B表示規(guī)則的結(jié)論。在操作票系統(tǒng)中,一個可能的規(guī)則為:
IF操作任務為斷路器201由運行轉(zhuǎn)熱備用,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) 定義規(guī)則名稱為bkRule;
(2) 表示操作對象名稱bk201,內(nèi)容為由運行轉(zhuǎn)熱備用的操作任務,“01”表示由運行轉(zhuǎn)熱備用;
(3) 從事實列表中搜索匹配的斷路器,檢測是否存在該設(shè)備事實;
(4) 表示順序操作碼,實現(xiàn)前后規(guī)則的銜接;
(5) (item模板表示操作語句)該條指令執(zhí)行添加操作事實動作,action屬性表示操作語句,objName屬性表示操作對象名稱,用來將action語句具體化;
(6) 修改斷路器狀態(tài),由閉合至斷開狀態(tài);
(7) 修改順序操作碼的值,作為下一條規(guī)則的條件。
實際運行時,推理機推理得到操作步驟集合,通過人機接口將該操作集反饋到用戶界面,用戶界面通過語義轉(zhuǎn)化與具體化過程,得到推理開票過程最終的操作序列。
CLIPS和C#混合編程開發(fā)程序,主要有直接嵌入式和DLL混合式編程兩種方法。直接嵌入式編程時, CLIPS的源碼公開,用戶可直接將CLIPS的源代碼添加到C#程序中,進行適當?shù)匦薷摹6鳧LL式混合編程時,將開發(fā)者免費提供的CLIPS動態(tài)鏈接庫添加到C#主程序中,由于動態(tài)鏈接庫封裝了Load、Reset、Run等CLIPS核心操作命令,用戶直接通過調(diào)用操作函數(shù)實現(xiàn)與CLIPS專家系統(tǒng)的交互。本文采用DLL式混合編程的方法實現(xiàn)CLIPS和C#對操作票專家系統(tǒng)的共同開發(fā)。
互聯(lián)網(wǎng)上有免費的CLIPS源代碼和動態(tài)鏈接庫供開發(fā)者使用,Mommosoft.ExpertSystem.dll是Mommosoft公司的clipsNet程序集,專門用于CLIPS和C#的混合編程。在C#開發(fā)環(huán)境中引入該鏈接庫,就可實現(xiàn)用戶界面對CLIPS專家系統(tǒng)的操作。
4.1 Mommosoft.ExpertSystem.dll函數(shù)接口說明
在使用DLL動態(tài)庫的命令前需要了解各操作命令的含義及使用方法:
(1) Environment:CLIPS環(huán)境對象,CLIPS所有的活動操作都必須在該環(huán)境下完成。
(2) Load( string loadpath):表示Environment對象下的加載命令,loadpath表示待加載文件的路徑,待加載文件即為用戶已建立的CLP知識文件,通過該命令將CLIPS知識庫與事實列表導入到系統(tǒng)開發(fā)平臺,供推理機推理使用,例如environment.Load(“clipsKB.clp”)。
(3) Reset():該命令對已加載的CLP知識文件進行初始化。
(4) AssertString(string message):插入命令,可以將外部數(shù)據(jù)寫入到CLIPS的知識庫中,例如實現(xiàn)事實的添加等。待插入的數(shù)據(jù)格式必須符合CLIPS語法。
(5) Eval(string message):該命令可獲取CLIPS知識庫中的事實,實現(xiàn)專家系統(tǒng)圖形界面的輸出。推理開票時,將推理結(jié)果反饋到開票界面,從而完成開票過程。
4.2 DLL方式實現(xiàn)CLIPS與C#的交互
本文以Visual Studio2010為C#工具,開發(fā)基于Web的操作票系統(tǒng)。在其中添加對Mommosoft.ExpertSystem.dll的引用,C#客戶端調(diào)用其動態(tài)庫中封裝的操作命令來實現(xiàn)操作票的自動生成。其基本流程如下:
(1) 在圖形開票界面完成操作任務的設(shè)置與校核。
(2) 調(diào)用CLIPS動態(tài)庫,定義CLIPS環(huán)境對象。
(3) 通過Load命令加載自定義并驗證無誤的CLP知識文件。
(4) 將自定義操作任務轉(zhuǎn)化成符合CLIPS格式的事實對象,通過AssertString命令寫入事實列表。比如,自定義操作任務(0→3):將斷路器bk201由運行轉(zhuǎn)檢修,轉(zhuǎn)化為:Task (value 03)(objName bk201),通過AssertString命令寫入事實列表中。
(5) 然后執(zhí)行Reset命令,初始化CLIPS環(huán)境。
(6) 執(zhí)行Run命令,推理機推理運行,其結(jié)果保存在item事實模板中。
(7) 通過Eval命令獲取推理結(jié)果,即item對象,并反饋到開票界面。
整個執(zhí)行流程中,操作任務轉(zhuǎn)化成CLIPS格式知識傳入專家系統(tǒng),啟發(fā)系統(tǒng)規(guī)則的執(zhí)行,推理機搜索相應的設(shè)備信息得到對應的推理結(jié)果,并將其翻譯后反饋給用戶,其知識的傳遞如圖2所示。

圖2 基本流程及知識傳遞
用戶在圖形界面設(shè)置初始任務,如圖3所示,初始任務經(jīng)過校核后轉(zhuǎn)化成符合CLIPS語法的字符串,通過AssertString命令寫入專家系統(tǒng)事實列表中,推理機運行。通過搜索到事實任務與對應的設(shè)備后,匹配激發(fā)規(guī)則R1,R1運行執(zhí)行結(jié)論(向事實庫寫入操作語句)。然后繼續(xù)進行事實與規(guī)則的搜索匹配,執(zhí)行激發(fā)的規(guī)則。最終通過接口函數(shù)將推理得到的操作指令經(jīng)語義轉(zhuǎn)化與具體化過程后,形成具體的操作步驟集并反饋到開票界面,如圖4所示。通過知識庫中規(guī)則的完善,系統(tǒng)可滿足用戶的多種開票需求。

圖3 操作任務設(shè)置

圖4 推理結(jié)果
CLIPS是一款強大的專家系統(tǒng)開發(fā)工具,與C#結(jié)合開發(fā)專家系統(tǒng),可以彌補CLIPS不利于用戶交互的缺陷,實現(xiàn)與用戶的友好交互。本文結(jié)合CLIPS和C#實現(xiàn)了電力倒閘操作票的自動生成過程。系統(tǒng)方便可靠、擴展性好、開發(fā)成本低,適應多種實際的開票需求,可通過規(guī)則的添加完善進而完成操作的防誤檢測等過程,對其他智能系統(tǒng)的開發(fā)有一定的借鑒意義。
[1] 徐俊杰,趙京虎,饒明軍,等.基于SCADA系統(tǒng)的地區(qū)電網(wǎng)調(diào)度操作票系統(tǒng)的設(shè)計[J].電力系統(tǒng)保護與控制,2010,38(13):104-107.
[2] 林曉慶,任建文,張丙合,等.基于網(wǎng)絡(luò)重構(gòu)的電網(wǎng)智能調(diào)度操作票系統(tǒng)開發(fā)研究[J].電力系統(tǒng)保護與控制,2012,40(7):143-147.
[3] 劉偉.調(diào)控一體化模式下的電網(wǎng)調(diào)度智能操作票系統(tǒng)改造設(shè)計[D].南昌:南昌大學,2015.
[4] Joseph Giarratano,Gary Riley.專家系統(tǒng)原理及編程[M].印鑒,劉星成,湯庸,譯.北京:機械工業(yè)出版社,2000.
[5] 謝曉方,姜震.一種結(jié)合CLIPS和VC++開發(fā)專家系統(tǒng)的方法[J].計算機系統(tǒng)應用,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與高級語言交互的研究與實現(xiàn)[J].微機發(fā)展,2005,15(10):65-67.
[8] 陶元芳,寧志強.運用CLIPS推理機的橋式起重機起升機構(gòu)設(shè)計專家系統(tǒng)[J].起重運輸機械,2013(5):59-62.
[9] 溫國誼,查廣東,張翔.基于CLIPS的某型飛機故障診斷專家系統(tǒng)的設(shè)計與實現(xiàn)[J].中南大學學報(自然科學版),2013,44(S1):157-161.
[10] 王溪波,楊志浩.一種新的基于Web的專家系統(tǒng)開發(fā)方法[J].計算機技術(shù)與發(fā)展,2015,25(8):147-151.
[11] 韋遼.在C#.NET中調(diào)用CLIPS的技術(shù)實現(xiàn)與應用[J].機械工程師,2015(2):39-41.
[12] 莊海峰.智能調(diào)度操作票生成專家系統(tǒng)的設(shè)計與實現(xiàn)[J].安徽電力工程職業(yè)技術(shù)學院學報,2005,10(3):26-28.
[13] 陳素芳,王凱.基于多智能體的電網(wǎng)操作票自動生成系統(tǒng)[J].電力系統(tǒng)自動化,2008,32(15):49-53.
[14] 衣治安,趙旦春.基于CLIPS的油水井動態(tài)分析模型研究與實現(xiàn)[J].計算機與現(xiàn)代化,2014(11):122-126.
[15] 鐘繼鳳,李曉明.多站倒閘操作票自動生成系統(tǒng)[J].電力自動化設(shè)備,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。曾利,碩士生,主研領(lǐng)域:電力SCADA系統(tǒng)開發(fā)。孟文,副教授。
TP182
A
10.3969/j.issn.1000-386x.2017.08.022