Я хочу написать проект, чтобы получить точное значение калорий, чтобы рассчитать точное значение тогдашней части (насколько увеличился вес?). Это мое правило:
if calorie is high then increase weight
для этого у меня есть этот набор калорий:
(highCalorie (20 0)(40 .2) (60 .5) (100 .8) (180 1))
а с другой стороны, для значения увеличения веса у меня есть этот набор:
(increase(50 0) (100 .4) (120 .8) (150 1))
другими словами, я хочу сопоставить значение калорий для увеличения веса. для этого я пишу этот код:
(deftemplate calories
20 180
(high(20 0)(40 .2) (60 .5) (100 .8) (180 1))
)
(deftemplate fat
50 150
(increase(50 0) (100 .4) (120 .8) (150 1))
)
; We first get a precise value for calorie and fuzzify it.
(defrule getCalorie
(declare (salience 100))
=>
(printout t "Enter calorie: ")
(bind ?t (read))
(assert (calorie ?t))
)
(defrule fuzzifyCalorie
(calorie ?t)
=>
(assert (calories (?t 0) (?t .2) (?t .5)(?t .8)(?t 1))))
; Here we add rules to prescribe amounts of increased weight
(defrule result
(declare (salience -1))
(calories high)
=>
(assert (fat increase)))
(defrule ShowPenicillin
(declare (salience -100))
?f <- (fat ?p)
=>
(printout t "for this colrie" (moment-defuzzify ?f) " grams of fat increased to weight" crlf))
в чем моя ошибка?
большое спасибо.