17.3.5.
Дополнительные модули
Под дополнительными
модулями понимаются те полезные программы, которые можно выполнять вместе с
приложением. Как правило, такие программы реализуют некоторые специальные функции,
как бы "снимая их с полки", причем для обращения к таким функциям
не требуется что-либо программировать в основном приложении или заниматься его
индивидуальной настройкой. Одним из примеров такого рода дополнительного модуля
может служить программный пакет Simkit из комплекта среды КЕЕ.
Этот пакет позволяет оснастить экспертную систему методами моделирования.
Другой функцией,
которая поддерживается дополнительными модулями сред КЕЕ и ART, является механизм
обработки множества различных контекстов логических рассуждений. В первом
приближении можно считать, что контексты формируются теми ветвями в пространстве
поиска, которые допускают использование более чем одного оператора. Рассмотрим
представленный ниже сценарий, в котором имеются два правила, в каждом из которых
условная часть удовлетворяется в текущем контексте рассуждений.
[Правило 1]
ЕСЛИ: сегодня
рабочий день И
нет признаков
недомогания, ТО: посетить занятия по информатике.
[Правило 2]
ЕСЛИ: сегодня
рабочий день И
погода прекрасна,
ТО: покататься на яхте.
В большинстве
систем, основанных на порождающих правилах, выбор того единственного правила,
которое будет активизировано, зависит от реализуемой стратегии разрешения конфликтов.
Но в некоторых приложениях предпочтительным вариантом будет разделить текущий
контекст на два разных, в одном из которых будет активизировано правило 1, а
в другом — правило 2 (рис. 17.1). В каждом из этих контекстов будет сделано
разное заключение, однако можно так организовать процесс, чтобы в каждый контекст
была включена и информация из родительского контекста. Тогда в обоих контекстах
будет учитываться, что сегодня понедельник и за окном прекрасная погода.
Теперь можно
раздельно обрабатывать каждый контекст, причем в процессе дальнейшей обработки
не исключено и аналогичное повторное разделение контекстов. В результате будет
сформировано несколько вариантов решения проблемы.
Но можно в
процессе обработки попасть в такую ситуацию, которая расценивается как неудача
процесса вывода, например нарушение исходных ограничений. В нашем примере такой
неудачей может быть заключение о том, что экзамен по информатике будет провален
вследствие выполнения правила
[Правило 3]
ЕСЛИ: не посещать занятия по информатике,
ТО: экзамен
по информатике будет провален
Получение
такого заключения должно было бы привести к тому, что линию рассуждений, порожденную,
правилом 2, следует исключить из рассмотрения. Говорят, что соответствующий
контекст отравлен. Как правило, удаляется вся цепочка рассуждений, вплоть
до последнего "размножения" контекстов. Таким образом, контексты,
выделенные утолщенными прямоугольниками на рис. 17.1, должны быть исключены
из рассмотрения, и останется только одна цепочка, в соответствии с которой будет
сделан вывод о необходимости посетить занятия по информатике, несмотря на все
соблазны.
Таким образом,
множество контекстов соответствует альтернативным вариантам решений или альтернативным
предположениям на разных стадиях процесса логического вывода. Проблема обработки
множества предположений и зависимостей между ними достаточна сложна и выделена
в отдельное направление исследований, получившее наименование обработки правдоподобия
(truth maintenance) или обработки причинности (reason maintenance). Детальнее
мы остановимся на этом вопросе в главе 19, где будут рассмотрены альтернативные
варианты организации вычислений.
Рис. 17.1.
Пример множества контекстов
Тенденция
использования дополнительных модулей будет скорее всего развиваться, поскольку
пользователи экспертных систем часто нуждаются в разного рода дополнительных
функциональных возможностях, специфичных для конкретного приложения, а также
в возможности интегрировать экспертную систему с программными продуктами других
классов. На практике экспертная система часто используется вместе в базой данных
или системой управления движением робота, получает информацию от систем обработки
сигналов или пакетов статистической обработки.
Мы постарались
дать вам общее представление о возможностях инструментальных средств, применяемых
при разработке и эксплуатации экспертных систем, не вдаваясь в подробности реализации
разных моделей таких средств. В следующем разделе основное внимание будет уделено
выбору подходящих средств, обучению методике работы с ними и внедрению этих
средств в практику проектирования систем. Вы увидите, что каждая из этих фаз
сопряжена со множеством проблем, но некоторых из них при рациональном подходе
можно избежать.
17.2.
Логический вывод в разных контекстах
Ниже
приведен программный код на языке 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 в конце главы).