0
я хочу написать проект получить точное значение калорий, чтобы вычислить точное значение то часть (? Сколько весов увеличения) это мое правило:Как fuzzify в fuzzyclips? .
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))
, что это моя ошибка?
спасибо большое.
tnx, в вашем коде, например (20 0), означает, что валидатор из 20 в наборе калорий равен 0? Это правда? –
Я думаю, что это то, что называется классом членства. Таким образом, значение 20 не будет считаться высоким. Там есть документация, которую я нашел здесь: http://alumni.cs.ucr.edu/~vladimir/cs171/quickfuzzy.pdf. –
Я попробовал то, что вы сказали, но это не сработало, я изменил свой код. и он работает, но я не понимаю смысла этой линии? (defrule fuzzifyCalorie (calorie? t) => (assert (calories (? t 0) (? t 1) (? t 0)))) спасибо за помощь –