Средства для создания программных агентов
Содержание
Глава I. Анализ предметной области 3
1.1 Анализ существующих программных агентов 3
1.2 Описание инструментария для создания программных агентов 6
1.3 Языки программирования и программные платформы для создания 11
программных агентов 11
1.4 Средства спецификаций типовых моделей 19
1.5 Архитектура мультиагентных приложений 22
Выводы по I главе 25
Глава II. Особенности разработки программных агентов 27
2.1 Среды разработки для построения программных агентов 27
2.2 Модель программного агента ресурсов 43
Выводы по II главе 46
Глава III. Развитие программных агентов и средств их разработки 48
3.1 Описание программного модуля 48
3.2 Построение модели программного агента 50
3.3 Влияние программных агентов на развитие экономики 58
Выводы по III главе. 60
Содержание базы знаний в XML 62
Глава I. Анализ предметной области 1.1 Анализ существующих программных агентов
Согласно классическому определению, программный агент — это программа-посредник. Эти посредники взаимодействуют с пользователями или другими программами и смыслом этого взаимодействия является выполнение каких-либо действий от имени пользователя или другой программы. [1]
Можно дать и другое относительно свободное определение программного агента, в котором агент выступает в качестве самодостаточной программы, которая способна контролировать свое собственное принятие решений и действий, основываясь на собственном восприятии своего окружения, и которые направлены на реализацию одной или нескольких целей.
Если рассматривать различия между программным агентом и приложением, то можно сказать, что главное различие заключается в поведении агента.
Концепция агента обеспечивает удобный и мощный способ описания сложной программной сущности, которая способна действовать с определённой степенью автономности с целью выполнения задач от имени пользователя. Агент определяется посредством описания его поведения.[2]
Существует несколько подходов к определению понятия программного агента, но общая идея заключается в том, что агенты более автономны, чем объекты. Агент обладает автономностью в плане выбора задач и приоритетов, а так же агенту свойственно гибкое поведение.
В задачи программного агента входят:
самостоятельная работа и контроль своих действий;
взаимодействие с другими агентами;
изменение поведения в зависимости от состояния внешней среды;
выдача достоверной информации о выполнении заданной функции и т.п.
Мультиагентные системы — это системы, состоящие из автономных интеллектуальных агентов, взаимодействующих друг с другом и пассивной среды, в которой агенты существуют и на которую также могут влиять.
Существуют различные классификации программных агентов. Рассмотрим наиболее популярную классификацию, в которой выделяют четыре основных типа программных агентов [3]:
Агенты-покупатели или торговые боты;
Пользовательские и персональные агенты;
Агенты по мониторингу и наблюдению;
Агенты по добыче и анализу данных.
Но данная классификация не совсем актуальна на сегодняшний момент, так как с момента написания данной классификации многое поменялось. Так например, по классификации агенты-покупатели просматривают сетевые ресурсы с целью получения информации о товарах и услугах. Но на сегодняшний момент индексирующие роботы в своем развитии ушли намного вперед и выходят далеко за рамки просто поисковых систем. [4]
Примером сегодняшнего торгового бота выступает инструмент трейдера, он представляет собой специальное программное обеспечение, которое осуществляет торговлю на бирже автоматически, без помощи человека. Торговый бот работает по определенным правилам, по своей стратегии. Стратегий существует очень много и они очень разные. Боты также могут работать на компьютерах пользователей, в «облаках» и как плагины для торговых систем.
Боты могут решать несколько основных задач. Первая из них — это автоматизация рутинных операций. Некоторые стратегии торговли подразумевают постоянное исполнение ордеров и учет большого количества данных, что весьма затруднительно делать вручную. Другие стратегии подразумевают очень быстрое реагирование на изменения на бирже и принятие простых, но быстрых решений. Боты также могут использоваться трейдером (человеком, торгующим на бирже) как вспомогательный инструмент для каких-либо операций.
Пользовательские или персональные агенты по данной классификации — это интеллектуальные агенты, которые действуют от имени пользователя. Примером таких действий является отправка данных, получение и автоматическая обработка данных. Есть несколько версий таких агентов, в том числе newshub и CNN.
Персональные агенты могут выполнять ряд следующих действий:
осуществлять поиск информации по заданной теме и запросу;
автоматически заполнять веб-формы и сохранять информацию для использования в будущем;
сканировать веб-страницы для поиска и выделения текста, который представляет собой «важную» часть информации;
имеют возможность «обсуждать» темы в диапазоне от подсознательного страха до спорта;
содействовать онлайн поиску работы путём сканирования известных досок объявлений о работе и отправки резюме с указанием достоинств, которые соответствуют желаемым критериям;
профилировать синхронизацию разнородных социальных сетей.
Агенты по мониторингу и наблюдению используются для наблюдения за объектами и передачи информации на оборудование, как правило, на компьютерные системы. Агенты могут отслеживать уровень запасов материалов компании, следить за ценами конкурентов и доводить их до сведения компании, анализировать фондовые манипуляции по инсайдерскии информация и слухам, и т.д.
Например, в лаборатории реактивного движения НАСА есть агент, который отслеживает наличие и состояние оборудования, планирует заказы на приобретение нового оборудования с учётом оптимизации затрат, а также следит за наличием продуктов питания. Такие агенты обычно осуществляют мониторинг сложных компьютерных сетей и могут следить за конфигурацией каждого компьютера, подключенного к сети.
Особыми агентами по мониторингу и наблюдению являются структуры агентов, используемых для моделирования процесса принятия решений во время тактических операций. Агенты осуществляют мониторинг состояния активов и получают цели от агентов верхнего уровня. Агенты добиваются достижения целей с имеющимися активами, сводя к минимуму расходы активов при максимальном достижении цели.
В современных условиях при рассмотрении данной классификации программных агентов по добыче и анализу данных необходимо отнести к агентам покупателям или торговым ботам.
1.2 Описание инструментария для создания программных агентов
Для создания программных агентов используют языки описания и реализации, которые удобно представить в виде многослойной структуры, включающей пять слоев:
языки и программные средства реализации агентов;
языки коммуникации агентов;
языки описания поведения агентов и законов среды;
языки представления и управления знаниями;
языки формализации и спецификации агентов и мультиагентных систем (МАС).
К средствам взаимодействия агентов относятся языки коммуникации агентов (FIPA ACL, KQML). Язык коммуникации агентов обеспечивает обмен знаниями и информацией между агентами. FIPA ACL в отличии от таких средств как RPC, RMI, CORBA, обеспечивающих обмен информацией между приложениями, имеет более сложную семантику и обладает следующими преимуществами:
FIPA ACL управляет суждениями, правилами, действиями, а не семантически не связанными объектами;
сообщения FIPA ACL описывает ожидаемое состояние, а не процедуру или метод.
Однако ACL не охватывают полный спектр объектов, которыми могли бы обмениваться агенты, например планы, цели, опыт, стратегии. На техническом уровне, при использовании ACL, агенты транспортируют сообщения по сети, используя протоколы низшего уровня, например SMTP, TCP/IP, POP3, или HTTP.
Язык взаимодействия агентов (ACL) должен позволять передавать информацию любого вида между различными агентами. Имеются два подхода к проектированию языков взаимодействия агентов:
Процедурный, включает обмен процедурными директивами/командами. Это может быть реализовано используя такие языки программирования как Java или Tcl.
Декларативный, где связь основана на декларативных инструкциях, типа определений, предположений, знаний, и т.п.
Из-за ограничений на процедурные подходы (например, такие сценарии трудно координировать, объединить), декларативные языки были предпочтены для создания языков взаимодействия агентов. Одни из наиболее популярных декларативных языков - 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].
Программные средства, применяемые для реализации агентов, делятся на три основных класса:
языки программирования;
библиотеки разработки агентов;
среды разработки агентов.
При программировании агентов чаще всего применяются языки объектно-ориентированного программирования (Си++, Java), реже используются символьные языки и языки логического программирования (LISP, Oz).
Среди существующих библиотек агентов можно выделить Intelligent Agent Library — коммерческий продукт фирмы Bits й Pixels, систему Кайса, разработанную фирмой Fujitsu и Agentx — сеть высокоэффективных библиотек распределенных вычислений в программной среде Java, предложенную фирмой International Knowledge Systems. Библиотека интеллектуальных агентов Intelligent Agent Library представляет собой набор средств, предназначенных для обеспечения коммуникации агентов и построения их групп. Она основана на языке KQML и содержит иллюстративные примеры агентов, функционирующих в Web-приложениях. Эта библиотека поддерживает разработку мобильных агентов.
Одной из самых известных и уже зарекомендовавших себя интегрированных сред для разработки интеллектуальных программных агентов является AgentBuilder фирмы Reticular Systems, Inc. Это средство состоит из двух основных компонентов: инструментария (Toolkit) и исполнительной системы. Инструментарий вкпючает:
средства управления процессом разработки программного обеспечения, основанного на агентах;
средства анализа области функционирования агента;
средства проектирования и разработки сетей из взаимодействующих агентов;
средства моделирования поведения отдельных агентов;
средства отладки и тестирования программных агентов.
Исполнительная система содержит машину агента (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 операций, сложности при сохранении и восстановлении и т.п.) и частичной недоработанности системы (временами появляются ошибки, препятствующие работе системы, отследить которые может только разработчик), есть ещё и трудности, видимо, присущие такому способу решения в целом. А именно – громоздкость и зачастую излишний объём проделываемой работы.
Кроме того, несмотря на кажущуюся лёгкость создания программ в такой среде, сам процесс создания является строго регламентированным, и если что-то делается не так, как изначально задумано создателями системы, это может привести к ошибке на более низком уровне, т.е. на уровне уже собственно среды разработки и языка программирования.
Всё это делает необходимым либо периодическое использование низкоуровневых средств разработки, либо строгое следование схемам построения систем. Такое положение частично перечёркивает ту огромную выгоду, которую приносит совмещение стандартных и мощных средств разработки со специализированными методами.
Рассмотрим типовую модель, которая получила название 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 Архитектура мультиагентных приложений
В общем случае среда, в которой действует агент, имеет определенное поведение, которое может быть известно полностью или частично. Состояние среды зависит от информации, имеющейся у агента, а также от таких ее свойств: дискретность состояния, детерминированность действий, динамичность или статичность, синхронное или асинхронное изменение состояния и т.п.
В отличие от традиционных систем, в которых решение ищется с помощью централизованных, последовательных и детерминированных алгоритмов, в мультиагентных системах решение достигается в результате распределённого взаимодействия множества агентов – автономных программных объектов, нацеленных на поиск возможно не столько полностью оптимального, сколько наилучшего из возможных решений на каждый момент времени. Если найденный агентом лучший вариант уже забронирован другим агентом, агенты оказываются способны выявить конфликт и разрешить его путём переговоров, в ходе которых достигается компромисс, отражающий временное, и, как правило, неустойчивое равновесие (баланс) их интересов.
Этот новый принцип радикально отличает такие решения и позволяет применять мультиагентные инструменты, продукты и системы для решения самых сложных задач.
В целом, мультиагентные системы или агентно-ориентированное программирование являются следующим шагом в развитии объектно-ориентированного программирования (ООП) и интегрируют в себе достижения последних десятилетий в сфере искусственного интеллекта, параллельных вычислений и телекоммуникаций.
Различают три базовых типа архитектуры мультиагентных систем (МАС):
архитектура, основанная на принципах и методах работы со знаниями;
архитектура, основанная на поведенческих моделях;
гибридные построения, сочетающие в различных соотношениях особенности двух первых архитектур.
C классической точки зрения архитектура на основе знаний это такая архитектура, которая содержит символьную модель мира, представленную в явной форме, и в которой принятие решений о действиях, которые должны быть предприняты агентом, осуществляется на основе рассуждений логического или псевдо-логического типов. Такой агент может рассматриваться как специальный случай системы, основанной на знаниях.
Сначала идея агента, основанного на знаниях, строилась на чисто логической основе и представлялась весьма перспективной. Однако позднее было обнаружено, что лежащее в основе такого подхода исчисление предикатов первого порядка неразрешимо. Более того, такие ментальные свойства агента, как убеждения, желания, намерения, обязательства по отношению к другим агентам и т.д, невыразимы в терминах исчисления предикатов первого порядка. Были разработаны некоторые специальные варианты расширений модальных логик и подобных модальным, которые оказались с точки зрения реализуемости более удачными. Такие архитектуры были названы Belief-Desire-Intention (BDI) – архитектурами. [6]
В системах, построенных на поведенческих моделях, главным образующим понятием является «ситуация», в которой оказался агент, и «побудительный мотив» к выработке адекватного этой ситуации действия или поведения («реакция») агента. Поведенческие модели чаще всего строятся на правилах выработки адекватных реакций. Или, если разнообразие ситуаций не катастрофично - применяются алгоритмы, позволяющие создать конечный автомат с ограниченными возможностями. Агенты МАС данного типа называются реактивными, а их реакция на тот или иной побудительный мотив всегда рассматривается как результат соотнесения состояния внешней среды и внутреннего состояния агента. Наиболее перспективны гибридные МАС, сочетающие «лучшие» качества поведенческих и продукционных моделей. Гибридные МАС часто используют принцип специализации своих агентов. Примечательно, что БЗ агентов таких систем имеет знания трех уровней - о предметной области, о возможных взаимодействиях с другими агентами (если своих недостаточно) и специальные знания, обеспечивающие оптимальное управление системой.
Выводы по I главе
В данной главе было дано определение программного агента, а так же проведен анализ существующих программных агентов. В рамках данной работы были рассмотрены следующие типы программных агентов: агенты-покупатели или торговые боты, пользовательские и персональные агенты, агенты по мониторингу и наблюдению и агенты по добыче и анализу данных.
В рамках данной главы рассмотрен инструментарий для создания программных агентов, который включает языки и программные средства реализации агентов, языки коммуникации агентов, языки описания поведения агентов и законов среды, языки представления и управления знаниями, языки формализации и спецификации агентов и мультиагентных систем (МАС).
Так же в данной главе рассмотрены языки программирования программных агентов, в результате чего можно сделать вывод, что при программировании агентов чаще всего применяются языки объектно-ориентированного программирования (Си++, Java), реже используются символьные языки и языки логического программирования (LISP, Oz).
Кроме этого проведен анализ существующих программных платформ для создания программных агентов, рассматривались такие платформы как NetLogo, StarLogo, Repast Simphony, Eclipse AMP, JADE, Jason.
В результате данного анализа можно сделать вывод, что наиболее предпочтительна платформа JADE, так как единственным существенным минусом при таком подходе является необходимость детального изучения библиотеки. Однако использование самостоятельных систем не даст нам в этом особого преимущества, поскольку тоже требует детального изучения особого языка программирования, притом довольно небогатого по предоставляемой функциональности и расширяемости.
В данной главе рассмотрены средства спецификаций типовых моделей на примере специального объектно-ориентированного языка RADL (Reticular Agent Definition Language).
Далее в данной главе более подробно рассматриваются мультиагентные системы и архитектура мультиагентных приложений. В результате проделанной работы можно сделать вывод, что мультиагентные системы – это одно из новых перспективных направлений искусственного интеллекта. Ключевым элементом этих систем становится программный агент, способный воспринимать ситуацию, принимать решения и взаимодействовать с другими агентами. Эти возможности радикально отличают МАС от существующих «жестко» организованных систем, обеспечивая им такое принципиально важное новое свойство, как способность к самоорганизации.
Do'stlaringiz bilan baham: |