您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 专家系统在智能控制中的研究与实现
专家系统第1节:什么是专家系统:第2节:专家系统Rete算法的基本原理第3节:开源分布式专家系统ERESYE实例分析第4节:开源分布式专家系统ERESYE结构分析第5节:基于ERESYE专家系统的实例开发。第6节:总结第1节:什么是专家系统:专家系统是一个智能计算机程序系统,其内部含有大量的某个领域专家水平的知识与经验,能够利用人类专家的知识和解决问题的方法来处理该领域问题。专家系统是一个具有大量的专门知识与经验的程序系统,它应用人工智能技术和计算机技术,根据某领域一个或多个专家提供的知识和经验,进行推理和判断,模拟人类专家的决策过程,以便解决那些需要人类专家处理的复杂问题,总之,专家系统是一种模拟人类专家解决领域问题的计算机程序系统。第2节:专家系统Rete算法的基本原理2.1RETE学习步骤建议Rete算法因为其本身的难度而闻名,所以真正理解RETE算法就是一个极其困难和痛苦的过程。古人云:欲速则不达。为了让初学者,顺利的掌握这个算法,正确的方法就是非常重要的一个环节。作者认为可以沿着这样一条道路,可以顺利的到达RETE。首先理解这个算法的作用,是解决什么问题的,然后,为了解决这个问题,RETE对应的数据结构和算法是什么,然后打开一个最简单的应用实例,分解。最后对整个算法理解后,提出自己的改进建议。2.2Rete算法的作用Rete算法是为了解决更改事实或者规则后,如何用那种策略,让知识库的更新和学习速度比较快,而不是采用整体重新学习和更新的方式。2.3TRIE基本原理RETE算法的数据结构本身是有向无环图,如果可以从简化的形式来看,可以看为TRIE。这是TRIE,又称为单词查找树或者键树,是一种树形结构,是一种哈希树变种。这个图形表明,当有一个事实发生变化的时候,如何影响了相关的结果。当A发生变化时候,整个A的分支就都必须重新学习;单只是e发生变化时候,影响的只是Ae,与其它的结果没有关系。2.4RETE介绍该算法的目的是提高速度正向链接规则系统的限制,要求重新计算冲突后触发规则。它的缺点是,它具有很高的存储空间要求。它利用两个经验观测值:时间冗余:一个规则触发变化通常只有几个事实,只有少数的规则是受这些变化。结构相似的:同样的模式经常出现在左边的一个以上的规则。人工智能,我们只关心三个方面:“事实”,“模式”,和“规则”。为了更好的了解这三个方面的抽象的概念,就直接用例子来说明。首先,看看“事实”的例子:命题:我是一名士兵事实:(is-aIsoldier)命题:士兵的理想就是当将军事实:(purposesoldiergeneral)命题:大家都说棒事实:(evaluationeveryonewonderful)评价然后,再用以下两个例子来说明“模式”:问题:谁是士兵模式:(is-a?whosoldier)问题:谁的目标成为将军模式:(purpose?whogeneral)“规则”:规则描述:不想当将军的士兵,不是好士兵规则:(R1~(is-a?xsoldier)~(purpose?xgenera)==~(evaluationeveryonewonderful))因此,事实就是命题描述,而模式就是带有参数的匹配,规则就是已知条件,得出结果。rete算法基本的数据结构是一个有向非循环图,该算法保持了日期相关的信息的节点图。当一个事实是添加或删除从工作记忆,一个令牌代表事实和操作输入图的根和传播到叶子修改适当的信息与节点。如果张三的年龄去年是30岁,今年就应该是31岁。如果说要改变正确的事实:张三今年的年龄是31岁,那么,我们就将事实添加上去。根节点具有作为接班人的一种“种”节点,一对每个可能的事实(一种事实是其第一部分)。当一个令牌到达到根的副本令牌发送到每一个“种”节点有选择的进行操作,只选择标记的然后为每个规则和它的每一个模式,我们创建了一一个输入阿尔法节点。每个“类”的节点连接到所有的阿尔法节点的种类和提供他们的标记,它接收副本。每个阿尔法节点关联关系,阿尔法记忆,其专栏命名变量出现在节点的模式。例如,如果模式的节点(is-a-parent-of?×?年)的关系已列为和当一个令牌到达的节点项目操作中提取的令牌的元件匹配元组变量的模式。由此产生的元组添加到阿尔法记忆节点。在每个节点,用来存储的关系,beta内存,这是加入的关系相关的左和右输入,加入的列命名变量中发生的关系。对于根节点,可以用一个空的节点来表示。有了这些事情,如何来完成JOIN的操作是将所有关系连接起来的关键操作。下面就用图表的形式给出一个实际的例子:表示规则:X代表人的名字,Y代表年龄,Z代表喜欢什么运动XYXZ==================张三25张三打篮球李四48李四游泳王五35张三长跑杨六35李四太极这样,beta内存的关系,通过PROJECT操作后,得到如下结果:XYZ=================张三25打篮球张三25长跑李四48游泳李四48太极下面用一个数学计算来完成一个方案的设计,问题如下:在实数运算中,有加,减,乘,除;在复数计算中,有加,减,乘,除;在实数与复数之间,又有加,减,乘,除,如何用RETE算法来设计一个解决问题的方案。在设计规则时,如何注意效率问题,是设计大型专家系统必须要考虑的问题,也是专家系统中,如何来优化,提高规则匹配速度,减小空间利用率。假定在我们的工作内存中包括如下事实:FACT|NAMEOFTHEFACT==================================(find-matchaceg)|f1(itema)|f2(itemb)|f3(itemc)|f4(itemd)|f5(iteme)|f6(itemf)|f7(itemg)|f8下面来比较一下,两个不同规则,只是已知条件的顺序不同情况下的分析状况:RULE1:RULE2:(find-match?x?y?z?w)(item?x)(item?x)(item?y)(item?y)(item?z)(item?z)(item?w)(item?w)(find-match?x?y?z?w)=========...==========...Rule1和Rule2都是有5个alpha节点和4个beta节点。下面看看Rule1的存储情况如下:NODE|PATTERN|MEMORY=====================================================a1|(find-match?x?y?z?w)|f1a2|(item?x)|f2f3f4f5f6f7f8a3|(item?y)|f2f3f4f5f6f7f8a4|(item?z)|f2f3f4f5f6f7f8a5|(item?w)|f2f3f4f5f6f7f8b1|a1&a2|f1b2|b1&a3|f1b3|b2&a4|f1b4|b3&a5|f1说明:当a1节点,用模式(find-match?x?y?z?w)去匹配时候,MEMORY只是需要f1大小的事实就足够了。当a2节点,用模式(item?x)去匹配时候,由于f2f3f4f5f6f7f8都能满足条件,所以,MEMORY就需要f2f3f4f5f6f7f8大小的事实去存储。总之,我们可以通过公式1+7+7+7+7+1+1+1+1=33,算出总共的内存元素。接着,分析一下Rule2的情况:NODE|PATTERN|MEMORY=====================================================a1|(item?x)|f2f3f4f5f6f7f8a2|(item?y)|f2f3f4f5f6f7f8a3|(item?z)|f2f3f4f5f6f7f8a4|(item?w)|f2f3f4f5f6f7f8a5|(find-match?x?y?Z?W)|f1b1|a1&a2|[f2f2][f2f3]..[f8f8]b2|b1&a3|[f2f2f2]...[f8f8f8]b3|b2&a4|[f2f2f2f2]...[f8f8f8f8]b4|b3&a5|f1说明:用同样的方法,就可以计算7+7+7+7+1+7*7+7*7*7+7*7*7*7+1=2823,算出总共的内存元素。从以上分析的数据,可以明显的看出,采用规则的时候,可以将复杂的LHS放在前面,将简单的LHS放在后面,这样做的目的是降低内存的存储空间。2.5RETE算法的框图描述及解释如果从概念上去理解alpha节点和beta节点是很困难的,加上working节点,对于学习者而言,就变得很茫然----不知所云,无从下手了。有了上面Rule1和Rule2例子后,就可以将这些抽象的概念,变得更直观的理解。首先,alpha节点对应是ax,其中x的取值是【1,2,3,4,5】,beta节点对应的是by,其中y的取值是【1,2,3,4】。working节点,对应的是MEMORY下面对应的一行。2.6RETE算法的改进的思路在搜索的方法中,利用极大极小值的情况,就可以利用Alpha和Beta剪枝,让搜索的速度加快,在MCU这篇文章中,就是利用这个思想,让RETE算法得到改进。利用这个改进的方法,将使整个算法可以加快速度。目前,在这个ERESYE中,还没有实现。第3节:开源分布式专家系统ERESYE实例分析开源的ERESYE是一个用ERLANG语言编写的专家系统,这个系统,利用ERLANG元组的特点,可以将事实很容易的表达,同时利用ERESYE系统的添加和移除规则,利用ERLANG中“-”强大作用,来完成问题的表示,系统就可以给出结论。问题的描述:当温度用华氏来表示的时候,将华氏温度(单位是‘F’)转换为摄氏温度(单位是‘C’);当温度高于30C时候,报警器处于Off状态,这个时候,要将报警器处于On状态;当温度低于25C时候,报警器处于On状态,这个时候,要将报警器处于Off状态;当报警器处于On状态,风扇的状态处于Off状态,要将风扇处于On的状态。下面,先来看看ERESYE第一个程序,并且来分析这个程序的每个环节。;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;定义模块为sample;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1-module(sample).2-compile([export_all]).3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;如果温度是华氏时候,单位是’F’,将温度转换为摄氏温度,单位是’C’;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4convert(Engine,{temperature,X,'F'}=Temp)-5eresye:retract(Engine,Temp),6eresye:assert(Engine,7{temperature,(X-32)*5/9,'C'}).8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;检测温度是用摄氏来表示,而且报警是关闭的情况下
本文标题:专家系统在智能控制中的研究与实现
链接地址:https://www.777doc.com/doc-1875130 .html