Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_по_jason_(итог).doc
Скачиваний:
79
Добавлен:
21.03.2016
Размер:
1.79 Mб
Скачать

4.4.5 Планы

Планы описывают процедурную составляющую знаний агента.

План состоит из четырех частей:

- метки плана (необязательна);

- события активации плана;

- контекстных ограничений (могут отсутствовать);

- содержания плана (может отсутствовать).

Эти части разделяются специальными символами-маркерами, как будет показано ниже.

Метка плана позволяет задать плану уникальный идентификатор. При помощи метки можно выполнять над планом различные операции (см. справочник в прил.1), а также определять дополнительные свойства планов (см. п. 4.4.7).

Событие активации обычно располагается на следующей строке после метки или отделяется от нее пробелом.

Имя метки начинается с символа «@», после которого должна следовать маленькая буква, а далее – любые латинские буквы, цифры. Приведем примеры меток.

@p1 – правильная метка.

@P1 – неправильная метка.

@mm12CV – правильная метка.

@12pm – неправильная метка.

Событием активации плана может быть любое изменение, происходящее с убеждениями и целями. Например, события порождаются, когда:

- происходит добавление или удаление убеждений;

- происходит возникновение новых или отказ от прежних целей;

- запрашивается несуществующая в базе убеждений информация;

- нарушается процесс выполнения плана.

Имена событий начинаются со знаков «+» и «-» и образуются от имен убеждений и целей как показано в табл. 2.

Таблица 2

Обозначение

события

Пояснение

+k

Событие добавления убеждения k

-k

Событие удаления убеждения k

+!k

Событие возникновения цели !k

-!k

Событие отказа от достижения цели !k

(по причине ошибки в плане или штатным

образом)

+?k

Событие возникновения цели-проверки

-?k

Событие отказа от проверки ?k (по причине ошибки в плане или штатным образом)

Рассмотрим подробнее три последних события, указанных в таблице. Допустим, у нас имеется план, обслуживающий достигаемую цель «!p», в теле которого присутствует цель-проверка «?f(X)». Когда интерпретатор Jason переходит к обработке цели-проверки, то вначале он пытается достичь ее путем считывания заданных термов из базы убеждений.

Если в базе убеждений в явном виде нет необходимого для этого убеждения, то он пытается вывести его из имеющихся правил.

Если подходящие правила не будут найдены, то генерируется событие «+?f(X)» в надежде на то, что найдется план, вычисляющий значение терма X.

Если такой план будет найден, но должным образом не завершит свою работу, например, по причине ошибки, то генерируется событие отказа от цели-проверки «-?f(X)».

Если плана для обработки «+?f(X)» не найдено, то происходит отказ от достижения цели «!p» и генерируется событие «-!p».

События «-?f(X)» и «-!p» также могут быть перехвачены и обработаны соответствующими планами. Посредством подобных планов обычно реализуется обработка исключительных ситуаций.

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

Термы-переменные, конкретизированные в контекстных ограничениях, сохраняют свое значение и в теле плана.

Приведем примеры контекстных ограничений в отрыве от остальных частей плана:

«p(X)&q(Y)&X>Y» – ограничения вычисляются слева направо, поэтому сначала будет конкретизирована переменная X, потом Y, и, наконец, они будут сравнены.

«onBox & not haveBanana» - ограничение, составленное из двух убеждений в форме высказываний. Используется слабое отрицание для убеждения «haveBanana».

«.count(inLove(bob,_), N)&N>3» - в ограничении использована внутренняя функция подсчета количества убеждений заданной структуры.

Тело плана – это последовательность операций, реализующих предназначение плана:

- математических операций;

- вызовов внутренних функций Jason;

- действий, направленных на объекты среды функционирования МАС;

- коммуникационных актов.

Отдельные выражения в теле плана отделяются точкой с запятой, а в конце плана ставится точка.

Обобщенная синтаксическая конструкция плана выглядит следующим образом.

«Метка

Имя события : Контекстные ограничения < Тело плана.»

Обратите внимание на то, что между именем события и контекстными ограничениями обязательно ставится двоеточие, а между условием активации и содержанием ставится стрелка влево «< ».

Возможны также следующие варианты структуры плана.

1. Без контекстных ограничений.

«Имя события < Тело плана.»

2. Без контекстных ограничений и телa плана.

«Имя события.» или «Имя события<-true.»

3. Без тела плана, но с контекстными ограничениями.