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).

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

основные компоненты среды jade

Рис.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.3 Языки программирования и программные платформы для создания программных агентов - Средства для создания программных агентов

Предыдущая | Следующая