使用clipspy在Python构建专家系统时出现CLIPSError的原因
错误原因分析
报错信息
clips.common.CLIPSError: [CSTRNCHK1] test.CLP, Line 7: A literal restriction value found in CE #1 does not match the allowed types for slot 'Presencia'. ERROR: (defrule MAIN::r1 ?d <- (dormitorio (Presencia Si) (Iluminación Apagada)) => (printout t "Encender la iluminación del dormitorio." crlf) (modify ?d (Iluminación Encendida))).
原因说明
- 在CLIPS规则文件
test.CLP中,规则里的(Presencia Si)和(Iluminación Apagada)里的Si、Apagada未加双引号,CLIPS会将它们识别为符号(symbol)类型。 - 但你通过Python代码定义的
dormitorio模板里,明确指定了Presencia和Iluminación这两个slot的类型是STRING,规则中的事实约束值类型必须和模板slot的类型严格匹配,因此触发了类型不匹配的错误。
修正后的test.CLP代码
(defrule r1 ?d <- (dormitorio (Presencia "Si") (Iluminación "Apagada")) => (printout t "Encender la iluminación del dormitorio." crlf) (modify ?d (Iluminación "Encendida")))
修正后,规则里的字符串值用双引号包裹,和模板定义的STRING类型一致,即可正常执行规则逻辑。
内容的提问来源于stack exchange,提问作者FernandoRT
相关产品推荐
相关产品推荐

