上篇大致介绍了一下RETE算法的基础,本文采用CLIPS语言来进行规则的描述,简单阐述一下由规则生成rete network的过程。转载请注明来自:http://chillwarmoon.iteye.com
每一个产生式系统都必须有一种或者几种相应的语言用来描述产生式,CLIPS是一种用于专家系统的计算机语言,该语言能够描述规则、自定义函数和泛型函数、面向对象编程三种知识。
在CLIPS语言中,deftemplate关键字类似于Pascal中的记录结构,也就是说deftemplate以一种类似于Pascal定义记录的方式定义了一组相关的字段。这些字段在CLIPS中用slot关键字表示。举例来说:
- (deftemplate LinkError
-
- (slot computer_name (type STRING))
-
- (slot ipaddress (type STRING))
-
- (slot usr_name (type STRING))
-
- (slot dest_ipaddress (type STRING))
-
- )
定义了一个链接错误,该链接错误有三个属性,computer_name指定了发起链接的计算机名,ipaddress指定了发起链接的计算机地址,usr_name指定了发起链接的计算机用户名,dest_ipaddress指定了所要链接的目标计算机ip地址。
defrule是CLIPS语言中定义规则的关键字,举例来说:
RULE
- (defrule find_unaccessable_host ;规则头
-
- (LinkError
-
- ( dest_ipaddress ?dest_variable ) ;
-
- ( dest_ipaddress ?source_variable ) ;
-
- )
-
- (LinkError
-
- ( dest_ipaddress ?dest_variable ) ;
-
- ( dest_ipaddress ~?source_variable ) ;
-
- )
-
- => (printout t "the computer whose ip address is" ?dest_variable "has fault")
-
- )
该规则的目的是找到不能够访问的主机,主机A连接B时,产生LinkError定义的事件实例e1;主机C链接B时,产生LinkError定义的事件实例e2;如果两个事件都发生,那么根本原因可能是:IP地址为BIP(B主机的IP)的主机链接故障;则将该故障做为一个可能的故障假设。在该规则中dest_variable是CLIPS语言定义的变量,用于连接两个事件实例。
以上是利用CLIPS语言描述规则的情况,这里举出两个规则信息,然后给出其对应的鉴别网络图。
规则1:
(defrule joinConversion1(EventOne(intAttr ?intA))(EventTwo(strAttr ?intB&:(> ?intA ?intB))(shortAttr 100))=>(printout t "joinConversion1 fired and there may be an fault in the harddisk." crlf))
规则2:
(defrule joinConversion2(EventOne(intAttr ?intA))(EventTwo(strAttr ~?intA)(shortAttr 101))=>(printout t "joinConversion2 fired and int to string eval was good" crlf))
生成的鉴别网络如图所示:
分享到:
相关推荐
该教材详细的介绍了clips语言的编程方法,规则,是学习专家系统编程的很好的资料
该课件比较详细的介绍了clips专家系统的使用,特别适合初学者。
CLIPS与VC接口的研究
CLIPS ...文中介绍了 CLIPS 与其他高级语言间的交互。讨论了 CLIPS 如何调用外部程序,如何将 CLIPS嵌入到其他高级语言中。并举例说明了该交互实现的具体过程。最后介绍了用CLIPS构建的专家系统。
该文介绍了专家系统工具CLIPS6和高级程序语言VC 6.0的各自特点,提出了将专家系统工具CLIPS6与VC++6.0高级语言编程工具结合起来开发专家系统,实现规则推理。详细描述了CLIPS嵌入VC 的一般过程:如何把CLIPS6嵌入...
* CLIPS 是一种类似 LISP 的人工智能语言,所有的表达式均为函数,写在括号之内。 * 运算符位于第一位,其余操作数跟随在后。运算符和各操作数之间均以空格隔开。 * CLIPS 支持交谈式操作,用户可以使用 load、reset...
论文《CLIPS与VisualC_接口的研究》
"CLIPS系统基础知识" CLIPS(C Language Integrated Production System)是一种基于规则的专家系统,它可以用于构建智能系统,自动决策和推理。该系统具有强大的知识表示和推理能力,可以应用于各个领域,例如自然...
CLIPS专家系统开发环境(CLIPS6.30),支持windows和Dos界面,好用
介绍了专家系统工具CLIPS语言。CLIPS是一种专家系统开发语言。本文讨论了CLIPS和VC++的交互方法,分析了文本文件作为CLIPS和VC++交互中介的局限性,并提出了改进的交互方法。本文研究了最长公共子串的文本比较算法...
CLIPS-6.24的源代码,和大家分享~ CLIPS是一种专家系统语言
CLIPS中文手册 学习CLIPS的各种规范 很有用的~~~~~ 看完这个,再看些例程就容易明白了,并可以修改程序了
论文《CLIPS嵌入VC_技术的实现与应用》
CLIPS is a productive development and delivery expert system tool which provides a complete environment for the construction of rule and/or object based expert systems. Created in 1985, CLIPS is now ...
为框架框架的Clojure RETE实现礼节基准表测试CLIPS v 6.24(毫秒) rete4frames v 5.3.0(毫秒) 礼仪8 1.316599 82 x 61 礼仪16 18岁247 x 14 礼貌32 272 1427 5倍礼仪64 8939 9635 x 1.1 礼仪128 324396 88690 x ...
介绍了专家系统工具CLIPS语言。CLIPS是一种专家系统开发语言。本文讨论了CLIPS和VC++的交互方法,分析了文本文件作为CLIPS和VC++交互中介的局限性,并提出了改进的交互方法。1)传统的符号推理设计专家系统 2)基于...
很好很实用,详细介绍了clips与vc嵌入的方法及实现,值得推荐。
《专家系统原理与编程》第四版相配套的CLIPS6.22
CLIPS说明书,以及CLIPS6.3的安装包,方便学习专家系统与编程。CLIPS说明书分为初级说明书,中级说明书,高级说明书。
专家系统开发语言clips的中文用户手册,强烈推荐的参考书。