Я пытаюсь написать программу, которая будет рекомендовать автомобиль пользователю на основе набора предпочтений, указанных пользователем.Я столкнулся с проблемой, когда я не уверен, как сравнить входные данные пользователя с нечеткими значениями, которые я сохранил как факты (автомобили).Вот что-то похожее на мой код.Надеюсь, вы увидите, что я пытаюсь сделать.
(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: Я решил просто предложить пользователю лингвистический ввод.Тем не менее, я до сих пор не знаю, как проверить членство с этим, так как строка, похоже, не работает.