曾 利 孟 文
(西南交通大學(xué)機(jī)械工程學(xué)院 四川 成都 610031)
?
CLIPS和C#結(jié)合實(shí)現(xiàn)電力操作票的自動生成
曾 利 孟 文
(西南交通大學(xué)機(jī)械工程學(xué)院 四川 成都 610031)
運(yùn)用專家系統(tǒng)技術(shù)是實(shí)現(xiàn)電力操作票系統(tǒng)智能推理過程的主要手段,專家系統(tǒng)開發(fā)工具CLIPS可實(shí)現(xiàn)操作票專家系統(tǒng)模塊的設(shè)計(jì)。為了彌補(bǔ)CLIPS圖形界面開發(fā)能力的不足,以CLIPS和C#混合編程的方式研究操作票專家系統(tǒng)模塊。CLIPS負(fù)責(zé)操作票專家系統(tǒng)的邏輯推理開發(fā),主要完成CLP知識文件的設(shè)計(jì),而C#負(fù)責(zé)圖形界面的設(shè)計(jì)。C#通過調(diào)用免費(fèi)的CLIPS動態(tài)鏈接庫來完成兩者的交互,實(shí)現(xiàn)了操作票從圖形界面操作任務(wù)的制定到推理的自動生成過程。該方法較好地解決了操作票系統(tǒng)智能性不足的問題,實(shí)現(xiàn)了專家系統(tǒng)與用戶界面的友好交互。
操作票系統(tǒng) 專家系統(tǒng) CLIPS C# 自動生成
電力操作票制度是保障電網(wǎng)安全運(yùn)行的重要手段之一,為減輕工作人員的勞動強(qiáng)度并提高開票效率,智能電網(wǎng)操作票系統(tǒng)應(yīng)運(yùn)而生。近年來,隨著電力行業(yè) “大數(shù)據(jù)”時(shí)代的到來,對智能電網(wǎng)的應(yīng)用提出了更迫切的需求,從目前研究成果看,操作票系統(tǒng)的研究熱點(diǎn)也集中在智能性上[1-3]。
智能操作票系統(tǒng)的智能性主要體現(xiàn)在智能推理開票、防誤檢測等,而具體實(shí)現(xiàn)又依賴于專家系統(tǒng)技術(shù)的應(yīng)用。專家系統(tǒng)屬于人工智能研究領(lǐng)域,它通過運(yùn)用專家的知識和經(jīng)驗(yàn)來解決實(shí)際問題。目前,專家系統(tǒng)的開發(fā)工具主要有ART、OPS、CLIPS、FRL等,它們各有優(yōu)缺點(diǎn)。CLIPS即C語言集成產(chǎn)生式系統(tǒng),由美國國家航天局NASA研發(fā)的一種多范例編程語言[4]。CLIPS的基本結(jié)構(gòu)是產(chǎn)生式系統(tǒng),推理過程采用的RETE算法利用了產(chǎn)生式系統(tǒng)的時(shí)間冗余和模式相似的特性,保留了規(guī)則匹配過程的中間信息,減少了后續(xù)匹配時(shí)間,顯著地提高了系統(tǒng)的推理速度[5]。
CLIPS是一款應(yīng)用廣泛、成熟的輕量級解決方案,支持C/C++集成[6],但圖形界面開發(fā)能力有所欠缺。故本文選取CLIPS和C#混合編程的方式對操作票專家系統(tǒng)模塊進(jìn)行研究,以實(shí)現(xiàn)操作票系統(tǒng)的智能推理開票。
CLIPS為人工智能而設(shè)計(jì),具有強(qiáng)大的邏輯推理能力和良好的兼容性。外部程序代碼可以作為一個外部函數(shù)在CLIPS中被定義和調(diào)用,同樣,CLIPS除了可以被當(dāng)作一個獨(dú)立的工具之外,還能被其他應(yīng)用程序語言調(diào)用,從而有利于大型智能系統(tǒng)的開發(fā)。另外,CLIPS的使用非常方便,CLIPS的源代碼和執(zhí)行文檔在網(wǎng)上免費(fèi)提供給開發(fā)人員,為用戶的二次開發(fā)提供了便利[7]。
CLIPS是基于DOS操作系統(tǒng),不利于用戶命令的輸入輸出,缺乏友好的用戶交互界面[8-9]。隨著科學(xué)技術(shù)的發(fā)展,專家系統(tǒng)需要更友好的操作方式來服務(wù)用戶[10],而C#作為主流的基于面向?qū)ο蟮某绦蜷_發(fā)語言,易于開發(fā)友好的用戶界面,適合軟件的快速開發(fā)[11]。從以上分析可知,CLIPS和C#結(jié)合開發(fā)應(yīng)用程序可以實(shí)現(xiàn)二者的優(yōu)勢交互,CLIPS強(qiáng)大的邏輯推理負(fù)責(zé)專家系統(tǒng)知識庫和推理機(jī)的開發(fā),而C#負(fù)責(zé)系統(tǒng)圖形界面的開發(fā)和外部數(shù)據(jù)的處理。
專家系統(tǒng)是智能倒閘操作票系統(tǒng)實(shí)現(xiàn)推理開票、防誤檢測等智能過程的主要工具。操作票專家系統(tǒng)模塊不僅包含核心的知識庫和推理機(jī)部分,還需要人機(jī)接口實(shí)現(xiàn)專家系統(tǒng)與用戶界面的交互。運(yùn)用專家系統(tǒng)進(jìn)行自動推理開票就是在一定的設(shè)備拓?fù)溥B接前提下,根據(jù)電力操作規(guī)則及操作經(jīng)驗(yàn)等,對初始操作任務(wù)指令決定出具體的設(shè)備操作步驟[12-13]。
CLIPS和C#混合編程完成操作票專家系統(tǒng)的開發(fā),其基本模型如圖1所示。其中,知識庫和推理機(jī)是操作票專家系統(tǒng)的核心部分,由CLIPS負(fù)責(zé),用戶界面由C#開發(fā)完成。用戶提取實(shí)際系統(tǒng)的知識抽象成事實(shí)模板和規(guī)則模板,其中包括電力操作規(guī)則、工作人員操作經(jīng)驗(yàn)、系統(tǒng)設(shè)備狀態(tài)與連接關(guān)系等。建立系統(tǒng)的規(guī)則庫和事實(shí)庫,形成CLP知識文件,操作任務(wù)作為用戶的指令,在圖形界面完成設(shè)置后,轉(zhuǎn)換成專家系統(tǒng)可識別的知識格式后寫入專家系統(tǒng)事實(shí)庫,經(jīng)由CLIPS內(nèi)核推理機(jī)推理運(yùn)行,決策出正確的操作步驟集,用戶通過人機(jī)接口獲取推理結(jié)果,并在用戶界面顯示。其中,事實(shí)模板與外部數(shù)據(jù)庫保持一致的映射關(guān)系。
圖1 操作票專家系統(tǒng)分析模型
CLIPS的基本結(jié)構(gòu)包括知識庫、事實(shí)庫、推理機(jī)等部分[14]。利用CLIPS進(jìn)行操作票專家系統(tǒng)的開發(fā)時(shí),首先需要建立系統(tǒng)的知識庫和事實(shí)庫。事實(shí)庫包含推理的事實(shí)數(shù)據(jù),知識庫包含推理機(jī)運(yùn)行依據(jù)的規(guī)則,推理機(jī)對運(yùn)行進(jìn)行總體控制。CLIPS的事實(shí)庫表和規(guī)則庫以CLIPS語法格式寫入CLP格式文件,形成系統(tǒng)的知識文件。可在CLIPS環(huán)境中對CLP知識文件進(jìn)行驗(yàn)證,驗(yàn)證無誤后,可供C#開發(fā)環(huán)境中直接調(diào)用。
根據(jù)對電力倒閘操作票專家系統(tǒng)模塊的分析,操作票專家系統(tǒng)的事實(shí)列表主要存儲系統(tǒng)的設(shè)備信息及其拓?fù)溥B接關(guān)系,而規(guī)則知識庫主要存儲以電力操作規(guī)則為依據(jù)表示的操作推理規(guī)則和操作經(jīng)驗(yàn)。
3.1 建立系統(tǒng)事實(shí)庫
由于電力系統(tǒng)涉及的設(shè)備種類多種多樣、操作類型復(fù)雜多變等實(shí)際情況,本文主要考慮電力一次設(shè)備的操作。建立一次設(shè)備的事實(shí)模板,同時(shí)為各設(shè)備類添加間隔屬性,同一間隔內(nèi)的設(shè)備具有相同的間隔屬性,從而保證了設(shè)備之間的連接關(guān)系。
在CLIPS中事實(shí)模板類型類似于面向?qū)ο缶幊讨械念?,定義事實(shí)模板的關(guān)鍵字為deftemplate,按照CLIPS語法,定義斷路器可描述成下面自定義模板:
(deftemplate Breaker “斷路器”
(slot id)
(slot name)
(slot type)
(slot status)
(slot bayCode))
完成各設(shè)備類型事實(shí)模板的定義后,添加事實(shí),通過事實(shí)列表關(guān)鍵字(deffacts)把具體的設(shè)備對象寫入事實(shí)列表中。為保證事實(shí)庫與實(shí)時(shí)數(shù)據(jù)庫的一致性,用戶通過CLIPS接口將數(shù)據(jù)庫中的設(shè)備事實(shí)信息映射到專家系統(tǒng)的事實(shí)列表中,也便于專家系統(tǒng)事實(shí)庫的更新。
3.2 建立系統(tǒng)知識庫
知識庫是專家系統(tǒng)的核心組成之一,專家系統(tǒng)所有的推理工作都必須在知識的指導(dǎo)下完成。操作票專家系統(tǒng)推理開票的過程就是根據(jù)用戶輸入的操作任務(wù),按照設(shè)備連接形式與電力操作規(guī)則生成符合要求的操作序列集合[15]。
根據(jù)電力操作規(guī)程和電力操作經(jīng)驗(yàn),制定系統(tǒng)的推理開票規(guī)則。所有的操作最后都將具體到斷路器集的操作,所以規(guī)則的結(jié)論部分將只涉及斷路器和關(guān)聯(lián)刀閘的操作。由于在特定的操作任務(wù)下,專家系統(tǒng)推理的結(jié)果將是一個操作集,即包含多條執(zhí)行語句的操作集合,因此,在特定的操作對象和操作任務(wù)前提下,知識庫中可能存在多條規(guī)則同時(shí)滿足的情況。而實(shí)際上,各項(xiàng)操作存在先后操作順序,所以在定義推理規(guī)則時(shí),添加順序操作碼,同一操作任務(wù)前提下的規(guī)則通過順序操作碼形成順序規(guī)則鏈。另外,具體規(guī)則的激發(fā)可能會導(dǎo)致事實(shí)庫的變化(設(shè)備事實(shí)狀態(tài)改變),形成新的事實(shí),進(jìn)而激發(fā)其他規(guī)則。
CLIPS中采用產(chǎn)生式表示法來表示規(guī)則,即采用“IF A THEN B”的格式,其中A表示規(guī)則的條件,B表示規(guī)則的結(jié)論。在操作票系統(tǒng)中,一個可能的規(guī)則為:
IF操作任務(wù)為斷路器201由運(yùn)行轉(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)容為由運(yùn)行轉(zhuǎn)熱備用的操作任務(wù),“01”表示由運(yùn)行轉(zhuǎn)熱備用;
(3) 從事實(shí)列表中搜索匹配的斷路器,檢測是否存在該設(shè)備事實(shí);
(4) 表示順序操作碼,實(shí)現(xiàn)前后規(guī)則的銜接;
(5) (item模板表示操作語句)該條指令執(zhí)行添加操作事實(shí)動作,action屬性表示操作語句,objName屬性表示操作對象名稱,用來將action語句具體化;
(6) 修改斷路器狀態(tài),由閉合至斷開狀態(tài);
(7) 修改順序操作碼的值,作為下一條規(guī)則的條件。
實(shí)際運(yùn)行時(shí),推理機(jī)推理得到操作步驟集合,通過人機(jī)接口將該操作集反饋到用戶界面,用戶界面通過語義轉(zhuǎn)化與具體化過程,得到推理開票過程最終的操作序列。
CLIPS和C#混合編程開發(fā)程序,主要有直接嵌入式和DLL混合式編程兩種方法。直接嵌入式編程時(shí), CLIPS的源碼公開,用戶可直接將CLIPS的源代碼添加到C#程序中,進(jìn)行適當(dāng)?shù)匦薷?。而DLL式混合編程時(shí),將開發(fā)者免費(fèi)提供的CLIPS動態(tài)鏈接庫添加到C#主程序中,由于動態(tài)鏈接庫封裝了Load、Reset、Run等CLIPS核心操作命令,用戶直接通過調(diào)用操作函數(shù)實(shí)現(xiàn)與CLIPS專家系統(tǒng)的交互。本文采用DLL式混合編程的方法實(shí)現(xiàn)CLIPS和C#對操作票專家系統(tǒng)的共同開發(fā)。
互聯(lián)網(wǎng)上有免費(fèi)的CLIPS源代碼和動態(tài)鏈接庫供開發(fā)者使用,Mommosoft.ExpertSystem.dll是Mommosoft公司的clipsNet程序集,專門用于CLIPS和C#的混合編程。在C#開發(fā)環(huán)境中引入該鏈接庫,就可實(shí)現(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知識庫與事實(shí)列表導(dǎo)入到系統(tǒng)開發(fā)平臺,供推理機(jī)推理使用,例如environment.Load(“clipsKB.clp”)。
(3) Reset():該命令對已加載的CLP知識文件進(jìn)行初始化。
(4) AssertString(string message):插入命令,可以將外部數(shù)據(jù)寫入到CLIPS的知識庫中,例如實(shí)現(xiàn)事實(shí)的添加等。待插入的數(shù)據(jù)格式必須符合CLIPS語法。
(5) Eval(string message):該命令可獲取CLIPS知識庫中的事實(shí),實(shí)現(xiàn)專家系統(tǒng)圖形界面的輸出。推理開票時(shí),將推理結(jié)果反饋到開票界面,從而完成開票過程。
4.2 DLL方式實(shí)現(xiàn)CLIPS與C#的交互
本文以Visual Studio2010為C#工具,開發(fā)基于Web的操作票系統(tǒng)。在其中添加對Mommosoft.ExpertSystem.dll的引用,C#客戶端調(diào)用其動態(tài)庫中封裝的操作命令來實(shí)現(xiàn)操作票的自動生成。其基本流程如下:
(1) 在圖形開票界面完成操作任務(wù)的設(shè)置與校核。
(2) 調(diào)用CLIPS動態(tài)庫,定義CLIPS環(huán)境對象。
(3) 通過Load命令加載自定義并驗(yàn)證無誤的CLP知識文件。
(4) 將自定義操作任務(wù)轉(zhuǎn)化成符合CLIPS格式的事實(shí)對象,通過AssertString命令寫入事實(shí)列表。比如,自定義操作任務(wù)(0→3):將斷路器bk201由運(yùn)行轉(zhuǎn)檢修,轉(zhuǎn)化為:Task (value 03)(objName bk201),通過AssertString命令寫入事實(shí)列表中。
(5) 然后執(zhí)行Reset命令,初始化CLIPS環(huán)境。
(6) 執(zhí)行Run命令,推理機(jī)推理運(yùn)行,其結(jié)果保存在item事實(shí)模板中。
(7) 通過Eval命令獲取推理結(jié)果,即item對象,并反饋到開票界面。
整個執(zhí)行流程中,操作任務(wù)轉(zhuǎn)化成CLIPS格式知識傳入專家系統(tǒng),啟發(fā)系統(tǒng)規(guī)則的執(zhí)行,推理機(jī)搜索相應(yīng)的設(shè)備信息得到對應(yīng)的推理結(jié)果,并將其翻譯后反饋給用戶,其知識的傳遞如圖2所示。
圖2 基本流程及知識傳遞
用戶在圖形界面設(shè)置初始任務(wù),如圖3所示,初始任務(wù)經(jīng)過校核后轉(zhuǎn)化成符合CLIPS語法的字符串,通過AssertString命令寫入專家系統(tǒng)事實(shí)列表中,推理機(jī)運(yùn)行。通過搜索到事實(shí)任務(wù)與對應(yīng)的設(shè)備后,匹配激發(fā)規(guī)則R1,R1運(yùn)行執(zhí)行結(jié)論(向事實(shí)庫寫入操作語句)。然后繼續(xù)進(jìn)行事實(shí)與規(guī)則的搜索匹配,執(zhí)行激發(fā)的規(guī)則。最終通過接口函數(shù)將推理得到的操作指令經(jīng)語義轉(zhuǎn)化與具體化過程后,形成具體的操作步驟集并反饋到開票界面,如圖4所示。通過知識庫中規(guī)則的完善,系統(tǒng)可滿足用戶的多種開票需求。
圖3 操作任務(wù)設(shè)置
圖4 推理結(jié)果
CLIPS是一款強(qiáng)大的專家系統(tǒng)開發(fā)工具,與C#結(jié)合開發(fā)專家系統(tǒng),可以彌補(bǔ)CLIPS不利于用戶交互的缺陷,實(shí)現(xiàn)與用戶的友好交互。本文結(jié)合CLIPS和C#實(shí)現(xiàn)了電力倒閘操作票的自動生成過程。系統(tǒng)方便可靠、擴(kuò)展性好、開發(fā)成本低,適應(yīng)多種實(shí)際的開票需求,可通過規(guī)則的添加完善進(jìn)而完成操作的防誤檢測等過程,對其他智能系統(tǒng)的開發(fā)有一定的借鑒意義。
[1] 徐俊杰,趙京虎,饒明軍,等.基于SCADA系統(tǒng)的地區(qū)電網(wǎng)調(diào)度操作票系統(tǒng)的設(shè)計(jì)[J].電力系統(tǒng)保護(hù)與控制,2010,38(13):104-107.
[2] 林曉慶,任建文,張丙合,等.基于網(wǎng)絡(luò)重構(gòu)的電網(wǎng)智能調(diào)度操作票系統(tǒng)開發(fā)研究[J].電力系統(tǒng)保護(hù)與控制,2012,40(7):143-147.
[3] 劉偉.調(diào)控一體化模式下的電網(wǎng)調(diào)度智能操作票系統(tǒng)改造設(shè)計(jì)[D].南昌:南昌大學(xué),2015.
[4] Joseph Giarratano,Gary Riley.專家系統(tǒng)原理及編程[M].印鑒,劉星成,湯庸,譯.北京:機(jī)械工業(yè)出版社,2000.
[5] 謝曉方,姜震.一種結(jié)合CLIPS和VC++開發(fā)專家系統(tǒng)的方法[J].計(jì)算機(jī)系統(tǒng)應(yī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與高級語言交互的研究與實(shí)現(xiàn)[J].微機(jī)發(fā)展,2005,15(10):65-67.
[8] 陶元芳,寧志強(qiáng).運(yùn)用CLIPS推理機(jī)的橋式起重機(jī)起升機(jī)構(gòu)設(shè)計(jì)專家系統(tǒng)[J].起重運(yùn)輸機(jī)械,2013(5):59-62.
[9] 溫國誼,查廣東,張翔.基于CLIPS的某型飛機(jī)故障診斷專家系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].中南大學(xué)學(xué)報(bào)(自然科學(xué)版),2013,44(S1):157-161.
[10] 王溪波,楊志浩.一種新的基于Web的專家系統(tǒng)開發(fā)方法[J].計(jì)算機(jī)技術(shù)與發(fā)展,2015,25(8):147-151.
[11] 韋遼.在C#.NET中調(diào)用CLIPS的技術(shù)實(shí)現(xiàn)與應(yīng)用[J].機(jī)械工程師,2015(2):39-41.
[12] 莊海峰.智能調(diào)度操作票生成專家系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].安徽電力工程職業(yè)技術(shù)學(xué)院學(xué)報(bào),2005,10(3):26-28.
[13] 陳素芳,王凱.基于多智能體的電網(wǎng)操作票自動生成系統(tǒng)[J].電力系統(tǒng)自動化,2008,32(15):49-53.
[14] 衣治安,趙旦春.基于CLIPS的油水井動態(tài)分析模型研究與實(shí)現(xiàn)[J].計(jì)算機(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