(deftemplate bikelife
(slot name)
(slot type))
(deffacts bike
(bikelife (name Strida) (type low_lifestyle))
(bikelife (name Brompton) (type med_lifestyle))
(bikelife (name Molton) (type high_lifestyle))
(bikelife (name Specialized_AlleComp) (type low_sport))
(bikelife (name Specialized_Tarmac) (type medium_sport))
(bikelife (name Pinarello_DOGMA_F8) (type high_sport)))
(defrule rule-1
(budget ?x)
(test (< ?x 300))
(use_for lifestyle)
=>
(assert (recommend low_lifestyle)))
(defrule rule-2
(budget ?x)
(test (< ?x 300))
(use_for sport)
=>
(assert (recommend low_sport)))
(defrule rule-3
(budget ?x)
(test (and (> ?x 300) (< ?x <500)))
(use_for lifestyle)
=>
(assert (recommend med_lifestyle)))
(defrule rule-4
(budget ?x)
(test (and (> ?x 300) (< ?x <500)))
(use_for sport)
=>
(assert (recommend med_sport)))
(defrule rule-5
(budget ?x)
(test (> ?x 500))
(use_for lifestyle)
=>
(assert (recommend high_lifestyle)))
(defrule rule-6
(budget ?x)
(test (and (> ?x 300) (< ?x <500)))
(use_for sport)
=>
(assert (recommend med_sport)))
(defrule rule-7
(budget ?x)
(test (> ?x 500))
(use_for sport)
=>
(assert (recommend high_sport)))
(defrule recommend-rule
(recommend ?type)
(bikelife (name ?x) (type ?type))
=>
(printout t crlf "I recommend " ?x " for you." crlf crlf))
(defrule ask-1
=>
(printout t crlf "================================ ")
(printout t crlf " testing testing testing. ")
(printout t crlf "================================ " crlf crlf)
(printout t "* How much are you going to spend on bike? ")
(assert (budget (read)))
(printout t "* what purpose? (lifestyle, sport)")
(assert (use_for (read))))
(reset)
(run)
Ceci est mon code de Jess pour recommander des vélos. Je ne vois rien de mal dans le code. J'ai essayé des centaines de fois et est venu à Stack Overflow pour obtenir de l'aide dessus.Comment déboguer ce code Jess très simple?
Le code fonctionne comme j'obtiens la valeur de budget et l'évalue par 300, 500 et si la gamme de budget correspond je vérifie le but du vélo que l'utilisateur achète. Après cela, en utilisant des faits, je veux envoyer le message de recommandation. Comment puis-je résoudre ce problème?
Corrigez vos fautes de frappe: 'tyle',' user_for'. – laune
Ah .. C'était le problème .. désolé de poster une question stupide sur StackOverflow. Je pensais une fois si je mettais "test ( X 500)", la valeur x porte la valeur jusqu'à la fin du problème et je pensais que c'était le problème. Merci beaucoup! –
Vous avez plus de fautes de frappe: med_ ou moyen? Et une règle en double pour "sport moyen". Et plusieurs '<500'. – laune