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

Рекомендуемая литература. Упражнения.

;;ПРАВИЛА РАБОТЫ С КОЭФФИЦИЕНТАМИ УВЕРЕННОСТИ
;;Если в модели среды существуют две структуры с
;;одними и теми же значениями для одних и тех же
;;атрибутов, но отличаются коэффициентами
;;уверенности, то правило
;;attribute-update создает из них третью
;;структуру с новым значением и удаляет две
;;исходные.
;;Новое значение коэффициента уверенности CF
;;вычисляется по формуле:
;;cf = cfl + с£2(1 – cfl)
(defrule attribute-update (task attributes)
?winel < – (property?attribute) (is?value)
(cert?certl))?wine2 < – (property?attribute) (is?value)
(cert?cert2)) (<>?crtl?cert2) ›
(bind?newcert (+?certl (?cert2
(– 1?certl)))) (assert (wine (property?attribute)
(is?value) (cert?newcert))) (retract?winel) (retract?wine2))
;;Разработайте правило preference, к которому
;;следует обращаться только в том случае, если в
;;рабочей памяти существует больше одного
;;возможного значения для некоторого атрибута.
;;Это правило должно запросить у пользователя,
;;какое значение атрибута из существующих для
;;него предпочтительнее, соответственно
;;изменить коэффициент уверенности в выбранном
;;сочетании атрибут-значение, а другое значение
;;удалить из памяти.
;Разработайте правило choose-value, которое
;;будет активизироваться в том случае, если в
;;рабочей памяти существуют две структуры,
;;характеризуемые разными значениями одного и
;;того же атрибута. Правило должно
;;выбирать структуру, у которой коэффициент
;;уверенности больше, а другую удалять.
;Разработайте правило unique, которое будет
;;активизироваться в том случае, если существует
;;только одна структура с определенным значением
;;атрибута. Это правило объявляет, что атрибут
;;окончательно определен.
;Разработайте правило unity, которое будет
;;активизироваться в том случае, если существует
;;структура, обладающая коэффициентом
;;уверенности, равным 1.
;;Это правило объявляет, что атрибут
;;окончательно определен.
;;Если все атрибуты вина определены, вывести отчет,
(defrule all-attributes-done?task.
< – (task attributes)?col
< – (color done)?bod
< – (body done)?fla
< – (flavor done) (wine (property color)
(is?color)) (wine (property body)
(is?body)) (wine (property flavor)
(is?flavor)) ›
(printout t crlf
"Try a "?flavor " "?color " wine with a "?body " body"
;; "Попробуйте "?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) Как можно изменить стратегию поиска, например не формировать сначала весь список, а предлагать пользователю вина сразу же после формирования очередного кандидата, причем создавать их в порядке "качества" вина?

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.