基于Clips的嵌入式專家系統(tǒng)開發(fā)方法_第1頁
基于Clips的嵌入式專家系統(tǒng)開發(fā)方法_第2頁
基于Clips的嵌入式專家系統(tǒng)開發(fā)方法_第3頁
基于Clips的嵌入式專家系統(tǒng)開發(fā)方法_第4頁
基于Clips的嵌入式專家系統(tǒng)開發(fā)方法_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第25卷第3期計算機應用與軟件V o l .25N o .32008年3月C o m p u t e r A p p l i c a t i o n s a n d S o f t w a r e M a r .2008 收稿日期:2006-04-18。劉昱,碩士生,主研領域:聯(lián)合循環(huán)機組輔助決策系統(tǒng)?;贑 l i p s 的嵌入式專家系統(tǒng)開發(fā)方法劉昱陳堅紅盛德仁李蔚(浙江大學電廠熱能動力及自動化研究所浙江杭州310027摘要專家系統(tǒng)程序通常不是獨立的,而是嵌入在其他的程序中。介紹了在W i n d o w s 環(huán)境下利用C l i p s 這種功能強大和應用廣泛的專家系統(tǒng)開發(fā)工具結合V C

2、 2005開發(fā)基于C l i p s 的具有圖形界面的嵌入式專家系統(tǒng)的方法,并且給出了一個簡單的專家系統(tǒng)的開發(fā)實例。著重于討論C l i p s 與V C 2005的接口設計和具體實現(xiàn),還介紹了一種算法來實現(xiàn)C l i p s 對中文的支持。關鍵詞專家系統(tǒng)C l i p s V C 漢字處理AME T H O DT O B U I L DE MB E D D E DE X P E R TS Y S T E M B A S E DO NC L I P SL i u Y u C h e n J i a n h o n g S h e n g D e r e n L i W e i(I n s t

3、i t u t e o f P o w e r P l a n t T h e r m a l E n e r g yE n g i n e e r i n ga n dA u t o m a t i o n ,Z h e j i a n g U n i v e r s i t y ,H a n g z h o u 310027,Z h e j i a n g ,C h i n a A b s t r a c t E x p e r t s y s t e mi s u s u a l l y n o t i n d e p e n d e n t b u t e m b e d d e d

4、i n o t h e r a p p l i c a t i o n s .Am e t h o d t o b u i l d a n e m b e d d e d e x p e r t s y s t e mw i t h g r a p h i c u s e r i n t e r f a c e i n Wi n d o w s b yV C 2005a n dC l i p s ,a p o w e r f u l a n dw i d e l y -u s e dt o o l i ne x p e r t s y s t e m d e v e l o p i n gi

5、s p r e s e n t e d .T h e n ,a s i m p l e e x p e r t s y s t e md e v e l o p e d b y t h i s m e t h o di s p r o v i d e d .T h e d e s i g na n d i m p l e m e n t a t i o no f t h e i n t e r f a c e b e t w e e n C l i p s a n dV C 2005i s d i s -c u s s e di nd e t a i l ,a n da na l g o r

6、i t h m i s p r e s e n t e d t o r e a l i z e t h e f u n c t i o n o f C h i n e s ep r o c e s s o f c l i p s .K e y w o r d s E x p e r t s y s t e m C l i p s V C C h i n e s e p r o c e s s0引言作為專家系統(tǒng)開發(fā)工具的一種,C l i p s (CL a n g u a g e I n t e g r a t -e dP r o d u c t i o nS y s t e m ,C 語言集成

7、產生式系統(tǒng)的應用非常廣泛,它是由美國航空航天局/約翰遜太空中心用C 語言設計的,支持基于規(guī)則的、面向對象的和面向過程的開發(fā)方法。作為一個開放源代碼的項目,每個人都可以從互聯(lián)網上得到C l i p s 的源代碼,進行修改并且嵌入到自己的系統(tǒng)中去而無需付出任何費用。C l i p s 支持三種專家系統(tǒng)的開發(fā)方法:簡單的命令行模式、窗口模式和嵌入式模式。前兩種方式都是在C l i p s 環(huán)境下進行操作,開發(fā)出來的專家系統(tǒng)必須在C l i p s 環(huán)境下進行使用,我們可以方便地在該環(huán)境下開發(fā)和調試專家系統(tǒng)的知識庫和推理機,但是它的用戶界面不夠友好,所以直接使用的情況不多。最后一種方式是將C l i

8、p s 嵌入到其他程序編寫的程序中去,在程序中使用C l i p s 進行推理。因為C l i p s 語言的強項在于強大的推理和表示能力,它可以簡化我們設計專家系統(tǒng)時對于推理機的設計。所以說第三種開發(fā)方式即將C l i p s 嵌入到其他程序中進行開發(fā)是一種最常用的方法,也是最通用的方法。在目前的軟件程序開發(fā)中,C+、C #和J a v a 是最流行和常用的開發(fā)語言。三者中,C #和J a v a 更適合R A D (快速軟件開發(fā),開發(fā)效率都比C+高。但是C+開發(fā)出來的程序的運行效率卻是最高的,并且很多軟件和設備都提供了和C+語言的接口,更為關鍵的是C+的編譯器提供對C 的代碼的編譯支持,這

9、樣我們就可以在C+程序中直接使用C l i p s 。因此我們使用V i s u a l C+2005作為我們的C+開發(fā)工具,它是微軟公司的C+開發(fā)環(huán)境的最新版本,不僅能夠編譯C+和C 代碼,而且自帶的M F C 類庫能夠幫助我們快速地在Wi n d o w s 下進行軟件開發(fā)。因此,結合V C 2005和C l i p s 兩者的優(yōu)點,應用C l i p s 強大的推理和表示功能開發(fā)專家系統(tǒng)的知識庫和推理機部分,應用V C 2005開發(fā)專家系統(tǒng)的人機交互界面,處理設備的數(shù)據(jù)交換和管理數(shù)據(jù)庫,成為我們開發(fā)嵌入式專家系統(tǒng)的最佳選擇之一。1C l i p s 嵌入V C 2005開發(fā)的設計及實現(xiàn)方

10、法1.1嵌入式專家系統(tǒng)的結構設計考慮到C l i p s 和V C 2005各自的特點,本文設計嵌入式專家系統(tǒng)的結構如圖1所示。圖1嵌入式專家系統(tǒng)結構1.2C l i p s 嵌入到V C 2005工程中的實現(xiàn)C l i p s 作為一個開源項目,我們在網上可以得到它的源代碼和它的其它不同形式,在本文中我們將直接使用C l i p s 源代碼。第3期劉昱等:基于C l i p s的嵌入式專家系統(tǒng)開發(fā)方法213再將代碼包含在V C2005工程中以后,有兩種方法使他們進行交互,第一種方式是直接在C+代碼中使用C l i p s提供的函數(shù),對C l i p s進行操作,第二種是將C l i p s包

11、含在某個類中,在類中封裝C l i p s的函數(shù),然后通過調用類的方法來對C l i p s進行操作。兩種方法的實現(xiàn)步驟大同小異,因為封裝類的過程也是對C l i p s 提供的函數(shù)的使用過程,只是使他更符合面向對象程序設計的要求,本文中闡述的重點在于將C l i p s怎樣嵌入到V C2005的工程中,因此采用了第一種方式來詳細說明V C2005和C l i p s通過函數(shù)調用進行交互的過程。讓V C2005工程識別C l i p s并且使用C l i p s提供的函數(shù),必須在工程中增加對C l i p s的聲明,通常的做法是在“s t d a f x.h”的最后加入下列代碼使V C2005

12、可以調用C l i p s提供的函數(shù)。e x t e r nC#i n c l u d e源代碼所在文件夾c l i p s.hV C2005函數(shù)在能夠被C l i p s識別和使用之前必須在C l i p s 的U s e r F u n c t i o n s中進行聲明,這個函數(shù)在m a i n.c文件中,m a i n. c文件是起到初始化C l i p s環(huán)境的作用,開發(fā)嵌入式的專家系統(tǒng)時,不需要初始化環(huán)境,必須把m a i n.c刪除或者注釋掉。把U s e r F u n c t i o n s復制到工程中的主C+文件中,然后在該文件的頭文件中包含如下聲明e x t e r nCv

13、 o i dU s e r F u n c t i o n s(v o i d;在U s e r F u n c t i o n s中聲明V C2005函數(shù)的語句如下i n t D e f i n e F u n c t i o n(f u n c t i o n N a m e,f u n c t i o n T y p e,f u n c t i o n P o i n t e r,a c t u a l-F u n c t i o n N a m e;第一個參數(shù)表示在C l i p s中調用該函數(shù)的函數(shù)名;第二個參數(shù)表示在C l i p s中函數(shù)的返回值,通常有“s”(字符串、“w”(符

14、號、“i”(整型等;第三個參數(shù)是指向V C2005中函數(shù)的指針,第四個參數(shù)是一個字符串,表示V C2005中的函數(shù)名。也可以用D e f i n e F u n c t i o n2進行聲明,它帶有五個參數(shù),前四個參數(shù)與D e f i n e F u n c t i o n相同,最后一個參數(shù)表示C l i p s允許傳遞的參數(shù)的個數(shù)和類型。C l i p s是通過上一節(jié)所述的方式調用V C2005中的函數(shù),它又通過下列幾個常用的函數(shù)把參數(shù)傳給V C2005中的函數(shù)。i n t R t n A r g C o u n t(;c h a r*R t n L e x e m e(a r g u m

15、e n t P o s i t i o n;d o u b l eR t n D o u b l e(a r g u me n t P o s i t i o n;D A T A O B JE C T*R t n U n k n o w n(a r g u m e n t P o s i t i o n,&a r g u m e n t;第一個函數(shù)的作用是在V C2005的函數(shù)中判斷C l i p s調用該函數(shù)時傳遞的參數(shù)的個數(shù);第二到第四個函數(shù)分別返回第a r-g u m e n t P o s i t i o n個參數(shù)的值,不同類型的參數(shù)必須使用相應的函數(shù),如第二個返回字符串類型,

16、第三個返回浮點數(shù)類型,最后一個返回的是一個通用類型,通用類型不能直接使用,必須轉換為具體類型后才能使用。v o i d*A d d S y m b o l(s t r i n g;r e t u r n s t r i n g;根據(jù)前面返回值的類型,C l i p s會自動把返回的字符串轉化為C l i p s的類型。將C l i p s嵌入到V C2005工程中以后,我們必須在前臺應用程序運行的時候對C l i p s進行初始化,初始化函數(shù)是I n i t i a l i z e E n-v i r o n m e n t(。通常我們可以把這個函數(shù)放置在V C工程的起始窗體的構造函數(shù)中,這樣

17、在應用程序初始化的同時也對C l i p s進行了初始化。初始化完成之后,通過L o a d函數(shù)加載知識庫,R e-s e t函數(shù)重置環(huán)境,R u n函數(shù)運行,C l i p s便可以根據(jù)知識庫中的規(guī)則開始推理,推理過程中與前臺應用程序的交互根據(jù)上述的函數(shù)調用實現(xiàn)。2基于C l i p s的嵌入式專家系統(tǒng)的中文支持2.1C l i p s中文支持方法概述在嵌入式專家系統(tǒng)中,C l i p s因為它強大的推理和表示能力主要用于推理機和知識庫的開發(fā),與外部的數(shù)據(jù)交換則由前臺的應用程序完成,因此要在C l i p s中增加對于漢字的支持有下面三種方法。第一種方法是修改C l i p s程序的源代碼。

18、這個是解決問題的根本方法,要使C l i p s在嵌入式專家系統(tǒng)中能夠處理漢字,可以只修改C l i p s負責類型管理和存儲管理的相關文件,但是因為每個C l i p s文件都是由上千條的語句構成,因而工作量非常大,同時如果你對C語言和它的源代碼的掌握沒有達到一定程度,修改后版本的穩(wěn)定性和可用性將大大降低。當然這個方法是解決該問題最佳對策。第二種是使用數(shù)據(jù)庫建立中英文對照詞典。用戶在使用前,將中文對照的英文輸入詞典中,在前臺應用程序中使用輸入的中文,經過詞典翻譯成相應的英文后進入C l i p s進行推理,同樣C l i p s的結果在進入前臺應用程序之前也由詞典翻譯成為對應的中文。這種方法

19、的優(yōu)點是比較簡單,也是一種通用的方法。但是局限性很大,并且每次在C l i p s和前臺應用程序交換數(shù)據(jù)前,要對數(shù)據(jù)庫進行操作,開銷比較大。第三種方法將漢字轉換成C l i p s可以識別的符號。它和第二種方法比較類似,都是通過將漢字轉換為C l i p s能夠識別的字符,不同的是第二種方法通過詞典進行映射,而第三種方法是根據(jù)某種算法用一個符號來表示漢字,漢字和符號之間的轉化是唯一并且可逆的。這種方法相對簡單,系統(tǒng)資源的開銷也不是很大,并且適用于后續(xù)版本C l i p s。本文中我們通過這種方法實現(xiàn)C l i p s對中文的支持。2.2漢字和對應符號的轉換算法根據(jù)我國信息交換用漢字編碼字符集基

20、本集(G B2312-80規(guī)定“對任意一個圖形字符都采用兩個字節(jié)表示”,所以每個漢字都由兩個字節(jié)組成,如果把組成一個漢字的2個字節(jié)即16位分成四段,每一段4位,這樣每一段正好由16進制中的一個數(shù)字(0F表示,而0F都是A S C I I碼中的符號。也就是說可以把一個漢字轉換為4個0F的符號,而一個214計算機應用與軟件2008年英文字母和數(shù)字是用1個字節(jié)表示,也可以轉換為2個0F的符號。例如漢字“汽”可以表示為“C6F B”,英文字母“a”可以表示為“61”,數(shù)字“1”可以表示為31。雖然任何可打印的A S C I I 字符開頭的符號都可以作為C l i p s數(shù)據(jù)類型符號(S y m b o

21、 l,但是為了和數(shù)字區(qū)別,建議在轉換后的符號前面加上一個標示符以示區(qū)別。這樣我們就得到了將任意由漢字、字母、數(shù)字和標點組成的符號轉換為由0F表示的符號的算法,在V C2005中的具體步驟如下:1將輸入的符號存儲在字符串中,每次取字符串中的一個字符,在C+語言中一個字符由4位構成。2應用s p r i n t f該字符轉換為一個用十六進制表示的字符h e x b u f。3定義返回字符串R t n V a l u e=“C N H Z”(C N H Z為標示符,在R t n V a l u e后面加入h e x b u f。4取一個新字符,重復2、3步驟,直至字符串轉換完畢。如果要把C l i

22、p s中存儲的由0F組成的字符串轉換成為原來的字符串只要實施上述算法的逆算法就可以了,但是在轉換過程中要注意判斷這個字符是漢字還是英文字母,所以算法稍微復雜,V C2005中具體步驟如下:1讀取去掉標示符的欲轉換字符串的前兩個字符,分別存儲在字符c h r1和c h r2中,c h r1和c h r2共同構成了一個8位的字符。2將c h r1和c h r2表示的十六進制數(shù)轉換為一個字符c h r-b u f,方法是c h r b u f=c h r1*16+c h r2。3得到c h r b u f后要判斷c h r b u f是否小于十六進制數(shù)80H (十進制128,即判斷這個字符是否是英文

23、字母或者數(shù)字,如果小于80H表示它是一個英文字母或者數(shù)字,轉換為B Y T E數(shù)組后添加到返回字符串中。4如果c h r b u f大于80H,繼續(xù)讀取字符串中的第三位和第四位到c h r3和c h r4中。根據(jù)步驟2把它也轉換為一個字符c h r b u f2。將c h r b u f和c h r b u f2同時轉換為B Y T E數(shù)組后添加到返回字符串。5重復上述步驟,直至轉換完畢。通過上述算法我們成功地在嵌入式專家系統(tǒng)中實現(xiàn)把前臺應用程序中由漢字、字母、數(shù)字和標點組成的符號轉換成為C l i p s可以支持的由0F組成的符號,或者進行反向變換,該方法相對來說比較簡單,系統(tǒng)開銷比較小,但

24、是字符的長度會增加,增加了存儲空間。因為符號的長度對C l i p s系統(tǒng)的效率影響很小,所以這種方法是利大于弊的。3簡單應用根據(jù)本文上述的C l i p s和V C2005結合開發(fā)嵌入式專家系統(tǒng)的方法和步驟,筆者開發(fā)了一個簡單的具有學習功能的識別動物的專家系統(tǒng),該專家系統(tǒng)不斷地提問動物具有的屬性,通過用戶選擇來判別動物,在給出答案以后讓用戶判斷答案是否正確,如果答案不正確,用戶可以輸入正確答案和提示問題讓專家系統(tǒng)學習,這樣在下一次判別的時候,專家系統(tǒng)就能夠識別該動物。該專家系統(tǒng)是C l i p s嵌入式開發(fā)的典型例子,下面著重舉例介紹了C l i p s嵌入到V C2005中開發(fā)時怎樣在他們

25、之間傳遞數(shù)據(jù)這一關鍵的問題,并且表明怎樣利用上述漢字處理算法來對中文進行處理。用C l i p s開發(fā)專家系統(tǒng)的知識庫和推理機, V C2005開發(fā)的應用程序完成任務調度并處理界面和人機交互。為了接收從V C2005制作的人機交互界面中傳送過來的用戶的輸入,在專家系統(tǒng)的知識庫中我們定義了下面兩個函數(shù)。(d e f f u n c t i o na s k-q u e s t i o n(?q u e s t i o n?t y p e(b i n d?a n s w e r1(c p p G e t V a l u e?q u e s t i o n?t y p e?a n s w e r1(

26、d e f f u n c t i o nb i n d-n e w-a n i m a l(?n e w?o l d(b i n d?a n s w e r2(c p p n e w A n i m a i l?n e w?o l d?a n s w e r2其中的c p p G e t V a l u e和c p p n e w A n i m a l即為用戶自定義函數(shù),用來接收用戶在人機交互界面中輸入的信息。函數(shù)c p p G e t V a l u e用于接收用戶點擊了對話框中的是或者否按鈕,并將結果返回給C l i p s。c p p n e w A n i m a l用于接收對話框

27、中用戶輸入的區(qū)別新動物的答案和問題。輸入的問題和答案通過該函數(shù)返回到C l i p s。然后在V C2005的程序中加入下列語句聲明這兩個函數(shù),讓V C2005能夠識別它們。v o i dU s e r F u n c t i o n s(D e f i n e F u n c t i o n(c p p G e t V a l u e,w,P T I F c p p G e t V a l u e,c p p G e t V a l u e;D e f i n e F u n c t i o n(c p p n e w A n i m a i l,w,P T I Fc p p n e w A n i m a i l,c p p n e w A n i m a i l;最后在V C2005中可以具體地定義這兩個函數(shù)的作用,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論