CLIPS中文手册

CLIPS>(run) CLIPS>(facts)

f-0 (initial-fact) f-1 (animal-is duck) f-2 (sound-is quack) For a total of 3 facts. CLIPS>

在操作之前,让我们使用save命令来保存duck规则,这样你就可以避免重复输入了(如果你还没有将这些保存到编辑器中)。输入命令如下:

(save “duck.clp”)

将CLIPS内存中的规则保存到命名为“duck.clp”的文件中,“.clp”是一个简单方便的扩展名,让我们方便知道这是一个CLIPS的源文件。注意,从CLIPS内存中保存下的代码只保留了双引号内可选规则头的注释,而分号后的注释就没有了。

踢你的鸭子

也许此时你会有一个有趣的问题,如果重复执行(run),结果会这样?当一个规则被事实满足时,该规则会被触发,然而,如果你重复执行(run),你会发现该条规则不将被触发了。这也许让人有一点沮丧,然而,在你做出一些极端的减轻沮丧的事情之前---如狠踢你的宠物鸭---你得多了解一些专家系统的基本原理。

当规则的模式与下面的几点匹配时,规则被激活: 1. 之前不存在的不同的新的模式实体

2. 该模式实体存在,但是被撤销或者被重新添加了。举个例子,旧模式实体的副本便是一个新的模式实体。

规则和匹配的模式目录,都是被激活的。如果是规则或模式实体,或者同时被改变了,激活将会被移除。一个激活的也可以通过命令或另一规则的行为被移除,该规则在移除激活的先决条件前被触发。

推理机通过特权值将激活进行分类。这种分类过程被称之为冲突消解(conflict resolution),因为它消解了决定下一个触发规则的冲突。CLIPS依照议程中最高的特权值进行规则的激活,并移除激活。这种执行被称之为触发,就像神经细胞的激活。当有适当的刺激时,神经细胞会激发出一定的电压脉冲,神经细胞激活后,将遭受折射(refraction)并在一定时期内不能被再次触发。如果没有折射,神经细胞将会在刺激作用下无休止的被激活下去。

如果没有折射效应,专家系统将会经常陷入到无关重要的循环当中去。因为,一旦规则被触发,那么它将在相同的事实作用下无休止的被触发下去。在现实世界中,引起触发的刺激最终都会消失。举个例子,一只真的鸭子也许会游走或在电影里充当一个角色,然而,在计算机世界里,一旦数据被存储,它将一直保存在那儿,除非有外部声明移除或电脑断电。

下面的例子展示了一个规则的激活和触发。注意(watch)命令被用来更好的显示每个事实和激活。右箭号表明激活和事实正在被添加,左箭号表明已存在的事实和激活。

CLIPS>(clear)

CLIPS>(defrule duck

(animal-is duck) =>

(assert (sound-is quack))) CLIPS>(watch facts)

CLIPS>(watch activations)

CLIPS>(assert (animal-is duck)) ==>f-1 (animal-is duck)

==>Activation 0 duck:f-1 ; 激活的默认权值为0,其后是规则名:模式 ; 实体索引

CLIPS>(assert (animal-is duck)) ; 注意复制的事实不会被输入 FALSE

CLIPS>(agenda) 0 duck: f-1

For a total of 1 activation. CLIPS>(run)

==>f-2 (sound-is quack) </

>>鐏炴洖绱戦崗銊︽瀮<<
12@gma联系客服:779662525#qq.com(#替换为@)