Материал: Средства для создания программных агентов

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам


Рис. 1.3 Технологическая схема процесса разработки

агентно-ориентированных приложений на базе AgentBuilder ToolKit

         Для спецификации поведения агентов в системе AgentBuilder используется специальный объектно-ориентированный язык RADL (Reticular Agent Definition Language). Правила поведения в этом языке могут рассматриваться как конструкции вида WHEN-IF-THEN.

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

IF-часть сравнивает текущую ментальную модель с условиями применимости правила. Образцы в IF-части работают на намерениях, полаганиях, обязательствах и возможностях, определенных в ментальной модели.

THEN-часть определяет действия в ответ на текущие события и состояния ментальной модели и внешнего окружения. Они могут включать обновление ментальной модели, коммуникативные и внутренние действия.

         На рисунке 1.4 представлена модель «жизненного цикла» агента в системе AgentBuilder.


Рис. 1.4 Модель «жизненного цикла» агента в системе AgentBuilder

В языке RADL активно используются образцы, имеются достаточно развитые средства работы с переменными и представительный набор действий, включающий формирование перформативов языка KQML. Структуры данных, на которых «работает» данный язык, являются, по существу, фреймами, а сами правила — суть продукции специального вида. Язык поддержан на инструментальном уровне системой специальных языково-ориентированных редакторов.

Спецификация поведения агентов и их ментальных моделей составляет специальный файл (agent definition file), который используется совместно с классами и методами из библиотеки действий агентов и библиотеки интерфейсов. Этот файл интерпретируется в рамках компонента Reticular's Run-Time Agent Engine, являющегося частью окружения периода исполнения AgentBuilder.

Оценивая подход к спецификации моделей поведения агентов, используемый в AgentBuilder, можно констатировать, что в целом это серьезная система представления и манипулирования знаниями, ориентированная на описание моделей типа RAMM. Вместе с тем в данной модели отсутствуют средства эксплицитного управления выводом, которые могли бы существенно увеличить функциональную мощность языка. Нет в модели и средств явной фиксации состояния агента, отличных от флагов и/или значений переменных. Не вполне ясно и то, как в спецификации моделей поведения могут быть учтены разные, но одновременно сосуществующие «линии поведения», что характерно для действительно интеллектуальных агентов. Не вполне обоснованным представляется и использование режима интерпретации для реализации поведения агентов.

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

1.5 Архитектура мультиагентных приложений

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

В отличие от традиционных систем, в которых решение ищется с помощью централизованных, последовательных и детерминированных алгоритмов, в мультиагентных системах решение достигается в результате распределённого взаимодействия множества агентов – автономных программных объектов, нацеленных на поиск возможно не столько полностью оптимального, сколько наилучшего из возможных решений на каждый момент времени. Если найденный агентом лучший вариант уже забронирован другим агентом, агенты оказываются способны выявить конфликт и разрешить его путём переговоров, в ходе которых достигается компромисс, отражающий временное, и, как правило, неустойчивое равновесие (баланс) их интересов.

Этот новый принцип радикально отличает такие решения и позволяет применять мультиагентные инструменты, продукты и системы для решения самых сложных задач.

В целом, мультиагентные системы или агентно-ориентированное программирование являются следующим шагом в развитии объектно-ориентированного программирования (ООП) и интегрируют в себе достижения последних десятилетий в сфере искусственного интеллекта, параллельных вычислений и телекоммуникаций.

Различают три базовых типа архитектуры мультиагентных систем (МАС):

1. архитектура, основанная на принципах и методах работы со знаниями;

2. архитектура, основанная на поведенческих моделях;

3. гибридные построения, сочетающие в различных соотношениях особенности двух первых архитектур.

         C классической точки зрения архитектура на основе знаний это такая архитектура, которая содержит символьную модель мира, представленную в явной форме, и в которой принятие решений о действиях, которые должны быть предприняты агентом, осуществляется на основе рассуждений логического или псевдо-логического типов. Такой агент может рассматриваться как специальный случай системы, основанной на знаниях.

         Сначала идея агента, основанного на знаниях, строилась на чисто логической основе и представлялась весьма перспективной. Однако позднее было обнаружено, что лежащее в основе такого подхода исчисление предикатов первого порядка неразрешимо. Более того, такие ментальные свойства агента, как убеждения, желания, намерения, обязательства по отношению к другим агентам и т.д, невыразимы в терминах исчисления предикатов первого порядка. Были разработаны некоторые специальные варианты расширений модальных логик и подобных модальным, которые оказались с точки зрения реализуемости более удачными. Такие архитектуры были названы Belief-Desire-Intention (BDI) – архитектурами. [6]

         В системах, построенных на поведенческих моделях, главным образующим понятием является «ситуация», в которой оказался агент, и «побудительный мотив» к выработке адекватного этой ситуации действия или поведения («реакция») агента. Поведенческие модели чаще всего строятся на правилах выработки адекватных реакций. Или, если разнообразие ситуаций не катастрофично - применяются алгоритмы, позволяющие создать конечный автомат с ограниченными возможностями. Агенты МАС данного типа называются реактивными, а их реакция на тот или иной побудительный мотив всегда рассматривается как результат соотнесения состояния внешней среды и внутреннего состояния агента.      Наиболее перспективны гибридные МАС, сочетающие «лучшие» качества поведенческих и продукционных моделей. Гибридные МАС часто используют принцип специализации своих агентов. Примечательно, что БЗ агентов таких систем имеет знания трех уровней - о предметной области, о возможных взаимодействиях с другими агентами (если своих недостаточно) и специальные знания, обеспечивающие оптимальное управление системой.

Выводы по I главе

         В данной главе было дано определение программного агента, а так же проведен анализ существующих программных агентов. В рамках данной работы были рассмотрены следующие типы программных агентов: агенты-покупатели или торговые боты, пользовательские и персональные агенты, агенты по мониторингу и наблюдению и агенты по добыче и анализу данных.

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

         Так же в данной главе рассмотрены языки программирования программных агентов, в результате чего можно сделать вывод, что при программировании агентов чаще всего применяются языки объектно-ориентированного программирования (Си++, Java), реже используются символьные языки и языки логического программирования (LISP, Oz).

         Кроме этого проведен анализ существующих программных платформ для создания программных агентов, рассматривались такие платформы как  NetLogo, StarLogo, Repast Simphony, Eclipse AMP, JADE, Jason.

         В результате данного анализа можно сделать вывод, что наиболее предпочтительна платформа JADE, так как единственным существенным минусом при таком подходе является необходимость детального изучения библиотеки. Однако использование самостоятельных систем не даст нам в этом особого преимущества, поскольку тоже требует детального изучения особого языка программирования, притом довольно небогатого по предоставляемой функциональности и расширяемости.

         В данной главе рассмотрены средства спецификаций типовых моделей на примере специального объектно-ориентированного языка RADL (Reticular Agent Definition Language).

Далее в данной главе более подробно рассматриваются мультиагентные системы и архитектура мультиагентных приложений. В результате проделанной работы можно сделать вывод, что мультиагентные системы – это одно из новых перспективных направлений искусственного интеллекта. Ключевым элементом этих систем становится программный агент, способный воспринимать ситуацию, принимать решения и взаимодействовать с другими агентами. Эти возможности радикально отличают МАС от существующих «жестко» организованных систем, обеспечивая им такое принципиально важное новое свойство, как способность к самоорганизации.

Глава II. Особенности разработки программных агентов

2.1 Среды разработки для построения программных агентов

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

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

Можно выделить наиболее известные и популярные среды разработки агентов:

1. АВЕ (Agent Building Environment);

2. Bee-gent;

3. JACK;

4. JADE.

Рассмотрим более подробно перечисленные инструментальные среды разработки программных агентов. 

1. Инструментальная среда AgentBuilder предоставляет для разработчиков средства разработки и среду выполнения агентного приложения. Технология создания интеллектуального агента в среде AgentBuilder представлен на рисунке 2.1.


Рис. 2.1 Процесс создания интеллектуального агента в инструментарии AgentBuilder

Средства разработки и среда выполнения написаны на языке программирования Java, что позволяет им работать на всех платформах, где установлена Java среда. Агент, созданный с помощью инструментария AgentBuilder, может выполняться на любой платформе с виртуальной машиной Java (версии 1.1 и выше).

Средства разработки представляют собой удобный графический интерфейс для анализа предметной области разрабатываемой МАС и спецификации желаемого поведения агентов, разрабатываемых при помощи графических редакторов. В данной инструментальной среде предусмотрены следующие этапы построения многоагентного приложения:

1. определение состава агентства;

2. создание агентов, которое предусматривает построение онтологии, используемой для выполнения делегированных агенту полномочий, и ментальной модели (убеждения, способности, обязательства, правила поведения);

3. создание протоколов для спецификации взаимодействия агентов данного агентства;

4. генерация специального файла описания агента на языке RADL, который, в конечном итоге, представляет ментальную модель и желаемое поведение агента.

Среда выполнения агентного приложения состоит из агентной программы и процессора выполнения агента. Процессор использует эффективные процедуры логического вывода путём сопоставления правил поведения агента с убеждениями агента, определяемыми текущей ментальной моделью, и входящими сообщениями. На основе проводимых рассуждений процессор выполняет определенные действия, связанные с полномочиями агента. Агентная программа представляет собой определение агента в виде файла на языке RADL вместе с укомплектованной библиотекой классов проекта. Агентная программа совместно с процессором образуют выполняемого агента. При запуске среды выполнения, инициализируется процессор агента, который использует RADL-модель и онтологию агента, представленную в виде библиотеки классов проекта (Project Accessories Library). Для этого необходимы определение агента (файл RADL, который обеспечивает агента способностью рассуждения и начальной ментальной моделью) и библиотека классов проекта (вспомогательные классы проекта PACs из библиотеки классов проекта) – эти объекты используются для отображения предметной области задачи.

2. В среде Bee-gent разработка агентно-ориентированных приложений выполняется по методологии спецификации поведения агентов распределенной системы с использованием МАС - библиотеки, реализованной на языке Java. На основе предлагаемых системой Bee-gent графических средств, возможна чёткая структуризация поведения каждого агента в виде графа состояний и определение протоколов взаимодействий агентов. Графы состояний агентов строятся на основании жизнеспособности ролей, определенных в виде регулярных выражений на этапе агентно-ориентированного анализа (например, по методологии Gaia). Пример фрагмента графа поведения агента Студент обучающей системы показан на рисунке 2.2.


Рис. 2.2 Граф состояний поведения агента Студент

         Граф состояний регистрирует все имена состояний, в которых агент может находиться. На следующем шаге разработки определяются классы для каждого состояния. Каждое состояние в графе является экземпляром класса AwrIPState из агентной библиотеки фирмы Toshiba, реализованной на языке Java. В конструкторе класса определяются пред и пост условия, т.е. условия, которые должны быть выполнены агентом в текущем состоянии для того, чтобы выполнить действия, определенные классом состояния, и определить переход в следующее состояние. Затем специфицируются действия, которые должны быть выполнены в каждом состоянии (включая собственные процессы агента и взаимодействия с другими агентами). Для начального и конечного состояний также создаются классы "INIT" и "END". Если агент взаимодействует с другими агентами, то при спецификации отдельных состояний система Bee-gent предусматривает определение протокола взаимодействия. Протокол должен отражать все линии поведения агента в данном состоянии. В каждом состоянии деятельность агента направлена на выполнение протоколов взаимодействия с целью реализации планируемой линии поведения. Деятельность каждого агента в МАС определяется, например, моделью услуг, разработанной на этапе агентно- ориентированного анализа по методологии Gaia.

         Каждая линия поведения документируется диаграммой взаимодействия агентов с указанием содержимого сообщений и их очередности. На рисунке 2.3 приведен пример диаграммы взаимодействия для состояния “Изучение дисциплины” агента Студент. Формат сообщений определяется языком XML/ACL, который является развитием языка коммуникации KQML.


Рис. 2.3 Диаграмма взаимодействия агента Студент в состоянии “Изучение дисциплины”

         Таким образом, на основе разработанных логических моделей, система Bee-gent автоматически генерирует на языке Java скелет программного кода многоагентной системы, который дополнятся необходимым программным кодом, обеспечивающим заданный “жизненный цикл” агентов. В системе Bee-gent, в отличие от AgentBuilder, при описании поведения агентов не используются правила, определяющие реакцию агента на внешние события и его внутреннее состояние.

3. JACK TM Intelligent Agents (JACK) представляет собой агентно-ориентированную среду разработки, которая построена на основе языка программирования Java. JACK является надстройкой Java в виде расширения синтаксиса Java конструкциями для программной реализации свойств, связанных с понятием интеллектуального агента. Язык программирования агентов JACK предлагает следующие возможности:

1. определяет новые основные классы, интерфейсы и методы;

2. расширяет синтаксис Java для поддержки новых агентно-ориентированных классов, определений и операторов;

3. предоставляет расширения семантики (особенности при выполнении) для поддержки модели выполнения, требуемой агентно-ориентированной программной системой.