剪辑专家系统

Clips Expert System

我正在尝试创建一个专家系统来决定您是否可以买房。我想知道如何表述允许超过特定年龄的人购买房屋的规则。例如,如果您输入您已超过 40 岁,系统会返回并告诉您您不能购买房屋。 我试过下面这段代码,但它不起作用

(defrule age-over-forty
    (student yes)
    (income low)
    (credit excellent)
    (age 40>)
    =>
    (printout t "You can not buy a house" crlf))

编辑:我所说的“它不起作用”是什么意思;当我 运行 它时,你输入了一个年龄,假设我输入了 46。它会把它添加到事实中,但它应该打印出“你不能买房子”,所以它不会满足代码的(40岁>)部分。

使用谓词约束(CLIPS 6.3 基本编程指南的第 5.4.1.5 节)或测试条件元素来执行数字比较。

         CLIPS (6.31 6/12/19)
CLIPS> 
(defrule age-over-forty
   (student yes)
   (income low)
   (credit excellent)
   (age ?age&:(> ?age 40))
   =>
   (printout t "You can not buy a house" crlf))
CLIPS> 
(assert (student yes)
        (income low)
        (credit excellent)
        (age 46))
<Fact-4>
CLIPS> (agenda)
0      age-over-forty: f-1,f-2,f-3,f-4
For a total of 1 activation.
CLIPS> (run)
You can not buy a house
CLIPS>