专家系统的相关设计及idea
专家系统专家系统是一类具有专门知识和经验的计算机智能程序系统,通过对人类专家的问题求解能力的建模,采用人工智能中的知识表示和知识推理技术来模拟通常由专家才能解决的复杂问题,达到具有与专家同等解决问题能力的水平。
即专家系统=知识库+推理机
对于知识库,我们都知道一个庞大的知识链都储备在类于仓库形态的空间之中,为此对于程序调用推理依据和判断就基于知识仓库之中。而知识库也是等同专家系统中的理论基础,创造一个怎样的判别能力的系统,它的准确率相关性,大小程度都与之关联。
而推理机,从软件编程上来看,运用怎样的函数以及语句之间的调用,根据知识库中存有的知识内容,分析实际情况,即键入我们在机器前的推理基础的内容,并给出结论,由程序来处理推理过程,这就与软件相互依赖。
具体的设计使用Pycharm--Python编程语言导入相关库--PyQt5编写规则、推理树--具体领域的资料收集实验目的面对人工智能众多领域的浪潮,在此专家系统分支领域,为了理解和掌握产生式,明确如何在整个系统中去运用,选用Python编程语言在Pychar
专家系统中的推理机实现
专家系统:模仿人类专家的思维方式进行决策的人工智能算法,算法核心是“知识库(knowledgebase)”和“推理机(inferenceengine)”。专家系统通常包括6个部分:人机交互界面、知识库、综合数据库、推理机、解释器、知识获取。
(参考:人工智能-基于规则的专家系统(基础知识))
知识库:包含解决问题相关的领域知识。在基于规则的专家系统中,知识用一组规则来表达。其具有IF(条件)THEN(行为)结构,当规则的条件被满足时,触发规则,继而执行行为。 数据库:包含一组事实,用于匹配知识库中的IF(条件)。 推理机:执行推理,专家系统由此找到解决方案。推理引擎链接知识库中的规则和数据库中的事实。 解释器:用户使用解释器查看专家系统怎样得出解决方案的过程。
人机交互界面:人机交互界面是实现用户(查询问题解决方案)和专家系统之间交流的途径。
“推理机”根据“知识库”对“数据库”做出决策的基本原理图如下:
专家系统模型:
以下是一个简单的动物识别的专家系统设计(简单推断蛇、蜥蜴、鸡、猫四种动物):
(参考:人工智能专家系统的简单实现)
1.实现流程: 1) 初始化规则集合 2) 初始化规则事实集合 3) 使用规则推导2.加入规则信息: ”冷血”,”有腿”,”羽毛”,”会飞”3.规则事实: 冷血+没有腿->蛇 冷血+有腿->蜥蜴 非冷血+有羽毛+不会飞->鸡 非冷血+没有羽毛->猫
4.推理过程:
5.使用VS2010参考上面的模型编写了一个判断是哪种动物的推理机实例(通过在终端窗口中输入条件,推理得出动物类型)。
程序源码在:简单推理机实现_动物推断_VS2010版本
总结:专家系统中的知识库是一种二叉树型的决策系统(表示一种决策方法),决策机是按照知识库进行分类的一种方法,所以对于每种特殊的系统,其决策机的程序设计不同。
注:当前想实现推理机功能一般使用专业的推理引擎,或则开源的推理机引擎,不需要自己设计内部结构,这样的推理引擎比较稳定而且功能比较齐全, 我后来使用Drools推理机引擎实现推理机功能(可以参考Drools入门系列)。
人工智能专家系统的简单实现
专家系统,通俗的讲。就是让计算机具有人类专家的知识、经验和技能,可以像人类专家一样解决实际问题。专家系统实质上是一段计算机程序,它可以以人类专家的水平完毕某一专业领域的任务。通过计算机。模拟人类专家怎样运用他们的知识和经验解决面临问题的方法、技巧和步骤。
基本系统结构(通常由人机交互界面、知识库、综合数据库、推理机、解释器、知识获取等6个部分构成):
以下是一个简单的动物识别的专家系统设计(简单推断蛇、蜥蜴、鸡、猫四种动物):
1.实现流程:
1) 初始化规则集合
2) 初始化规则事实集合
3) 使用规则推导
2.加入规则信息:
”冷血”,”有腿”,”羽毛”,”会飞”
3.规则事实:
冷血+没有腿->蛇
冷血+有腿->蜥蜴
非冷血+有羽毛+不会飞->鸡
非冷血+没有羽毛->猫
4.推理过程:
部分代码:
#defineChicken0x02//鸡0010#defineCat0x00//猫0000#defineSnake0x01//蛇0001#defineLizard0x05//蜥蜴01014位二进制位分别表示:能飞、有腿、有羽毛、冷血,匹配上则为1,否则为0数据结构定义typedefstructRule{char*info;//规则信息Rule*pYes;//匹配到的下一个规则Rule*pNo;//未匹配到的下一个规则intpos;//该规则的位置}Rule;unsignedcharresult=0;推导函数
voidMatchRules(char*s,Rule*match){if(!s||!match)return;//规则是否匹配上if(CheckRule(s,match->info)>0){//记录位置result+=1pos;MatchRules(s,match->pYes)}else{//未匹配上MatchRules(s,match->pNo);}}推断result。得出结论
switch(result){caseChicken:printf("鸡!");break;caseCat:printf("猫!");break;caseSnake:printf("蛇。");break;caseLizard:printf("蜥蜴!");break;default:printf("其它!");break;}以上仅仅包括简单规则(4种动物推断,和4条规则),想要功能更完好。我们还能够加入很多其它精确的规则和事实。