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


Упражнения - часть 6


;; "Попробуйте " ?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) Как можно изменить стратегию поиска, например не формировать сначала весь список, а предлагать пользователю вина сразу же после формирования очередного кандидата, причем создавать их в порядке "качества" вина?




- Начало -  - Назад -