关长亮, 王贵成, 郭懿阳, 孙 娜
(沈阳化工大学信息工程学院,辽宁沈阳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.