• 第七章 程序的控制 当你年轻的时候,你被世界所控制,当你老的时候,你将控制世界。

    到目前为止,你已经学历了CLIPS的基本句法。现在,你将学习怎样将所学的句法应用到实际有用的程序当中去。同时,你还将会学到一些关于输入的新的句法,怎样比较变量和产生循环。

    读入函数 除了模式匹配外,规则还可以通过其他方式获取信息。CLIPS可以通过使用读入函数(read function)来读入用户输入的键盘信息。

    下面是使用(read)...
  • 2009-04-23

    塞班的风景 - [山水游记]

       偶然在同事的盘子里看到去年公司组织去塞班旅游的照片,一下被塞班的蓝天,碧海惊呆了,地球上仅有这样的胜地,真想也去感受一下塞班啊。

  • 约束变量由模式匹配在LHS中分配一个值给变量类似于通过绑定函数(bind function)在RHS中绑定(binding)一个值到变量。如果同一个变量被重复的使用到,那么在RHS中绑定其变量值将非常方便。

    以一个简单的数学计算为例,让我们首先将答案绑定到一个变量,并随后打印约束变量(bound variable)。

     

    CLIPS>(clear)

    CLIPS>(defr...

  • 初级数字运算 除了处理符号事实,CLIPS还可以执行数字计算。然而,你始终要明白专家系统语言如CLIPS并不是设计用来做些数字运算的。虽然CLIPS的数学函数功能非常强大,它们也只是用来对应用程序中进行一些数字修改而已。其他的语言如FORTRAN有更好的数字运算能力,因为它很少或没有符号推理。在一些应用程序中,你将发现CLIPS的计算能力非常有用。

    CLIPS提供最基本的算术和数学函数,+,-,*,/,div,max,min,abs,float和integer。了解更多的...
  • 第六章 功能 功能性是格式的对立面。

    本章中,你将会学到一些关于模式匹配非常有用的函数和一些非常有用的多字段变量。同时,你也将学到怎样进行数字计算。

    ~约束 让我们重新考虑设计一个帮助机器人穿越大街的专家系统的问题,你可能已写好的一个规则如下:

     

    (defrule green-light

    (light green)

    =>...
  • 注意在声明事实的命令中,并没有指定rich的值,但是,rich的默认值还是被用在Dopey上了。

    如果assets字段被指定值为poor,那么,指定值poor会重载assets的默认值rich。如下是一个关于Dopey那吝啬的侄子的例子:

     

    CLIPS>(reset)

    CLIPS>(assert (prospect (name “Dopey Notwonderf...

  • 第五章 格式 Style today ,gone tomorrow

    本章中,你将学习关键词deftemplate的用法,deftemplate代表定义模板(define template)的意思。这个关键词能帮助你写出具有明确定义模式的规则。

    “精彩”先生自定义模板(deftemplate)类似于C语言中的结构定义。deftemplate定义模式中一组相关的字段,这类似于在C语言中用结构来定义一组相关数据。自定义模板是...

  • 理想的单身汉 模式中变量的使用有一个非常重要和有用的属性,表述如下:

    l        变量在被首次绑定时,仅在规则内保留其值,包含LHS和RHS,除非在RHS中被改变了。

    举个例子,在下面的规则中:

     

    (defrule bound

    (number-1 ?num)

    ...
  • 通配符 代替绑定一个变量到一个字段值,一个非空字段的存在能被检测到单独使用通配符(wildcard)。举个例子,假设你正在经营一个鸭子约会服务部,一只母鸭声明它只与名字为Richard的公鸭约会。事实上,关于这个声明有两个标准,因为它的隐含意义是鸭子必须有不止一个的名字,因此这样一个简单的事实声明:(bachelor Richard)是不充足的,因为在该事实中仅有一个名字。

    部分事实被指定的情形,是非常普遍和重要的。为了解决这个问题,可以利用通配符来触发Richard们。...
  • 第四章 变量 没改变更甚于改变。

    迄今为止,你已经了解了一些规则的类型,简单的阐述了规则的模式与事实匹配的一些内容。在本章中,你将会学到一些更有用的匹配和处理事实的方法。

    认识变量 同其他编程语言一样,CLIPS也通过变量(variables)来存储值。与事实不同的是,事实是静态的且不会改变,而变量的内容是随着其分配的值的改变而动态(dynamic)变化的。相比之下,一旦一个事实被声明,它的字段仅仅只能被撤销和重新声明一个该字段的事实而修改,甚...