Образец, сопоставляющий две нечеткие переменные - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь написать программу, которая будет рекомендовать автомобиль пользователю на основе набора предпочтений, указанных пользователем.Я столкнулся с проблемой, когда я не уверен, как сравнить входные данные пользователя с нечеткими значениями, которые я сохранил как факты (автомобили).Вот что-то похожее на мой код.Надеюсь, вы увидите, что я пытаюсь сделать.

(defrule determine-budget
    (not (cost ?))
    =>
    (printout t "What is your budget? (integer from 0-100000)")
    (bind ?response (read))
    (assert (cost ?response)))

(defrule fuzzify-cost 
    (cost ?p)
    =>
    (assert (fcost (?p 0) (?p 1) (?p 0))))

(defrule find-car
    (fcost ?c)
    (car (name ?id) (cost ?c))
    =>
    (printout t crlf "Your best match is a(n) " ?id "!" crlf))

РЕДАКТИРОВАТЬ: я думаю, что я на самом деле пытаюсь найти нечеткое значение, которое содержит четкие значения, введенные пользователем?Я просто не уверен, как это сделать.РЕДАКТИРОВАТЬ 2.0: Я решил просто предложить пользователю лингвистический ввод.Тем не менее, я до сих пор не знаю, как проверить членство с этим, так как строка, похоже, не работает.

...