Дополнительные модули
Таким образом, множество контекстов соответствует альтернативным вариантам решений или альтернативным предположениям на разных стадиях процесса логического вывода. Проблема обработки множества предположений и зависимостей между ними достаточна сложна и выделена в отдельное направление исследований, получившее наименование обработки правдоподобия (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 в конце главы).