运行简单的 CLIPS 程序时出现问题

问题描述 投票:0回答:1
(deffacts hechos-iniciales
(tiene-pelos)
(tiene-pezugnas)
(tiene-rayas-negras))

(defrule mamifero-1
(tiene-pelos)
=>
(assert (es-mamifero)))

(defrule mamifero-2
(da-leche)
=>
(assert (es-mamifero)))

(defrule ungulado-1
(es-mamifero)
(tiene-pezugnas)
=>
(assert (es-ungulado)))

(defrule ungulado-2
(es-mamifero)
(rumia)
=>
(assert (es-ungulado)))

(defrule jirafa
(es-ungulado)
(tiene-cuello-largo)
=>
(printout t "Es una jirafa" crlf))
 
(defrule cebra
(es-ungulado)
(tiene-rayas-negras)
=>
(printout t "Es una cebra" crlf))

我得到了这段代码,并使用(load file.clp)从文件中加载,然后执行(运行),但没有显示任何内容,我希望弹出一些打印输出,但这种情况不会发生。
我是 CLIPS 的新手,我确信解决方案将是我缺少的细节。我很感激您的帮助。

我尝试应用这个事实来打印是斑马还是长颈鹿,但我从未得到回应。

clips
1个回答
0
投票

最可能的解释是您在(运行)命令之前没有发出(重置)命令。 (重置)命令对于断言 hechos-iniciales 默认事实中的事实是必要的。

         CLIPS (6.4.1 4/8/23)
CLIPS> 
(deffacts hechos-iniciales
   (tiene-pelos)
   (tiene-pezugnas)
   (tiene-rayas-negras))
CLIPS> 
(defrule mamifero-1
   (tiene-pelos)
   =>
   (assert (es-mamifero)))
CLIPS> 
(defrule mamifero-2
   (da-leche)
   =>
   (assert (es-mamifero)))
CLIPS> 
(defrule ungulado-1
   (es-mamifero)
   (tiene-pezugnas)
   =>
   (assert (es-ungulado)))
CLIPS> 
(defrule ungulado-2
   (es-mamifero)
   (rumia)
   =>
   (assert (es-ungulado)))
CLIPS> 
(defrule jirafa
   (es-ungulado)
   (tiene-cuello-largo)
   =>
   (printout t "Es una jirafa" crlf))
CLIPS>  
(defrule cebra
   (es-ungulado)
   (tiene-rayas-negras)
   =>
   (printout t "Es una cebra" crlf))
CLIPS> (reset)
CLIPS> (run)
Es una cebra
CLIPS> (facts)
f-1     (tiene-pelos)
f-2     (tiene-pezugnas)
f-3     (tiene-rayas-negras)
f-4     (es-mamifero)
f-5     (es-ungulado)
For a total of 5 facts.
CLIPS> 
© www.soinside.com 2019 - 2024. All rights reserved.