Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
sii_beta_answers(final).docx
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
3.15 Mб
Скачать

28.Структура мас как программной системы в среде Jason: структура программы агента, структура программы среды функционирования, структура файла проекта.

Jason – это перспективное инструментальное средство для создания МАС на основе комбинации двух языков – расширенного AgentSpeak и Java.

AgentSpeak – это язык описания логики работы агентов и взаимодействий между ними, ориентированный на программирование BDI-модели.

Java в Jason используется для программирования моделей специфических сред функционирования агентов, разработки пользовательских интерфейсов МАС и модификации стандартной работы самого Jason.

Программа МАС на языке AgentSpeak в среде Jason состоит из проектного файла и файлов с программами агентов. Запущенная на выполнение МАС работает циклично, до тех пор, пока не будет остановлена пользователем вручную, самими агентами или интерпретатором по причине ошибки.

Проект МАС в Jason состоит из файла проекта, имеющего расширение «.mas2j», файлов с программами агентов (минимальное количество агентов – один), которые должны иметь расширение «.asl», файлов модели среды и пользовательского интерфейса (не обязательно), написанных на Java.

Программа каждого агента пишется на языке AgentSpeak и структурно состоит из трех частей, относительное расположение которых фиксировано:

- изначальные убеждения и правила;

- изначальные цели;

- планы достижения целей.

Планы

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

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

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

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

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

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

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

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

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

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

@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, и, наконец, они будут сравнены.

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

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

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

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

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

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

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

«Метка

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

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

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]