剪辑专家系统
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>
我正在尝试创建一个专家系统来决定您是否可以买房。我想知道如何表述允许超过特定年龄的人购买房屋的规则。例如,如果您输入您已超过 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>