锁定老帖子 主题:CLIPS语言与RETE network
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-05
上篇大致介绍了一下RETE算法的基础,本文采用CLIPS语言来进行规则的描述,简单阐述一下由规则生成rete network的过程。转载请注明来自:http://chillwarmoon.iteye.com
每一个产生式系统都必须有一种或者几种相应的语言用来描述产生式,CLIPS是一种用于专家系统的计算机语言,该语言能够描述规则、自定义函数和泛型函数、面向对象编程三种知识。 在CLIPS语言中,deftemplate关键字类似于Pascal中的记录结构,也就是说deftemplate以一种类似于Pascal定义记录的方式定义了一组相关的字段。这些字段在CLIPS中用slot关键字表示。举例来说:
定义了一个链接错误,该链接错误有三个属性,computer_name指定了发起链接的计算机名,ipaddress指定了发起链接的计算机地址,usr_name指定了发起链接的计算机用户名,dest_ipaddress指定了所要链接的目标计算机ip地址。 defrule是CLIPS语言中定义规则的关键字,举例来说:
RULE
该规则的目的是找到不能够访问的主机,主机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)) 生成的鉴别网络如图所示:
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-10-27
楼主是做什么的专家系统?
|
|
返回顶楼 | |
发表时间:2008-10-29
jamocha,可以去http://sourceforge.net/projects/jamocha看看
|
|
返回顶楼 | |
浏览 3227 次