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

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 19.10.2016
Размер файла 2,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

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

Содержание

Глава I. Анализ предметной области

1.1 Анализ существующих программных агентов

1.2 Описание инструментария для создания программных агентов

1.3 Языки программирования и программные платформы для создания программных агентов

1.4 Средства спецификаций типовых моделей

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

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

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

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

2.2 Модель программного агента ресурсов

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

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

3.1 Описание программного модуля

3.2 Построение модели программного агента

3.3 Влияние программных агентов на развитие экономики

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

Приложение

Глава I. Анализ предметной области

1.1 Анализ существующих программных агентов

Согласно классическому определению, программный агент -- это программа-посредник. Эти посредники взаимодействуют с пользователями или другими программами и смыслом этого взаимодействия является выполнение каких-либо действий от имени пользователя или другой программы. [1]

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

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

Концепция агента обеспечивает удобный и мощный способ описания сложной программной сущности, которая способна действовать с определённой степенью автономности с целью выполнения задач от имени пользователя. Агент определяется посредством описания его поведения.[2]

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

В задачи программного агента входят:

1. самостоятельная работа и контроль своих действий;

2. взаимодействие с другими агентами;

3. изменение поведения в зависимости от состояния внешней среды;

4. выдача достоверной информации о выполнении заданной функции и т.п.

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

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

1. Агенты-покупатели или торговые боты;

2. Пользовательские и персональные агенты;

3. Агенты по мониторингу и наблюдению;

4. Агенты по добыче и анализу данных.

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

Примером сегодняшнего торгового бота выступает инструмент трейдера, он представляет собой специальное программное обеспечение, которое осуществляет торговлю на бирже автоматически, без помощи человека. Торговый бот работает по определенным правилам, по своей стратегии. Стратегий существует очень много и они очень разные. Боты также могут работать на компьютерах пользователей, в «облаках» и как плагины для торговых систем.

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

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

Персональные агенты могут выполнять ряд следующих действий:

1. осуществлять поиск информации по заданной теме и запросу;

2. автоматически заполнять веб-формы и сохранять информацию для использования в будущем;

3. сканировать веб-страницы для поиска и выделения текста, который представляет собой «важную» часть информации;

4. имеют возможность «обсуждать» темы в диапазоне от подсознательного страха до спорта;

5. содействовать онлайн поиску работы путём сканирования известных досок объявлений о работе и отправки резюме с указанием достоинств, которые соответствуют желаемым критериям;

6. профилировать синхронизацию разнородных социальных сетей.

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

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

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

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

1.2 Описание инструментария для создания программных агентов

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

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

2. языки коммуникации агентов;

3. языки описания поведения агентов и законов среды;

4. языки представления и управления знаниями;

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

К средствам взаимодействия агентов относятся языки коммуникации агентов (FIPA ACL, KQML). Язык коммуникации агентов обеспечивает обмен знаниями и информацией между агентами. FIPA ACL в отличии от таких средств как RPC, RMI, CORBA, обеспечивающих обмен информацией между приложениями, имеет более сложную семантику и обладает следующими преимуществами:

· FIPA ACL управляет суждениями, правилами, действиями, а не семантически не связанными объектами;

· сообщения FIPA ACL описывает ожидаемое состояние, а не процедуру или метод.

Однако ACL не охватывают полный спектр объектов, которыми могли бы обмениваться агенты, например планы, цели, опыт, стратегии. На техническом уровне, при использовании ACL, агенты транспортируют сообщения по сети, используя протоколы низшего уровня, например SMTP, TCP/IP, POP3, или HTTP.

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

1. Процедурный, включает обмен процедурными директивами/командами. Это может быть реализовано используя такие языки программирования как Java или Tcl.

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

Из-за ограничений на процедурные подходы (например, такие сценарии трудно координировать, объединить), декларативные языки были предпочтены для создания языков взаимодействия агентов. Одни из наиболее популярных декларативных языков - KQML со своими диалектами и FIPA ACL.

В контексте практического построения агентов и МАС главную роль играют инструментальные средства программирования и коммуникации агентов. Языки коммуникации (ACL, KQML) и координации агентов (AgenTalk) обеспечивают согласованное взаимодействие агентов -- циркуляцию информации, передачу запросов услуг, реализуют механизмы переговоров, поддерживают сотрудничество между агентами, направленное на достижение общей цели и, как следствие, формирование коллективов агентов. Эти языки можно рассматривать как многоуровневые структуры, включающие уровень представления знаний, уровень переговоров или координации, уровень стратегий коммуникации, и т. п. Так язык KQML (Knowledge Query and Manipulation Language), служащий для поддержки взаимодействия агентов в распределенных приложениях, опирается на специальный протокол переноса знаний SKTP (Simple Knowledge Transfer Protocol). В свою очередь, язык ACL (Agent Communication Language), претендующий на роль стандарта для коммуникации агентов, состоит из трех частей-- словаря, “внутреннего языка” KIF (Knowledge Interchange Format) и “внешнего языка” KQML. Сообщение, передаваемое на языке ACL, может трактоваться как KQML-выражение, “аргументами” которого выступают предложения в формате KIF, построенные из элементов словаря ACL [Genesereth and Ketchpel, 1994].

Программные средства, применяемые для реализации агентов, делятся на три основных класса:

1. языки программирования;

2. библиотеки разработки агентов;

3. среды разработки агентов.

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

Среди существующих библиотек агентов можно выделить Intelligent Agent Library -- коммерческий продукт фирмы Bits й Pixels, систему Кайса, разработанную фирмой Fujitsu и Agentx -- сеть высокоэффективных библиотек распределенных вычислений в программной среде Java, предложенную фирмой International Knowledge Systems. Библиотека интеллектуальных агентов Intelligent Agent Library представляет собой набор средств, предназначенных для обеспечения коммуникации агентов и построения их групп. Она основана на языке KQML и содержит иллюстративные примеры агентов, функционирующих в Web-приложениях. Эта библиотека поддерживает разработку мобильных агентов.

Одной из самых известных и уже зарекомендовавших себя интегрированных сред для разработки интеллектуальных программных агентов является AgentBuilder фирмы Reticular Systems, Inc. Это средство состоит из двух основных компонентов: инструментария (Toolkit) и исполнительной системы. Инструментарий вкпючает:

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

2. средства анализа области функционирования агента;

3. средства проектирования и разработки сетей из взаимодействующих агентов;

4. средства моделирования поведения отдельных агентов;

5. средства отладки и тестирования программных агентов.

Исполнительная система содержит машину агента (agent engine), формирующую среду для реализации программных агентов. Агенты, разработанные с помощью среды AgentBuilder, взаимодействуют на языке KQM L, в основе которого лежат примитивные действия -- перформативы.

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

В таблице 1 приведены примеры средств для разработки агентов.

Таблица 1. Примеры средств разработки агентов

Название языка (средства разработки)

Краткая характеристика / назначение

AgenTalk

Средство для разработки автономных мобильных агентов на базе языка сценария Tcl с поддержкой Tk- инструментария для создания графического интерфейса

АgentTool

Агентная структура на базе Java. Использование GUI для конструирования системы

FIPA-OS

Реализация элементов, содержавшихся в FIPA-специ- фикации по взаимодействию агентов. Java-реализа- ция архитектуры для разработки агентов

Echelon

Средство для разработки агентов в сети LonWorks

JAFMAS

Программа, обеспечивающая создание мультиагент- ной системы на Java. Поддерживает межагентное общение на KQML

Remembrance Agents

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

Ummon

Средство для создания самообучающегося агента. Содержит методы ИИ для достижения "человеческо- го" общения

Virtual Secretary Project (ViSe)

Создание модели пользователя на основе интеллек- туальных агентов для выполнения секретарских задач (технология Tcl/TclX/Tix/Tk)

В таблице 2 приведено сравнение параметров отдельных инструментальных средств, обозначенных в таблице 1, которые используются для разработки агентов.

Таблица 2

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

Параметр

Наименование инструментальных средств

JAFMAS

Agen Talk

Agent Tcl

Telescript

Swarm

Echelon

Язык разработки

Java

Lisp

Tcl

Telescript

Objective C

Silicon chip

Поддержка ОС

Все

UNIX

UNIX

UNIX

UNIX

Echlon chip

Реализация агента

программная

программная

программная

программная

программная

аппаратная

объектно-ориентированное про- граммирование

+

-

-

+

+

+

Наличие у агента своего плана действий

+

-

+

+

+

+

Коммуникационный протокол

TCP/IP и UDP/IP

TCP/IP

TCP/IP

TCP/IP

TCP/IP

TCP/IP

Мобильность агентов

+

-

-

-

-

-

Анализ табл. 3 и 4 показал, что средства для разработки агентов можно условно разделить на две группы: средства, построенные на базе языка Java, и средства, построенные на базе других языков. Средства первой группы предназначены для разработки сетевых приложений на базе мобильных агентов, взаимодействующих через протокол TCP/IP.

1.3 Языки программирования и программные платформы для создания программных агентов

Для программирования агентов могут применяться: универсальные языки (Java, C++ , Visual Basic и др.), языки представления знаний (SL, KIF), языки переговоров и обмена знаниями (KQML, AgentSpeak, April), языки сценариев (Tcl/Tk, Python, Perl 5 и др), специализированные языки (TeleScript, COOL, Agent0, AgentK и др.), символьные языки и языки логического программирова- ния (Oz, ConGolog, IMPACT, Dylog, Concurrent METATEM, Ehhf и др.), а также другие языки и средства разработки агентов. На рисунке 1.1 представлена классификация языков межагентных коммуникаций.

Рис. 1.1 Классификация языков межагентных коммуникаций

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

Инструментальные средства второй группы, в основном, предназначены для проектирования сложных динамических агентных структур и реализации сред, хотя имеются отдельные экземпляры для создания мобильных приложений (Telescript, Agent Tcl). При этом агенты разрабатываются согласно BDI-модели. Коммуникации осуществляются через протокол TCP/IP. Однако такие средства имеют слабые возможности по согласованию и сотрудничеству между агентами и работают на ограниченном количестве платформ, поскольку язык программирования - не унифицированный.

Большинство коммуникативных агентных языков (Agent Communication Language - ACL) основаны на речевом взаимодействии (речевые действия выражаются посредством стандартных ключевых слов).

Известны два подхода к разработке таких языков - процедурный и декларативный. При первом подходе коммуникации происходят при выполнении инструкций. Язык проектируется с помощью Java или TСl (Tool Command Lanuage). При декларативном подходе коммуникации реализуются на основе опи- саний. Декларативный подход получил большое распространение для создания языков общения агентов, наиболее популярным из которых является KQML-структурированный язык взаимодействия агентов. Этот язык используется в качестве языка взаимодействия в различных многоагентных системах и средах для их программирования, таких как Agent-K, LALO, Java(tm) Agent Template (JATLite). Цели, аналогичные KQML, имеети KAoS (Knowledgeable Agent-oriented System).

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

Типичный логический язык содержания - это язык KIF (Knowledge Interchange Format), облегчающий обмен знаниями между системами искусственного интеллекта. Он использовался вместе с KQML в американских научно- исследовательских проектах по представлению знания в мультиагентных системах. Его синтаксис основан на Common LISP. Формат KIF является декларативным языком, который позволяет различным системам обмениваться онтологиями (соглашением между различными системами о структурах представления знаний различных предметных областей), используя тем самым в работе вычислительные преимущества этих систем.

Второй логический язык содержания - SL (Semantics Language), предложенный FIPA. SL-предложения выражаются логикой ментальных отношений и действий. Ментальная модель агента основана на представлении трех примитивов: убеждение, неопределенность, выбор. Основное свойство SL-логики позволяют смоделированным агентам находится в соответствии с их ментальными отноше- ниями.

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

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

Существует довольно большой набор платформ, подходящих для создания мультиагентных систем, и этот набор постоянно пополняется. Внеговходят NetLogo, StarLogo, Repast Simphony, Eclipse AMP, JADE, Jason. Сами эти платформы реализованы весьма по-разному: от отдельных сред разработки до встраиваемых плагинов и подключаемых библиотек. Они могут использовать как уже существующие языки различных парадигм, так и языки, специально разработанные для построения программных агентов, например, AgentSpeak в системе разработки Jason.

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

Платформа разработки Java-агентов JADE (Java Agent Development Framework) используется для создания мультиагентных систем и приложений в соответствии со стандартами FIPA [5] для интеллектуальных агентов. Она включает в себя среду выполнения агентов. Агенты регистрируются и работают под управлением этой среды, в ней предусмотрены механизмы создания, уничтожения, взаимодействия, поиска агентов (рис. 1.2).

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

Рис.1.2 Основные компоненты среды JADE

Среда включает систему управления агентами (Agent Management System), которая предоставляет средства именования и управления жизненным циклом агента, и службу каталогов (Directory Facilitator), включающую регистрационный каталог (каталог Желтых страниц). Используя этот каталог, агент может связаться с другими агентами, необходимыми ему для достижения цели. Кроме того, JADE содержит библиотеку классов, используемых для разработки агентов и агентной системы, и набор графических утилит для администрирования и наблюдения за жизнедеятельностью агентов, функционирующих в системе. Важной особенностью JADE является поддержка исполнения агентов на устройствах с ограниченными возможностями (CLDC, Connected Limited Device Configuration), например мобильных телефо нах, карманных компьютерах (PocketPC, Palm и др.), за счет использования расширения LEAP (Lightweight Extensible Agent Platform).

Рассмотрим самостоятельную среду разработки NetLogo. Данная система является типичным примером автономной среды разработки мультиагентных систем. К основным плюсам данной платформы относится большой объём предоставляемых средств взаимодействия с пользователем - различных кнопок и регуляторов для ввода и корректировки информации, а так же свободная распространяемостью системы.

Кроме всего этого, данная платформа предоставляет со стандартной сборкой NetLogo очень широкий набор примеров моделей и систем. Эти примеры действительно помогают лучше понять устройство данной агентной платформы и её возможности. Однако за богатством предоставляемых средств скрывается бедность непосредственно технических возможностей системы. Во-первых, набор предоставляемых средств визуализации, хотя и широк, но строго фиксирован и регламентирован, кроме того, невозможно добавление каких-то своих приёмов. А во-вторых, система страдает именно как средство разработки программ, фактически принуждая программиста писать всю программу одним файлом, без какой-либо чёткой структуры. Кроме того, язык программирования весьма специфичен, поскольку он основан на учебном языке Logo, и вдобавок содержит многочисленные методы, предназначенные уже специально для моделирования.

Язык программирования NetLogo является скриптовым языком и написанные на нём программы исполняются ощутимо медленно. В настоящее время ведутся работы по созданию его транслятора в байт-код, что обещает в перспективе существенное улучшение времени исполнения.

Далее, система в принципе не предоставляет инструменты для распределённого, независимого исполнения. Функционирующие в ней субъекты лишены структуры агента, и являются лишь хранителями собственного состояния. Осуществление же их поведения реализуется исполнением функций на классе объектов, то есть, по сути, в рамках объектной парадигмы программирования. С другой стороны, такая простота взаимодействия находится в гармонии со слабыми возможностями структурирования программы и вообще организации процесса разработки. Именно она позволяет писать небольшие, не громоздкие и не засорённые лишними и ненужными практически (хотя и важными теоретически и структурно) элементами, но довольно мощные программы. Этому также способствует и отмеченная выше простота работы с широким, хотя и жёстко ограниченным набором средств визуализации.

Рассмотрим платформы с отдельными подключаемыми модулями для разработки мультиагентных систем. Отдельные модули не представляют ещё собой собственно библиотеки, наборы исключительно разработческих средств для написания системы, поскольку они предоставляют широкий набор методов взаимодействия с пользователем. Однако они уже и не являются фактически автономными системами, а воплощаются в виде подключаемых модулей к существующим средствам разработки. Это довольно хорошо, поскольку позволяет совмещать богатство стандартных средств разработки со специализированными и предназначенными исключительно для агентного моделирования средствами. К данному классу инструментов относятся системы Jason, Eclipse AMP.

Ярким представителем такого класса систем является Repast Simphony - подключаемый модуль к системе разработки (IDE) Eclipse. Во-первых, такая реализация позволяет использовать существующие возможности среды, да и новых языков программирования учить не приходится. А во- вторых, предоставляемые методы разработки агентных систем позволяют сконцентрироваться именно на написании агентов, причём использовать при этом весьма наглядные и интересные средства.

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

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

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

1.4 Средства спецификаций типовых моделей

Рассмотрим типовую модель, которая получила название Reticular Agent Mental Model (RAMM) и является развитием модели Шохама (Shoham), где все действия выполняются только как результат определенных обязательств. В рамках RAMM эта идея расширена до уровня общих правил поведения, которые определяют причину действия агента в каждой точке его функционирования. При этом правила поведения фиксируют множество возможных «откликов» агента на текущее состояние среды так, как это предписывается полаганиями. Общая схема процесса проектирования и реализации агентно-ориентированных приложений на основе AgentBuilder ToolKit представлена на рисунке 1.3. Этот инструментарий имеет средства для организации и предметной области создаваемой MAC, средства спецификации архитектуры агенства и поведения агентов, а также средства отладки агентных приложений и наблюдения за поведением созданных агентов.

Рис. 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. предоставляет расширения семантики (особенности при выполнении) для поддержки модели выполнения, требуемой агентно-ориентированной программной системой.

Все расширения языка реализованы как plug-in, что делает язык максимально расширяемым и гибким в агентно-ориентированном программировании.

На уровне классов введены 5 главных конструкций:

1. агент, который в JACK моделирует интеллектуальные сущности;

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

3. событие, для моделирования ситуаций и сообщений, на которые агент должен быть способен ответить;

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

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

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

Для установления отношений между упомянутыми выше классами предоставлен набор деклараций. Ниже приведен фрагмент кода для реализации конструкции плана, написанного на JACK (элементы синтаксиса, которые принадлежат JACK, выделены жирным шрифтом):

plan MovementResponse extends Plan {

#handles event RobotMoveEvent moveresponse;

#uses agent implementing RobotInterface robot;

static boolean relevant (RobotMoveEvent ev)

{ … }

context() { … }

#reasoning method

body(){ … }}.

В этом примере определяемый план действий программного агента наследует свои основные выполняемые функции от класса JACKPlan. Кроме того, с помощью нескольких деклараций для планов языка JACK указывается, каким образом план будет использоваться. Каждая декларации предваряется символом «#» для того, чтобы отличить их от элементов синтаксиса Java. Декларация #handles event определяет цель или событие, на которое этот план отвечает. Декларация #uses agent implementing закрепляет агента(ов), которые могут использовать этот план. План в примере могут выполнять только те агенты, которые реализуют указанный интерфейс (RobotInterface). В фигурных скобках содержится обычный код Java.

Помимо деклараций язык JACK для описания рассуждений и поведения, предпринимаемых агентом при выполнении плана, предоставляет свои операторы методов рассуждения, которые выделяются предшествующим символом «@».

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

1. Многопоточность встроена в ядро и выведена из-под контроля программиста.

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

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

4. Возможность выполнение запросов к множеству убеждений агента, используя для этого логические элементы, посредством их объединения для получения желаемого результата. Если запрос имеет успех, то логический элемент содержит желаемое значение.

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

Агенты, создаваемые в JACK, имеют архитектуру, присущую интеллектуальным агентам. Таким образом, возможно моделирование разумного поведения, в соответствии с теоретической моделью BDI- архитектуры агента [8], основанной на убеждениях, желаниях и намерениях.

Согласно BDI-архитектуре, интеллектуальные агенты JACK - это автономные программные компоненты, которые могут проявлять разумное поведение на основе проактивности (целенаправленность) и реактивности (направляемое событиями) на входные сигналы. Каждый такой агент имеет:

· убеждения (это его набор данных о мире);

· желания (набор событий на которые он будет реагировать и набор целей, достижения которых он может желать);

· намерения (набор планов, которые описывают как он может управлять возникающими целями и планами).

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

· устойчивую целенаправленность - агенты сосредоточены на целях, а не на выбранных методах для их достижения;

· контекстную зависимость в реальном времени - агенты будут следить за вариантами, которые применимы в каждый момент времени и принимать решения относительно последующих действий, на основе имеющихся условий;

· утверждение правильности подхода в реальном времени - агент будет гарантировать, что он следует выбранному курсу действий до тех пор, пока определенные условия продолжают быть истинными;

· одновременность - агентная система является многопоточной. Если возникают новые цели и события, то агент способен определить приоритеты по требованию многозадачности.

JACK приложение представляет собой исходный код, реализующий характерные для агентно-ориентированного подхода понятия: агентов, способностей, события, планы, убеждения, view (запросы), а также Java класс с функцией main(), которая является точкой входа для виртуальной машины Java, и любые другие Java необходимые файлы. Файлы, которые создаются для этих понятий, должны иметь такое же имя, как и у объекта, определяемого в файле. Они имеют расширение, определяющее тип JACK понятия. Компилятор агентов JACK конвертирует исходные файлы на языке агентов JACK в код на языке Java, который затем компилируется в код виртуальной машины Java для выполнения на целевой системе.

4. Программная среда JADE (Java Agent Development Framework) получила широкое применение для разработки многоагентных систем. Она полностью реализованная на языке Java и поддерживает FIPA - стандарты для создания интеллектуальных агентов. Цель создания среды JADE - упростить процесс разработки посредством стандартизации способов взаимодействия агентов во всеоохватывающей среде системных сервисов.


Подобные документы

  • Технология программных агентов. Форматы метаданных, использующиеся для описания электронных ресурсов. Разработка интеллектуальных агентов. Среда разработки Jadex для построения интеллектуальных агентов. BDI модель интеллектуального агента ресурсов.

    курсовая работа [279,8 K], добавлен 20.02.2011

  • Характеристика алгоритмов и программных реализаций поведения агентов в двумерной среде. Исследование разработки структур данных и знаний. Особенность создания интерфейса и карты лабиринта. Экспериментальное тестирование и отладка модулей программы.

    дипломная работа [2,4 M], добавлен 12.08.2017

  • Критерии оценки эффективности и качества создания программных средств. Роль трудоемкости и длительности создания программных средств в определении эффективности их создания. Требования к качеству, суммарные затраты на разработку программного средства.

    реферат [26,7 K], добавлен 10.10.2014

  • Структурные подразделения и отделы организации, ее технические программные средства. Разработка приложений обработки данных на ассемблере, языке программирования высокого уровня. Тестирование и оптимизация программных модулей. Разработка документации.

    отчет по практике [175,0 K], добавлен 30.09.2022

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

    дипломная работа [645,3 K], добавлен 21.11.2010

  • Принципы работы архитектур агентов. Классификация агентных архитектур. Реагирующая агентная архитектура, ее практическое применение. Консультационная агентная архитектура. Гибридная агентная архитектура. Многоуровневая архитектура для автономного агента.

    курсовая работа [616,9 K], добавлен 24.02.2014

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

    дипломная работа [2,2 M], добавлен 08.06.2017

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

    дипломная работа [2,3 M], добавлен 20.05.2013

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

    лекция [370,1 K], добавлен 22.03.2014

  • Особенности разработки программ для ЭВМ. Этапы планирования программы. Понятие и особенности алгоритмов. Средства, используемые для создания программ. Виды и классификация языков программирования. Структурное и объектно-ориентированное программирование.

    реферат [59,7 K], добавлен 19.08.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.