(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 的新手,我确信解决方案将是我缺少的细节。我很感激您的帮助。
我尝试应用这个事实来打印是斑马还是长颈鹿,但我从未得到回应。
最可能的解释是您在(运行)命令之前没有发出(重置)命令。 (重置)命令对于断言 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>