如何正确使用CLIPS编程语言中的条件?

时间:2015-07-07 15:48:31

标签: clips expert-system

这是我的代码

(deffacts startup                          

               (bird canary) 
               (colour-canary yellow) 

               (bird ostrich) 
               (can-not-fly ostrich) 

)
(defrule r-bird-test
  (bird ?var)  
  (not (bird ostrich))
   =>
  (printout t ?var " ****" crlf)
)

现在,当我(重置)和(运行)它没有打印" canary ****"。我没有正确使用非条件吗?任何人都可以指出我在这里失踪了吗?感谢。

1 个答案:

答案 0 :(得分:2)

如上所述,如果存在事实(鸟鸵鸟),则非条件元素会阻止规则执行。由于执行(重置)后该事实存在,因此规则不会执行。如果你想要为每个鸟类事实执行规则,其中?var不是鸵鸟,你需要以这种方式编写规则:

CLIPS> 
(deffacts startup
   (bird canary)
   (colour-canary yellow)
   (bird ostrich)
   (can-not-fly ostrich))
CLIPS> 
(defrule r-bird-test
   (bird ?var&~ostrich)
   =>
   (printout t ?var " ****" crlf))
CLIPS> (reset)
CLIPS> (run)
canary ****
CLIPS>