Иллюстрированный самоучитель по введению в экспертные системы


           

Выбор вина по заданному описанию


;; "Попробуйте " ?f lavor " " ?color " вино с
;; " ?body " консистенцией."

t crlf)

(retract ?col) (retract ?bod) (retract ?fla)
(retract ?task) (assert (task brand)) )

;;ПРАВИЛА, ИМЕЮЩИЕ ОТНОШЕНИЕ К ВИНУ.

;; Выбор вина по заданному описанию значений ;атрибутов.

;;Правила этой группы соответствуют этапу
;;"конкретизация решения".
;;Прежде чем предложить пользователю выбрать
;;желаемый продукт, нужно сформировать список
;;кандидатов.

;;Разработайте правило go-choose, которое
;;выбирает вино с наивысшим рейтингом, если не
;;активизируются никакие другие правила,
;;дополняющие список вин.

;;Правило soave является примером правила
;;дополнения списка новым названием вина
;;(в данном случае "soave").
;;Разработайте другие аналогичные правила.

(defrule soave (task brand)

(wine (property color) (is white))
(wine (property flavor) (is dry)

(cert ?certl)) (wine (property body) (is fine)

(cert ?cert2)) =>

(assert (wine (property brand) (is soave)

(cert (min ?certl ?cert2))))

)

;; ПРАВИЛА, ОРГАНИЗУЮЩИЕ ВЫБОР ПОЛЬЗОВАТЕЛЕМ ИЗ
;; СПИСКА.

Пользователь отвечает на выводимый запрос вводом "yes" или "по".

Разработайте правило selection, которое выбирает вино с наивысшим рейтингом и предлагает его пользователю.

Разработайте правило rejection, которое активизируется после ввода пользователем отрицательного ответа на текущее предложение.

Правило acceptance завершает текущий сеанс работы с программой, (defrule acceptance

(task choice)

(decision (re ?candidate) (is yes))

=>

(printout

t crlf

"Sir/Madam has impeccable taste "
;; "Сэр/Мадам! У вас исключительно тонкий вкус! "

t crlf) (halt) )

II) Как можно изменить стратегию поиска, например не формировать сначала весь список, а предлагать пользователю вина сразу же после формирования очередного кандидата, причем создавать их в порядке "качества" вина?

Содержание  Назад