Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лек.9 Языки предст. знаний.doc
Скачиваний:
51
Добавлен:
19.05.2015
Размер:
94.21 Кб
Скачать

Продукционный язык орs.

Продукционный язык OPSявляется универсальным языком программирования, он в первую очередь предназначен для разработки систем ИИ, и, в частности экспертных систем. Программа на этом языке состоит из декларативной и продукционной частей. В языке имеются три вида операторов: оператор описания типов данныхTYPE, оператор описания классовCLASSи оператор описания правилRULE. Декларативная часть программы содержит описание типов данных и классов элементов рабочей памяти. Элемент рабочей памяти (класс) является единственно возможным представителем данных вOPSпрограмме. Он представляет собой фиксированную структуру, состоящую из совокупности пар «атрибут-значение». Атрибуты локализованы в пределах одного класса, некоторые атрибуты могут не иметь значения. Допустимые классы элементов рабочей памяти должны быть предварительно описаны в разделе определения классов. Определение класса задает его структуру, типы допустимых значений атрибутов, входящих в класс, и, если это необходимо, начальные значения атрибутов (значения по умолчанию).

Раздел правил записывается после декларативной части и представляет собой совокупность правил. Правило состоит из заголовка и тела правила. Заголовок начинается со слова RULE, за которым следует имя правила и описание переменных (если они используются). Тело правила состоит из левой части, задающей условие применимости правила, и правой части, содержащей последовательность выполняемых действий. Левая часть начинается словамиIF, разделителем между левой и правой частями служит словоTHEN. Например:

RULE ОСТАНОВКА УСТАНОВКИ 1

IF

ОБЪЕКТ

ИМЯ УСТАНОВКА _1

СОСТОЯНИЕ ОСТАНОВИЛАСЬ

AND

ОБЪЕКТ

ИМЯ УСТАНОВКА _2

СОСТОЯНИЕ РАБОТАЕТ

AND

ОБЪЕКТ

ИМЯ УСТАНОВКА _3

СОСТОЯНИЕ РАБОТАЕТ

THEN

WRITEУстановка 1 остановилась

WRITEРаспределить ее сырье между установкой 2 и установкой 3

Левая часть состоит из одного или более условных элементов. Каждый условный элемент задает образец, который сопоставляется с содержащимися в рабочей памяти элементами. Левая часть считается сопоставленной, если одновременно сопоставились все входящие в нее условные элементы. Разделителем между условными элементами служит слово ANDилиANDNUT. В левой части могут быть использованы предикатные операторов: не равно¸ больше, меньше, не больше, не меньше, не входит в список и др.

Правая часть правила состоит из последовательности императивных утверждений, называемых действиями, которые разделяются на две группы: элементарные, обеспечивающие вывод решения, и вспомогательные, обеспечивающие ввод и другие сервисные возможности. К элементарным относятся: MARE– создание нового элемента рабочей памяти;REMOVE– удаление элемента из рабочей памяти;MODIFY– изменение значений атрибутов, уже находящихся в рабочей памяти. К вспомогательным относятся:HALT– явное прекращение программы;BIND– вызов функций или модулей на других языках программирования;SET– динамическое изменение стратегии вывода решений или подробности объяснения решений, а также операторы вывода сообщений на дисплей или принтер.