5.3.
Управление функционированием интерпретатора
Процесс применения
специфицированных правил можно описать в терминах цикла распознавание-действие,
который состоит из следующих шагов.
(1) Сопоставить
образцы в предпосылках правил и элементы данных в рабочей памяти.
(2) Если окажется,
что можно активизировать более одного правила, выбрать одно из них; этот
шаг называется разрешением конфликта.
(3) Применить
выбранное правило. Результатом, скорее всего, будет добавление нового элемента
данных в рабочую память и/или удаление какого-либо существующего элемента из
рабочей памяти. Затем перейти к шагу 1.
Обычно перед
началом этого циклического процесса в рабочую память вводится элемент, соответствующий
исходному состоянию проблемы. На языке CLIPS такой элемент является вектором
(initial-fact). Процесс останавливается, если будет обнаружен цикл, в котором
ни одно из правил не может быть активизировано, или если активизированное правило
явно содержит команду прекращения работы5. На шаге 2 система располагает
набором пар, состоящих из правил и подстановок переменных, которые сформированы
при сопоставлении образцов. Такие пары называются означиваниями (instantiations).
Механизм разрешения конфликтов специфичен для каждой системы, т.е. для каждого
интерпретатора правил. Можно, конечно, сформулировать и такой набор правил,
что в любой ситуации только одно из них будет удовлетворяться (он называется
детерминированным). Но в экспертных системах обычно используются недетерминированные
наборы правил, поскольку в реальной жизни очень часто встречаются ситуации,
которые позволяют использовать более одного правила.
Управление
процессом функционирования системы, основанной на применении порождающих правил,
выдвигает ряд нетривиальных проблем. Существуют две разновидности обобщенного
подхода к управлению функционированием — локальный и глобальный. Глобальный
подход имеет тенденцию к поиску решений, не связанных с особенностями определенной
предметной области, а локальный, наоборот, на первый план выдвигает приемы,
специфические для данной предметной области. Все стратегии, которые будут перечислены
в следующем разделе, являются примерами использования глобального подхода и,
как правило, "жестко" встраиваются в структуру интерпретатора правил,
как это сделано в интерпретаторе CLIPS. Программист, использующий при построении
конкретной системы такой интерпретатор, лишен возможности каким-либо образом
изменить жестко заложенную в нем стратегию либо может варьировать ее в очень
узких пределах.
Локальный подход предполагает использование специальных правил управления правилами — метаправил. Такие правила обычно программируются в явном виде разработчиком конкретной системы с учетом специфики ее применения.