当前位置:首页 > 发言稿 > 【基于SQL Server数据库和C++实现专家系统外壳】 access数据库管理系统
 

【基于SQL Server数据库和C++实现专家系统外壳】 access数据库管理系统

发布时间:2019-01-10 04:16:05 影响了:

  摘要:本文详细介绍了正向推理的基本原理及算法,在SQL Server数据库中创建知识库和全局数据库,及在Windows环境下用SQL Server数据库和C++实现专家系统外壳。只要在SQL Server数据库中建立不同的知识库便可以生成不同的专家系统。
  关键词:正向推理;知识库;数据库;专家系统外壳
  中图分类号:TP182文献标识码:A文章编号:1009-3044(2007)18-31500-02
  Realization of Expert System Tools Based on SQL Server Database and C++
  DONG De-wei, HAO Bo
  (Faculty of Mechanical Engeering, Shenyang Ligong University, Shenyang 110168, China)
  Abstract:This paper introduces the basic principle and algorithm of forward deduction, creating knowledge base and integrating database in SQL Server database , and realizing expert system tools by using SQL Server database and C++ in Windows environment. Only if creating different knowledge base in SQL Server database, can users get dissimilar expert systems.
  Key words:forward deduction; knowledge base; database; expert system tools
  
  1 引言
  
  专家系统的开发和研究是人工智能中最活跃的一个应用研究领域,专家系统又被称为基于知识的系统,能够模拟领域专家解决领域问题,其性能体现在两个方面:一是拥有大量的领域知识,二是运用领域知识进行推理的能力,因此所用的专家系统都具有推理机和知识库。为了降低专家系统的开发成本,把专家系统中具有共性的部分(推理机、知识表达模型等)做成软件,一旦把专家领域知识放进去,便形成一个专家系统,这样的一个软件便称之为专家系统外壳[1]。本文建立的专家系统外壳的核心是一个正向推理机和一个空数据库。
  
  2 系统设计概要
  
  系统以Windows为平台,采用面向对象的程序设计方法。在数据库(知识库和全局数据库)的设计上,采用SQL Server数据库,在推理机的设计上,采用Visual C++进行设计。使用MFC ODBC来实现推理机对数据库(知识库和全局数据库)的访问。
  本系统整体结构如图1所示:
  图1 专家系统外壳结构示意图
  由图1可知,专家系统外壳由知识库、全局数据库、知识库管理器、推理机、解释器和人机接口五部分组成。
  知识库:存储大量的领域专家的知识在数据库中,作为推理的根据,是专家系统进行问题求解的基础。
  全局数据库:包含推理的原始事实和推理的中间结果。
  知识库管理器:负责知识库的添加、修改、删除和查询;以及对知识库中的知识进行一致性和完整性的检查;并对知识库进行组织和管理。
  推理机:对用户提出的问题按某种策略从知识库中选择合适的知识进行推理,给出专家级的答复。
  解释器:用人们易于理解的方式解释自身的推理过程,使用户对推理的过程及推理的结果有一个明确的理解和认识。
  人机接口:数据库中知识的管理、专家系统的使用以及解释的获得都要通过人机接口。
  
  3 系统各结构的详细设计
  
  3.1 知识库和全局数据库的设计
  知识库存储大量的领域知识,这些知识通常由产生式规则表达,产生式规则通常用于表示具有因果关系的知识,其基本形式是:IF P THEN Q 或者 P→Q,其中:P是产生式的前提,亦可称为前件、条件、前提条件,用于指出该产生式是否可用的条件,它可以是一系列条件的组合,即:P=P1∧P2∧…∧Pn;Q是产生式的结论或操作,亦可称为后件,用于指出当前提P所指示的条件被满足时,应该得出的结论或应该执行的操作。整个产生式规则的含义是:如果前提P被满足,则可推出结论Q或执行Q所规定的操作[2]。
  有时为了表达不精确知识,还需要引入置信度Con,这时产生式规则的形式如下:
  IF P THEN (Q,Con) 或者 P→(Q,Con)
  这时产生式规则的含义是:如果前提P被满足,则可推出结论Q或执行Q所规定的操作的置信度为Con。
  上述规则亦可用笛卡尔乘积的形式来表示:。
  基于SQL Server数据库的知识库设计主要是对应数据库表及其关系的设计,使其便于知识的管理。知识库主要包括构成规则所需的各表,及在对知识进行获取、维护管理和应用(推理)所用到的相关辅助表。本文主要论述关于规则的表的设计,由于规则由条件、结论和置信度三个部分组成,所以构成规则的表主要包括:
  规则表:用来存放每一条规则的规则号、规则名、置信度及其相应的描述(或者是使用该规则的原因,可用于解释),可通过规则号与条件构成表、结论构成表来构成一条完整的规则,还包括一个规则是否被使用过的标记;
  条件构成表:存放构成各条规则对应的前提条件,一条规则的n个条件在表中对应n条记录;
  结论构成表:存放构成各条规则对应的所有结论;
  事实表:存放所有规则的条件和结论,并对其编号。
  各表的设计如表1、表2、表3、表4所示。
  将一条产生式规则拆分为条件、结论、置信度和描述(解释),按上述表将其表示出来,再利用表中主键和外键的关系将其重新连接成产生式规则的结构。
  表1 规则表(Rule_List)
  表2 条件构成表(Rule_Pre)
  表3 结论构成表(Rule_Con)
  表4 事实表(Fact_List)
  全局数据库用于存放问题求解过程中的各种当前信息,例如问题的初始事实、原始证据、推理得到的中间结论以及最终结论等。当知识库中某一条产生式规则的条件可与全局数据库中的某些已知事实匹配时,该产生式就被激活,并把用它推出的结论放入全局数据库中,作为其后推理的已知事实。
  因此全局数据库可由表5组成:
  表5 全局数据表(Global_Data)
  此外,为了配合解释器的使用,还需要一个解释表,以保存推理的过程和顺序:
  表6 解释表(Exp)
  3.2 知识库管理器的设计
  知识库管理器主要负责知识库的添加、修改、删除和查询;以及对知识库中的知识进行一致性和完整性的检查;并对知识库进行组织和管理。
  知识库管理器的主要功能如下:
  (1)知识的添加:提供了对知识库中的知识不断扩充的途径,首先由知识工程师或用户从领域专家和有关技术文献获取知识,经整理后由知识工程师使用知识编辑器输入到知识库中;
  (2)知识的查询:提供对规则、规则条件和结论的查询功能,便于规则的定位和修改;
  (3)知识的维护:对知识库中的知识进行一致性和完整性的检验,并且所有的检查应在新规则加入时进行,检验程序的核心部分都由SQL语句实现,这里不进行详述。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文   3.3 推理机的设计
  正向推理是从已知事实出发进行推理,并得到结论的一种推理方法。其基本过程是:从用户提供的初始事实出发,在知识库中找出当前可用的规则,若有多条规则可用,则按照冲突消解策略从中选出一条规则,将该规则的结论存入到全局数据表中,并将全局数据表中的结论作为下一步推理的已知事实,在此之后再在知识库中选取可适用的规则进行推理,重复这一过程,直到求得了所要求的解或者知识库中再无可用规则为止。
  为了使推理机有效的工作,我们定义了几个主要函数,介绍如下:
  Add(Table,Record):在数据表Table中添加Record记录;
  Set(Table,Filed,Value):将数据表Table中当前记录字段Filed的值设置为Value;
  Value(Table,Record):返回数据表Table中当前记录字段Filed的值;
  IsEof(Table):检测数据表指针是否位于最后一条记录之后;
  GoFirst(Table):将数据表指针移到第一条记录;
  Filter(Table,Condition):将数据表Table的过滤条件设置为Condition[3]。
  以上各函数均可通过SQL语句或是MFC ODBC类的方法实现,因篇幅所限,这里不做详述。
  下面我们就以给出推理机的详细推理过程:
  (1)在进行推理之前,首先将规则表(Rule_List)中的Rule_Act_Pres字段置为0,表示当前所有规则的所有条件没有一条被激活,同时将规则表(Rule_List)中的Rule_Used、条件构成表(Rule_Pre)和结论构成表(Rule_Con)的Fact_Act、事实表(Fact_List)的Fact_Known和全局数据表(Global_Data)的Fact_Used置为F;
  (2)将输入的初始事实和原始数据存储到全局数据库(Global_Data);
  (3)检查全局数据库(Global_Data)中是否已经包含了问题的解,若有,则求解结束,并成功退出;否则执行下一步;
  (4)判断全局数据表(Global_Data)是否存在一条事实所对应的Fact_Used为F,若不存在,则转到7;若存在,则将其置为T,同时将这些事实对应的Fact_ID存入到解释表(Exp)中,并将事实表(Fact_List)中的相应的事实的Fact_Known置为T;
  (5)然后将条件构成表(Rule_Pre)中相应事实的Fact_Act置为T,表示该事实已被激活,同时将规则表(Rule_List)中该激活事实所对应的规则的已激活规则条件数Rule_Act_Pres加一,然后判断此激活事实对应的规则的规则条件数Rule_Pre_Nums和已激活规则条件数Rule_Act_Pres是否相等,若不相等,则说明该规则的所有条件尚未全部满足,则转到4,若相等,则执行下一步;
  (6)将规则表(Rule_List)中该规则的Rule_Used置为T,然后将结论构成表(Rule_Con)中相应规则号对应的结论的Fact_Act置为T,同时将事实表(Fact_List)中相应的事实的Fact_Known置为T,然后将该事实添加到全局数据表,然后转到3;
  (7)询问用户是否可进一步补充新的事实,若可补充,则转到2;否则表示求不出解,失败推出。
  从推理过程可以看到,推理机没有用到任何表中任何字段的具体值,因此只要按照推理机要求的数据库表的结构填写表,就可以实现不同的专家系统,也就实现了正向推理的专家系统外壳。
  3.4 解释机的设计
  解释机的作用就是对用户解释推理的过程,并对用户的问题给出解释或说明,专家系统的解释机就是专家系统中为了完成解释而设置的程序模块。
  在数据库的设计中,我们在规则表(Rule_List)和解释表(Exp)中都有一个解释字段,就是为了解释机的使用,当用户询问或者需要解释时,便可以将解释字段的值显示给用户,说明为什么使用该规则或者是为什么推导出该事实。因为解释机在整个系统中处于次要的位置,这里不做详述。
  
  4 结束语
  
  用SQL Server数据库存储专家系统知识库中的知识,对知识可以进行有效的管理,同时也有利于推理机的工作。并且可以快速的构造不同的专家系统,因此,这是一种高效、实用的专家系统构造模式。
  
  参考文献:
  [1]石群英,郭舜日,蒋慰孙. 专家系统开发工具的现状及展望[J]. 自动化仪表,1997,18(4):1-3.
  [2]尹朝庆,尹皓. 人工智能与专家系统[M]. 北京:中国水利水电出版社,2002.
  [3]程惠霞, 等. 用C++建造专家系统[M]. 北京:电子工业出版社,1996.
  注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3