CN101329625A - 专家系统开发平台 - Google Patents
专家系统开发平台 Download PDFInfo
- Publication number
- CN101329625A CN101329625A CNA2007100938888A CN200710093888A CN101329625A CN 101329625 A CN101329625 A CN 101329625A CN A2007100938888 A CNA2007100938888 A CN A2007100938888A CN 200710093888 A CN200710093888 A CN 200710093888A CN 101329625 A CN101329625 A CN 101329625A
- Authority
- CN
- China
- Prior art keywords
- expert system
- template
- clips
- class
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种专家系统开发平台,通过将CLIPS编译生成静态库或动态库的方式作为推理机,并通过提供多个专家系统模板,为专家系统开发提供了规范和标准,使得用户只需在该平台下根据自己的需求增加、修改规则文件,就可迅速搭建起符合自己需求的专家系统框架;对OCI和CLIPS都进行了适当的封装,从而实现了以C/C++语言为基础实现专家系统功能,并且实现了专家系统对Oracle数据库的访问,使得开发出的专家系统可对过程控制平台所采集到的实时数据进行推理,从而当电器设备发生异常时,可以及时采取相应措施达到闭环控制;提供有VisualStudio工程模板,可自动生成专家系统的VC解决方案和工程,从而实现了该平台与Visual Studio的紧密结合。
Description
技术领域
本发明涉及一种专家系统开发平台,尤其涉及一种可访问Oracle实时过程数据的专家系统开发平台。
背景技术
专家系统的开发一般都分成推理机和知识库,推理机独立于知识库,只要有某一行业的知识,推理机就可以正常工作推理出结果。知识则采用规则来表示知识,多条规则形成知识库。
当前的各种行业,如冶金行业、电力行业等,其中所用到的专家系统一般都是采用专有的软硬件或者通用的计算机软硬件来进行开发的。但是经验表明,专有的硬件和软件(如20世纪80年代的LISP)虽有助于专家系统的实现,但是不利于专家系统的推广和后期更新、维护,因此目前普遍采用在主流的计算机硬件平台(如IBM兼容机)或软件平台(如Windows等平台)来进行专家系统的开发。但是直接使用通用软硬件平台下的工具开发专家系统也存在较大难度,因为由于传统语言如Fortran、C、C++等更适合于数值计算而不是专家系统所需要的符号处理,因此每个专家系统都需从头开始建设,没有标准和规范,也会浪费大量的时间和精力,不利于后期的维护。
而且,现在的一般需要采用专家系统的行业,如冶金行业中,过程控制平台普遍都是使用C/C++语言进行开发的,而且一般都以Oracle数据库作为其后台数据库,因为过程控制平台需要通过PLC采集大量实时数据,这些实时数据根据需要一般都会保存在这些Oracle数据库中。而作为一个具有实际价值的专家系统,它也需要从这些Oracle数据库中获取相关的实时数据,以及时进行推理,从而获知各种电器设备的当前状态是否正常,以采取相应的措施。
由美国国家宇航局(NASA)研制开发的CLIPS(C Language IntegratedProduction System),兼顾了传统语言和函数式语言的好处,以C语言为基础开发了数百个函数,向用户提供了基于规则的专家系统功能。CLIPS1985年出现原型系统,目前已经发展到6.24版,独立于NASA,成为开放源码项目。
CLIPS虽然可以实现使用C代码来实现专家系统的功能,但是其缺点是没有提供访问数据库的方法,从而无法利用CLIPS直接实现专家系统对数据库的访问。
发明内容
本发明要解决的技术问题是提供一种专家系统开发平台,可提高专家系统开发的规范性和效率,并可实现专家系统对各种实时数据库的访问,为专家系统与各种过程控制平台的结合提供可能,提高开发而成的专家系统的实用性。
为解决上述技术问题,本发明提供一种专家系统开发平台,其中:
提供有CLIPS头文件和CLIPS库文件,用于实现专家系统的推理功能;
提供有通过对OCI进行封装后形成的数据库访问库,用于实现专家系统对Oracle数据库进行访问的功能;并且,
提供有多个专家系统模板,至少用于为专家系统提供事实、规则、模块、全局变量、与Oracle进行数据交换的实现框架。
本发明由于采用了上述技术手段,具有这样的技术效果,即(1)本发明所述专家系统开发平台通过将CLIPS编译生成静态库(LIB)或动态库(DLL)的方式作为推理机,并通过提供有多个专门的专家系统开发模板,为专家系统开发提供了规范和标准,使得用户只需在该平台下根据自己的需求增加、修改规则文件,编辑源文件,就可迅速搭建起符合自己需求的专家系统框架,由此节约了大量的开发时间和精力,提高了专家系统开发的效率,也提高了专家系统的后期可维护性;(2)对OCI和CLIPS都进行了适当的封装,从而实现了可以C或C++语言为基础实现专家系统功能、C/C++程序调用此功能,并且实现了专家系统对实时数据库的访问,从而为专家系统与各种过程控制平台的结合提供了可能,使得开发出的专家系统可以及时对过程控制平台所采集到的各电器设备的实时数据进行推理,使得电器设备发生异常时,可以及时发出警报或者调整控制参数,从而实现了对生产线的闭环控制;(3)本发明所述开发平台由于提供有Visual Studio工程模板,利用其可自动生成专家系统的VC解决方案和工程,因此实现了该平台与Visual Studio的紧密结合,方便了程序的调试。
附图说明
下面结合附图与具体实施方式对本发明作进一步详细的说明:
附图为利用本发明所述专家系统开发平台实现的一个专家系统的示意图。
具体实施方式
本发明所述专家系统开发平台提供有CLIPS头文件和CLIPS库文件,用于实现专家系统的功能。其中所述CLIPS库文件是由CLIPS源代码通过使用Visual Studio按照C或C++方式编译而成的静态库(LIB)或者动态库(DLL)。用户利用其实现具体的专家系统功能时,只需在通过本发明所述开发平台编写的具体专家系统程序中引用所述静态库或者动态库,并根据自己的需要对规则文件进行一定的编辑、增加或修改就可以了。
本发明所述专家系统开发平台还提供有数据库访问库,其是通过对OCI进行适当封装后形成的,可用于提供专家系统对如Oracle数据库进行访问的功能,从而为专家系统与各种过程控制平台的结合提供了可能,使得开发出的专家系统可以及时对过程控制平台所采集到的各电器设备的实时数据进行推理分析,以及时知道当前的各电器设备的工作状态是否正常,当发现某电器设备处于非正常状态时,就可以立即根据预先的规则调整相关参数,或者及时发出警报,然后再通过过程控制系统发给相关电器设备,通过这样一个反复的过程实现了对生产线的闭环控制。在一个实施例中,该数据库访问库是使用面向对象方法开发而成的,包括以下类(class):(1)连接类(connection),用于实现对数据库的连接,其主要动作是打开和关闭数据库;(2)申明类(statement),用于实现向数据库发送sql语句并执行该sql语句,其中sql语句可以是动态的即有参数;(3)结果类(resultset),用于保存由申明类执行查询(read)后所得结果,该结果相当于一个二维表格(行代表数据库记录,列代表数据库字段);(4)参数类(parameter),其主要用在动态sql语句中,用于绑定可能变化的值;(5)列类(column),其代表一行记录中的一个列对象,通常与结果对象配合使用;(6)日期时间类(datetime),用于保存经常使用的日期时间,一般都是14位字符串各式的,该类可以在字符串和Oracle日期时间之间自由转换;(7)异常类(error),用于封装数据库使用中的异常情况,从而可以获得Oracle的错误代码和具体信息。
为了使用户能够利用本发明所述专家系统开发平台迅速搭建出适合自己使用的专家系统框架,本发明还提供有多个专家系统模板,提供有多个专家系统模板,至少用于为专家系统提供事实、规则、模块、全局变量、与Oracle进行数据交换等实现框架,因此这些专家系统模板为专家系统的开发提供了规范和标准,从而使得用户只需在该平台下增加、修改规则文件、添加访问数据库的代码、或者编辑源文件,就可快速实现适合自己的专家系统,而无需每次开发专家系统时都要从头开始。在一个实施例中,所述专家系统模板都是通过文本文件来实现的,通过具体的程序(例如C#程序)可将专家系统模板文件读入到计算机内存中,并可使用正则文法匹配所述模板文件中需要替换的内容(如占位符),再将替换好的内容写回文件。
在一个实施例中,本发明所提供的专家模板主要包括:CLIPS模板、程序模板和Visual Studio工程模板。
所述CLIPS模板进一步包括CLIPS模块定义模板和CLIPS全局变量定义模板。例如,下面为使用module.clp实现CLIPS模板定义模板的示例,其定义方式为:
(defmodule MAIN(export deftemplate?ALL))
又如,下面为使用global.clp实现CLIPS全局变量定义模板的示例,其定义方式为:
(defglobal MODULE
;短期、中期推理结果
?*g1* =0;
?*g2* =0;
)
因此,即使不熟悉CLIPS语法的人也可以按照上述定义方式或者使用专家系统开发平台提供的向导生成新的模块定义或者全局变量。
所述程序模板进一步包括:访问Oracle数据库的代码模板;加载CLIPS规则的代码模板;动态生成规则(template)、事实(fact)等的代码模板;向专家系统传递数据的代码模板及获得专家系统传推理数据的代码模板等,以上所述的这些代码模板均可用C或C++语言来实现。
例如:建立数据库访问文件DbOper.cpp来打开Oracle数据库连接:
connection conn;
conn.open(″$userid″,″$passwd″,″$sid″);
其中,$userid、$passwd、$sid都是“占位符”,在用户提供具体数据的时候可被替换掉。
又如,建立以下模板以用于获取过程控制的实时数据:
string str_TemplateDef=″SELECT*FROM $table_name$where_condition″;
statement&st_TemplateDef=*conn.prepare(str_TemplateDef.c_str());
//获得statement
resultset&rs_TemplateDef=*st_TemplateDef.select();//获得结果集
while(!rs_TemplateDef.eod())
{
$typel$valuel=rs_TemplateDef[″$column1″];
$type2$value2=rs_TemplateDef[″$column2″];
.....................
}
其中,以“$”开头的字符串都是“占位符”,需要根据用户实际情况进行替换的。
所述Visual Studio工程模板,用于自动生成专家系统的VC解决方案和工程,其进一步包括:解决方案(solution)模板,例如template.sln和工程(project)模板,例如template.vcproj。
参考前面的例子可知,在一个实施例中,为了使得用户可根据自己的需要对这些模板进行修改,在上述专家系统模板中将以特殊符号“$”开头的字符串都是“占位符”,通过使用正则文法匹配模板文件中需要替换的“占位符”,再将替换好的内容写回文件,就可实现用户对模板的修改。当使用本发明所述专家系统平台生成目标专家系统时,用户可根据自己专家系统项目的需求以输入一些信息,比如:目标专家系统的中、英文名字,程序主目录,是否需要使用Oracle数据库以及Oracle数据库版本、过程控制数据表名和列名等,C#程序获得这些信息后通过编译的方法,可实现替换掉所述模板文件中的“占位符”、形成易于调试的VC解决方案和工程等工作,其具体步骤如下:
1、生成目标专家系统配置信息文件;
2、建立目标专家系统目录结构;
3、拷贝CLIPS头文件以及Oracle访问库的头文件;
4、拷贝CLIPS库文件以及Oracle访问库文件;
5、拷贝模板文件到目标专家系统目录;
6、替换目标专家系统模板文件中的特殊字符串;
7、生成目标专家系统Visual Studio解决方案,并设置相应的环境变量。
如附图所示,为利用本发明所述专家系统开发平台所实现的一个专家系统框架结构示意图,从该附图中可以看出利用本发明所述平台所实现的专家系统功能由CLIPS推理机、规则文件、专家系统程序以及可能的用户接口组成,其中专家系统程序用于加载规则文件、获取数据库的数据,调用推理机进行推理并将推理结构返回给用户或者数据库。
由于专家系统程序和过程控制软件都使用C/C++开发,并且通过数据库间接进行数据传递,因此过程控制和专家系统功能既可以独立运行也可以集成在一起。当专家系统与过程控制相结合,则理论上可以实现闭环控制。
下面对所述专家系统各部分的实现及功能进行进一步描述:
(1)推理机:利用CLIPS的源代码编译成静态库(LIB)或者动态库(DLL),实现推理机,它对所有的专家系统都通用。
(2)规则文件:由于不同的专家系统需要不同的规则,实际中规则文件往往不止一个,因此利用本发明所述平台所提供的一些规则文件的模板和接口供用户选择。
(3)数据库访问:由于CLIPS推理机无法直接操作数据库,由专家系统程序负责,对数据库的访问也不是直接的,而是通过对Oracle OCI的封装实现的,方便数据的存取。
例如冶金行业具有大量的模型,这些模型有很多关键指标,为了提高专家系统的正确性,规则文件中凡是牵涉到可能变化的数据都不写死,而是以参数的形式存在。这些参数值在系统运行时由专家系统程序从数据库中获得。
(4)闭环控制:当专家系统作为过程控制的一部分,专家系统利用过程控制采集的实时数据进行推理分析,发现非预期结果则可以根据预先的规则调整相关参数,由过程控制系统下发给相关设备,通过这样一个反复过程可以实现闭环控制。
Claims (8)
1、一种专家系统开发平台,其特征在于:
提供有CLIPS头文件和CLIPS库文件,用于实现专家系统的推理功能;
提供有通过对OCI进行封装后形成的数据库访问库,用于实现专家系统对Oracle数据库进行访问的功能;并且,
提供有多个专家系统模板,至少用于为专家系统提供事实、规则、模块、全局变量、与Oracle进行数据交换的实现框架。
2、根据权利要求1所述的专家系统开发平台,其特征在于:所述CLIPS库文件是由CLIPS源代码通过使用Visual Studio按照C或C++方式编译而成的静态库或者动态库。
3、根据权利要求1或2所述的专家系统开发平台,其特征在于,所述数据库访问库是使用面向对象方法开发而成的,其进一步包括:
(1)连接类,用于实现对数据库的连接,其主要动作是打开和关闭数据库;
(2)申明类,用于实现向数据库发送sql语句并执行该sql语句,其中sql语句可以是动态的即含有参数;
(3)结果类,用于保存由申明类执行查询后所得结果,该结果相当于一个多行、多列的二维表格;
(4)参数类,主要用在动态sql语句中,用于绑定可能变化的值;
(5)列类,代表一行记录中的一个列对象,通常与结果对象配合使用;
(6)日期时间类,用于描述日期时间,该类可以在过程控制常用日期时间字符串和Oracle日期时间之间自由转换;
(7)异常类,用于封装数据库使用中的异常情况,从而可以获得Oracle的错误代码和具体信息。
4、根据权利要求1所述的专家系统开发平台,其特征在于,所述专家模板包括:CLIPS模板、程序模板和Visual Studio工程模板。
5、根据权利要求4所述的专家系统开发平台,其特征在于,所述模板都是通过文本文件来实现的,其中将以特殊符号“$”开头的字符串为“占位符”,通过具体的程序可将所述模板文件读入到计算机内存中,并通过使用正则文法匹配模板文件中需要替换的占位符,再将替换好的内容写回文件,就可实现用户对所述模板的修改。
6、根据权利要求4或5所述的专家系统开发平台,其特征在于,所述CLIPS模板进一步包括:CLIPS模块定义模板和CLIPS全局变量定义模板。
7、根据权利要求4或5所述的专家系统开发平台,其特征在于,所述程序模板进一步包括:访问Oracle数据库的代码模板;加载CLIPS规则的代码模板;动态生成规则、事实的代码模板;向专家系统传递数据的代码模板及获得专家系统传推理数据的代码模板;这些代码模板均可用C或C++语言来实现。
8、根据权利要求4或5所述的专家系统开发平台,其特征在于,所述Visual Studio工程模板用于自动生成专家系统的VC解决方案和工程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007100938888A CN101329625A (zh) | 2007-06-22 | 2007-06-22 | 专家系统开发平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007100938888A CN101329625A (zh) | 2007-06-22 | 2007-06-22 | 专家系统开发平台 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101329625A true CN101329625A (zh) | 2008-12-24 |
Family
ID=40205445
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007100938888A Pending CN101329625A (zh) | 2007-06-22 | 2007-06-22 | 专家系统开发平台 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101329625A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101814077B (zh) * | 2009-12-04 | 2012-04-11 | 四川川大智胜软件股份有限公司 | 一种基于oci 9的数据库访问中间件 |
CN106127307A (zh) * | 2016-07-01 | 2016-11-16 | 复旦大学 | 一种基于能耗策略的校园智能用电设备的控制方法 |
CN106991479A (zh) * | 2017-03-02 | 2017-07-28 | 中国北方车辆研究所 | 基于语言集成生成系统的地面无人平台战术任务规划系统 |
CN108090063A (zh) * | 2016-11-21 | 2018-05-29 | 深圳联友科技有限公司 | 一种可配置的组件数据访问方法及装置 |
CN116737174A (zh) * | 2023-08-15 | 2023-09-12 | 中国兵器装备集团兵器装备研究所 | 一种基于开源鸿蒙系统的子系统自动生成工具及方法 |
-
2007
- 2007-06-22 CN CNA2007100938888A patent/CN101329625A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101814077B (zh) * | 2009-12-04 | 2012-04-11 | 四川川大智胜软件股份有限公司 | 一种基于oci 9的数据库访问中间件 |
CN106127307A (zh) * | 2016-07-01 | 2016-11-16 | 复旦大学 | 一种基于能耗策略的校园智能用电设备的控制方法 |
CN108090063A (zh) * | 2016-11-21 | 2018-05-29 | 深圳联友科技有限公司 | 一种可配置的组件数据访问方法及装置 |
CN106991479A (zh) * | 2017-03-02 | 2017-07-28 | 中国北方车辆研究所 | 基于语言集成生成系统的地面无人平台战术任务规划系统 |
CN116737174A (zh) * | 2023-08-15 | 2023-09-12 | 中国兵器装备集团兵器装备研究所 | 一种基于开源鸿蒙系统的子系统自动生成工具及方法 |
CN116737174B (zh) * | 2023-08-15 | 2023-11-14 | 中国兵器装备集团兵器装备研究所 | 一种基于开源鸿蒙系统的子系统自动生成工具及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1938690B (zh) | 将自动测试脚本持续转换成抽象测试用例表示的方法和系统 | |
CN100511176C (zh) | 从抽象测试用例表示中基于规则产生自动测试脚本的方法和系统 | |
CN104360859B (zh) | 一种可视化的服务开发方法和系统 | |
CN106445536B (zh) | 自动化业务设计管理系统 | |
CN110069246A (zh) | 一种Java Web应用快速开发的平台系统及其应用 | |
CN102521120A (zh) | 一种软件自动化测试系统及方法 | |
CN101477462A (zh) | 一种用于动态改变系统行为的模型驱动软件开发方法 | |
CN107357593A (zh) | 源代码文件组建方法、装置、电子终端及可读存储介质 | |
CN102339314A (zh) | 一种基于xml的跨终端的数据表单描述与展现方法 | |
CN103383645A (zh) | 代码生成方法及系统 | |
CN102663103A (zh) | 可配置的自动化生成数据库和数据访问的方法 | |
CN109471773A (zh) | 一种前端日志多通道输出的方法、装置、服务器及存储介质 | |
CN101329625A (zh) | 专家系统开发平台 | |
CN103412745A (zh) | 一种开发及应用平台 | |
CN110019118A (zh) | 基于DevOps提升数据库运维效率的系统及其方法 | |
Milosavljević et al. | A method and a tool for rapid prototyping of large-scale business information systems | |
CN111782608B (zh) | 文件自动生成方法、装置、电子设备及存储介质 | |
CN103246962A (zh) | 企业综合信息管理系统 | |
Wu et al. | A data analysis decision support system for the carbon dioxide capture process | |
Harrison et al. | Automated database and schema-based data interchange for modeling and simulation | |
Haibing et al. | EMF Based Validation Methods of the Static Semantics of Models | |
KR100656559B1 (ko) | Bibd 방법론을 이용하는 프로그램 자동 개발 장치 | |
Chen et al. | Research on Component Extension Technology for Power System Configuration Software | |
Wang et al. | Facilitating reuse in database applications with scenario-based component adaptation and generation | |
Wang et al. | Research on Low Code Development Platform Based on Business Middle Platform Technology |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20081224 |