CLIPS负面情况

时间:2016-09-24 09:12:07

标签: conditional-statements clips fact

我正在寻找一种基于负面条件删除事实的方法。例如,在创建以下事实之后:

CLIPS> 
(deffacts Cars
   (color red)
   (color green)
   (color yellow)
   (doors three)
   (doors five))
CLIPS>    
(defrule combinations
   (color ?color)
   (doors ?doors)
   =>
   (assert (car ?color ?doors)))
CLIPS> (reset)
CLIPS> (run)
CLIPS> (facts)
f-0     (initial-fact)
f-1     (color red)
f-2     (color green)
f-3     (color yellow)
f-4     (doors three)
f-5     (doors five)
f-6     (car red five)
f-7     (car green five)
f-8     (car yellow five)
f-9     (car red three)
f-10    (car green three)
f-11    (car yellow three)
For a total of 12 facts.
CLIPS> 

我正在考虑用以下陈述删除一些事实:

(defrule clear
    ?q1  <- (car ?color~green five)
=>
    (retract ?q1 )
    (printout t "Cars cleared " ?q1 crlf)
)

这应该删除五门车,颜色不绿色。因此应删除ID f-6和f-8。并打印已删除的事实。

该语句不会给我一个错误,但如果我执行(运行)它不会收回或打印出语句。我猜这种情况不对,但我不知道如何写出这种消极情况。

由于

1 个答案:

答案 0 :(得分:0)

我找到了如何正确编写代码:

(defrule clear
    ?q1  <- (car ~green five)
=>
    (retract ?q1 )
    (printout t "Cars cleared " ?q1 crlf)
)

希望它有助于某人