Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Computer science Clips defRule已成功定义,但未与其他defrules一起激发_Computer Science_Clips - Fatal编程技术网

Computer science Clips defRule已成功定义,但未与其他defrules一起激发

Computer science Clips defRule已成功定义,但未与其他defrules一起激发,computer-science,clips,Computer Science,Clips,这是我的代码,第一个Defrule触发“get patientnationalic”,但第二个名为“fever”的Defrule没有 我正在尝试制作一个clips程序,测试用户的症状,并对他们的疾病进行诊断(如果有的话) 这是一个大学项目,我有一个截止日期,但我不能得到这一点运行 (deftemplate patient (slot name) (slot fever)) (defrule get-patientnationalic => (printou

这是我的代码,第一个Defrule触发“get patientnationalic”,但第二个名为“fever”的Defrule没有
我正在尝试制作一个clips程序,测试用户的症状,并对他们的疾病进行诊断(如果有的话) 这是一个大学项目,我有一个截止日期,但我不能得到这一点运行

(deftemplate patient 
   (slot name)
   (slot fever))
   
(defrule get-patientnationalic
   =>
   (printout t "What is your national-IC? " crlf) 
   (bind ?nationalic (readline))
   (assert (patients's-nationalic ?nationalic)))
 
(defrule get-patientgender
   =>
   (printout t "What is your gender?" crlf) 
   (bind ?gender (readline))
   (assert (patient's-gender ?gender)))
    
(defrule fever
   (or (fever ?n)
       (fever ?n))
   ?patient <- (patient (name ?name))
   =>
   (printout t crlf "Does "?name" has fever? (yes/no)" crlf)
   (printout t " Answer: ")
   (bind ?fever (lowcase (readline)))
   (if (eq ?fever yes)
      then
      (bind ?fever y)
      else 
      (if (eq ?fever no)
         then 
         (bind ?fever n)))
   (assert (fever ?fever))
   (modify ?patient (fever ?fever)))
(定义患者)
(插槽名称)
(老虎热)
(defrule获得耐心国家)
=>
(打印出“您的国家IC是什么?”crlf)
(绑定?国家(阅读线))
(断言(患者的国有化?国有化)))
(defrule获得耐心
=>
(打印出t“你的性别是什么?”crlf)
(绑定?性别(阅读线))
(断言(患者性别?性别)))
(退烧
(或(发烧?n)
(发烧
病人
(打印出的t crlf“是否”?名称“是否发烧?(是/否)”crlf)
(打印出t“答案:”)
(bind?发烧(低病例(阅读线)))
(如果(等式?是)
然后
(捆绑?发烧)
其他的
(如果(等式?发热编号)
然后
(绑定(n)))
(断言(发烧?发烧))
(修改?患者(发烧?发烧)))

发热规则的条件无法匹配,因为不存在患者事实,并且该规则要求的发热事实仅由同一规则断言。只需相应地修改您的代码:

         CLIPS (6.4 2/9/21)
CLIPS> 
(deftemplate patient 
   (slot name)
   (slot gender (default unknown))
   (slot fever (default unknown))
   (slot IC (default unknown)))
CLIPS>    
(defrule get-patient-name
   =>
   (printout t "What is your name? ") 
   (bind ?name (readline))
   (assert (patient (name ?name))))
CLIPS>    
(defrule get-patient-nationalic
   ?patient <- (patient (IC unknown))
   =>
   (printout t "What is your national-IC? ") 
   (bind ?nationalic (readline))
   (modify ?patient (IC ?nationalic)))
CLIPS>  
(defrule get-patient-gender
   ?patient <- (patient (gender unknown))
   =>
   (printout t "What is your gender? ") 
   (bind ?gender (readline))
   (modify ?patient (gender ?gender)))
CLIPS>     
(defrule fever
   ?patient <- (patient (name ?name) (fever unknown))
   =>
   (printout t "Does " ?name " has fever? (yes/no) ")
   (bind ?fever (lowcase (readline)))
   (if (eq ?fever yes)
      then
      (bind ?fever y)
      else 
      (if (eq ?fever no)
         then 
         (bind ?fever n)))
   (modify ?patient (fever ?fever)))
CLIPS> (reset)
CLIPS> (run)
What is your name? Fred
What is your national-IC? US
What is your gender? male
Does Fred has fever? (yes/no) yes
CLIPS> (facts)
f-1     (patient (name "Fred") (gender "male") (fever "yes") (IC "US"))
For a total of 1 fact.
CLIPS> 
剪辑(6.4 2/9/21)
剪辑>
(d)病人
(插槽名称)
(插槽性别(默认值未知))
(插槽发热(默认值未知))
(插槽IC(默认值未知)))
剪辑>
(defrule获取患者姓名
=>
(打印出“你叫什么名字?”)
(绑定?名称(读线))
(断言(患者(姓名?姓名)))
剪辑>
(使病人国有化)
病人
(打印输出t“您的国家IC是什么?”)
(绑定?国家(阅读线))
(修改?患者(IC?国家)))
剪辑>
(1)获得患者性别
病人
(打印出“你的性别是什么?”)
(绑定?性别(阅读线))
(修改?患者(性别?性别)))
剪辑>
(退烧
病人
(打印出的t“是否”?名称“是否发烧?(是/否)”)
(bind?发烧(低病例(阅读线)))
(如果(等式?是)
然后
(捆绑?发烧)
其他的
(如果(等式?发热编号)
然后
(绑定(n)))
(修改?患者(发烧?发烧)))
剪辑>(重置)
剪辑>(运行)
你的名字叫什么?弗莱德
你的国家IC是什么?美国
你的性别是什么?男性的
弗雷德发烧吗?(是/否)是
剪辑>(事实)
f-1(患者(姓名“Fred”)(性别“男性”)(发烧“是”)(IC“美国”))
总共有1个事实。
剪辑>