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

Дополнительные модули

Таким образом, множество контекстов соответствует альтернативным вариантам решений или альтернативным предположениям на разных стадиях процесса логического вывода. Проблема обработки множества предположений и зависимостей между ними достаточна сложна и выделена в отдельное направление исследований, получившее наименование обработки правдоподобия (truth maintenance) или обработки причинности (reason maintenance). Детальнее мы остановимся на этом вопросе в главе 19, где будут рассмотрены альтернативные варианты организации вычислений.

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

Мы постарались дать вам общее представление о возможностях инструментальных средств, применяемых при разработке и эксплуатации экспертных систем, не вдаваясь в подробности реализации разных моделей таких средств. В следующем разделе основное внимание будет уделено выбору подходящих средств, обучению методике работы с ними и внедрению этих средств в практику проектирования систем. Вы увидите, что каждая из этих фаз сопряжена со множеством проблем, но некоторых из них при рациональном подходе можно избежать.

Логический вывод в разных контекстах

Ниже приведен программный код на языке CLIPS, в котором реализована описанная выше стратегия работы со множеством контекстов.

;; ШАБЛОНЫ
;; Fact представляет собой субъект с определенными
;; свойствами.
;; Поле "world" несет информацию о контексте,
(deftemplate fact
(field subj (type SYMBOL))
(field attr (type SYMBOL))
(field world (type INTEGER))
)
;; Act представляет действие с объектом.
;; Поле "world" несет информацию о контексте.
(deftemplate act
(field action (type SYMBOL))
(field object (type SYMBOL))
(field world (type INTEGER))
)
;; Context имеет статус либо OK,
;; либо NG (no good – плохой).
(def template context
(field id (type INTEGER))
(field status (type SYMBOL))
)
;; Модель мира в исходном состоянии.
(def facts model
(context (id 1) (status OK))
(fact (subj weather) (attr sunny) (world 1))
)
;; ПРАВИЛА
;; Если дождя нет,
;; создать новый контекст, в котором можно
;; пропустить занятия.
(def rule skip
(fact (subj weather) (attr?W&~rainy) (world?C)) ›
(assert (act (action skip) (object class)
(world (+?C 1)))) (assert (context
((id (+?C 1)) (status OK)))
)
;; Если пропустить занятия,
;; то на экзамене вас ждет провал.
(defrule fail
(act (action skip) (object class) (world?W)) ›
(assert (act (action fail) (object exam) (world (?W)))
)
;; Если контекст содержит действие fail,
;; пометить его маркером NG. (defrule poison
(act (action fail) (world?W)).
?C ← (context (id?W) (status OK)) ›
(modify?C (status NG))
)

Как только контекст будет помечен маркером NG, с ним можно будет выполнять операции, предусмотренные для отравленного контекста, например удалить все связанные с ним факты и действия (см. упр. 8 в конце главы).

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