關長亮, 王貴成, 郭懿陽, 孫 娜
(沈陽化工大學信息工程學院,遼寧沈陽110142)
谷氨酸在許多領域都起著重要的作用,在食品行業尤為突出.但是由于谷氨酸發酵過程是一種復雜的非線性時變過程,大多數的變量都難以精確控制,過程響應速率緩慢,造成生產率低,原料大量浪費.近年來,人們不斷地完善和提高發酵技術.隨著計算機控制技術的發展,在發酵過程中不斷應用先進的計算機控制系統進行過程建模、過程狀態預測、過程故障診斷和早期預警乃至過程控制與優化等[1-2].而以專家系統為代表的智能技術在發酵過程中也得到廣泛應用,它利用專家知識和推理,模擬專家的決策能力來解決只有專家才能解決的問題.先進的代謝工程技術、過程控制技術、智能工程技術與發酵工程的融合是現代發酵過程控制的發展方向[3].本文以提高谷氨酸產量、降低事故發生率為目的,采用專家系統工具CLIPS與VC++相結合,構造一個專門用于谷氨酸發酵過程的專家系統.
發酵過程內部機理復雜,影響因素較多,在實際生產過程中,一般要求在發酵過程的每個階段,保證罐溫、罐壓、溶解氧和pH值穩定在最優值.因此,采用傳統的控制方法已不能滿足發酵過程的工藝要求.為了提高控制的精度,對非線性、時變、大滯后的發酵過程采用專家控制系統,為發酵過程的優化控制提供可行方法.
專家診斷系統是將診斷知識,尤其是專家知識與計算機結合在一起,按照一定的推理算法,設計出相應的計算機程序,通過人機接口的形式讓診斷者與計算機進行對話,由診斷者回答系統提出的問題,系統根據提問和回答的答案進行推理,并最終給出專家級的診斷結論[4].
谷氨酸發酵過程專家系統將一些專家,包括技術員、熟練工人的成熟經驗應用到發酵過程中去,由計算機完成具體的操作,不僅能對發酵過程各參數進行精確分析,保證罐溫、罐壓、溶解氧和pH值穩定在最優值,而且還能在被控對象即將出現異常時及時提供信息[5],要求對被控對象進行調節,以減少原料的損失和故障的發生,對保證發酵過程的安全進行和提高經濟效益方面具有現實意義.
目前,專家系統一般是由人機交互界面、知識庫、推理機、解釋器、綜合數據庫、知識獲取等6個部分構成[6].其中知識庫與推理機是專家系統的核心.用戶可通過操作界面或由實時運行數據向專家系統提問,推理機將輸入的信息與知識庫中各個規則的條件進行匹配,并把被匹配規則的結論放到綜合數據庫中.最后,專家系統將得出的最終結論通過人機交互界面顯示,提供系統實際操作的指導.
專家系統是以一種或多種工具和方法為核心,加上配套的各種輔助工具和界面為開發環境的完整集成系統.CLIPS是“C語言集成產生式系統(C Language Integrated Production System)”的縮寫,是由美國航空航天局約翰遜太空中心在1985年用C語言設計的,意在克服LISP移植性差、開發工具和硬件成本高、嵌入性低等缺點[7].
CLIPS的推理結構包括工作存儲器、產生式規則庫、匹配器、沖突消解器和解釋器5部分,如圖1所示.

圖1 CLIPS的推理結構Fig.1 CLIPS inference structure diagram
其中產生式規則(簡稱規則)由條件部分(LHS)和執行的動作(RHS)組成.條件部分包括一些等待匹配的數據.當這些數據在匹配器中與工作存儲器(事實庫)當前所有規則的條件部分進行匹配時,推理機檢查每一條規則并找出事實來判定規則的條件部分是否符合,若一條規則與事實庫的事實相匹配,則這條規則就是一條觸發規則,并被加入到推理機的日程表中,如果出現多條規則與之匹配,需經過沖突消解器確定其中的一條為啟用規則之后再被解釋器執行[8].
谷氨酸發酵過程專家系統的總體結構如圖2所示,其中知識庫由專家系統工具CLIPS實現,其余部分由Visual C++實現.知識庫是專家系統的核心,它是由CLIPS編寫的規則和已知事實組成的,可以根據需要隨時添加或修改.為了方便專家對系統的完善,建立專家系統操作界面,用戶可以根據界面提供的格式輸入,系統會自動將輸入的知識轉化為系統可存儲的形式加入到知識庫中,完成對知識的添加與修改功能[8].工藝參數監控是采集谷氨酸發酵過程的實時數據,并以曲線和數據的形式表示出來,以提供當前的發酵狀態,及時地進行數據分析.報警提示與處理方法提供系統采集數據運行狀態的異常顯示,并給出合理處理的建議,結果在操作界面中顯示.解釋機制提供系統知識的注釋.

圖2 谷氨酸發酵過程專家系統的總體結構Fig.2 The general structure of the glutamic acid expert system
知識獲取是實現知識表示和建立知識庫的前提條件.在專家系統中,知識分為事實、規則、元知識、常識性知識4類.常用的知識獲取方式有非自動、自動獲取兩種.
雖然已有許多學者對自動知識獲取開展研究,并取得一定的成果,但還存在許多理論及技術上的難題.所以,本系統知識獲取采用人工參與的半自動獲取方式.知識獲取過程如圖3所示.

圖3 知識獲取過程Fig.3 Knowledge acquisition process
谷氨酸發酵是一個復雜的過程,對各種條件的控制極為重要,任何條件的改變都可能影響發酵的正常進行,因此,在發酵過程中需要綜合考慮各方面的因素.表1、表2為部分常見現象、異常現象以及解決策略[9].由表1可知:在發酵前期,當pH值在7.3~7.5范圍內時,系統提示用戶發酵過程正常進行,當超出這一范圍時,系統提示用戶發酵過程出現異常并給出相應的解決策略.表2分別從染菌時間、雜菌種類和染菌幅度3個方面給出了染菌處理的方法,再運用CLIPS將上述知識表示成系統可接受的語言編寫到知識庫.

表1 發酵前期pH值變化及提示信息(0~12 h)Table 1 The pH changes of fermentation(0~12 h)

表2 谷氨酸發酵過程染菌分析Table 2 The analysis of glutamic acid bacteria infection
將CLIPS嵌入到其他高級語言環境中.通過在高級語言中添加CLIPS的事件驅動,實現事實列表和知識庫的建立與維護[10].其嵌入步驟如下:先將除main.c之外的CLIPS源代碼拷貝到用戶目錄;其次在高級語言中建立一個新工程,將所有的CLIPS源文件添加到該項目下,在窗體中加入頭文件聲明,以便該環境能夠識別CLIPS源程序;然后在UserFunctions函數中聲明用戶自定義函數;最后在相應文件中編寫所聲明的自定義函數.這樣就可以在高級語言環境中使用CLIPS.具體步驟如下:
(1)首先,進入Microsoft Visual C++6.0界面,完成MFC對話框的建立.將clipwarp文件夾里面的dynclips.h和dynaload.h頭文件拷貝到VC++6.0的INCLUDE文件夾里面去.
(2)將下載的clips.dll和clips.lib文件和clipwarp文件夾里面的 rsvarcol.cpp和 Rsvarcol.h復制到ClipsTest工程目錄下.
(3)設置內嵌CLIPS的程序項目.
(4)設置動態鏈接.選擇Project(工程)菜單中的Settings(設置)項,點擊Link(連接)標簽頁,在對象/庫模塊一欄里添加clips.lib.
(5)將clipwrap文件夾中的Clipsmfc_old.h和Clipsmfc_old.cpp文件拷貝到工程目錄下,把后綴_old去掉,選擇Project(工程)中添加工程的Files,將clipsmfc.cpp和clipsmfc.h文件添加到ClipsTest工程中.打開頭文件ClipsTestDlg.h,在最頂端添加#include“clipsmfc.h”.
完成以上步驟以后,就可以使用CLIPS的包裝類CCLIPSWrap了,通過向OnInitDialog函數里寫入代碼,進行測試,檢驗加載是否成功.
CClipsTestDlg.h頭文件:
#include“clipsmfc.h”
……
BOOL CClipsTestDlg::OnInitDialog()//初始化函數
{
CDialog::OnInitDialog();
CString sDisplay;
m_pClips=new CCLIPSWrap();
if(m_pClips->CLIPSInit())
sDisplay=“CLIPS成功!”;
else
sDisplay=“CLIPS失敗!”;
……
if(iErrCode!=CCLIPSWrap::READ_OK)
{
switch(iErrCode)
{
case CCLIPSWrap::READ_FAIL:
MessageBox(“由于讀取失敗,未能成功供加載規則庫!”,“警告”,MB_OK);
break;
……
}
m_pClips->CLIPSExit();
return FALSE;
}
else
m_display+=“ 成功加載知識庫,現在可以運行!”;
……
return TRUE;//return TRUE unless you set the focus to a control
}
通過動態連接DLL可以成功地把CLIPS嵌入到VC++中,再利用VC++來完成用戶界面的設計,圖4為專家系統發酵過程溫度監測界面.

圖4 發酵過程溫度監測界面Fig.4 The monitoring interface of fermentation process
曲線控件要實現對變量的循環采樣,若增加成功,則調用pParentWnd->Invalidate()來刷新曲線畫面,從而得到動態的曲線滾動效果.
針對谷氨酸發酵過程的特點,研究開發谷氨酸發酵過程專家系統.該系統利用專家系統開發工具CLIPS與Visual C++混合編程,然后將整理好的知識編碼添加進專家系統的知識庫.系統可以對發酵過程中每個階段的罐溫、pH值、罐壓、溶解氧和通風量等參數進行監測,能在異常現象出現之前給出提示,并對故障現象給出合理的解決辦法.本專家系統具有充足的數據庫和知識庫,用來儲存谷氨酸發酵過程的數據、事實和經驗;采用獨立的推理機實現其推理過程;采用模塊化結構實現各部分功能并具有良好的人機交互界面.本系統能迅速、合理地給出象領域專家所給的解決策略,不僅避免了原材料的大量浪費、減少事故的發生,還能增加谷氨酸產量,提高經濟效益,具有良好的應用前景.未來的專家系統發展趨勢是將多種不同的智能技術結合起來的綜合型系統,建立操作簡單、外形美觀、功能完善的專家系統界面也是未來研究的重點.
[1] 張麗君,楊汝德,吳振強.生化過程中在線測控的現狀及應用[J].食品與發酵工業,2000,26(3):57-60.
[2] 張嗣良.青霉素發酵過程特點與控制對策研究[J].華東化工學院學報,1989,15(1):510-519.
[3] 史仲平,潘豐.發酵過程解析、控制與檢測技術[M].北京:化學工業出版社,2005:1-8.
[4] 蔡自興,徐光祐.人工智能及其應用[M].北京:清華大學出版社,2004:200.
[5] 石賢愛,郭養浩,孟春,等.卡那霉素發酵過程專家控制節能系統[J].福州大學學報(自然科學版),2000,28(l):102-105.
[6] Giarratano J,Riley G.專家系統原理與編程[M].印鑒,劉星成,湯庸,等譯.北京:機械工業出版社,2000:231-360.
[7] 葉雪梅,付光遠.用C++Builder 4調用專家系統工具CLIPS 6實現故障診斷[J].計算機應用與軟件,2000,17(10):50-56.
[8] Dubois D,Hullermeier E,Prade H.Fuzzy Set-based Methods in Instance-based Reasoning[J].IEEE Transactions on Fuzzy Systems,2002,10(3):322-332.
[9] 孫娜.基于谷氨酸發酵過程的專家系統研究[D].沈陽:沈陽化工大學信息工程學院,2012:7-11.
[10]代麗.專家系統開發工具CLIPS的事實轉儲技術的分析與研究[D].秦皇島:燕山大學,2003.