Пример Разработки многоагантной системы на основе JADE (Java Agent Development Environment)
JADE полностью написана на языке программирования Java с использованием таких продвинутых возможностей как Java RMI, Java CORBA IDL, Java Serialization и Java Reflection API. Она упрощает разработку мультиагентных систем благодаря использованию FIPA-спецификаций и с помощью ряда инструментов (tools), которые поддерживают фазы исправления ошибок (debugging) и развертывания (deployment) системы. Эта агентная платформа может распространяться среди компьютеров с разными операционными системами, и ее можно конфигурировать через удаленный GUI-интерфейс. Процесс конфигурирования этой платформы достаточно гибкий: ее можно изменить даже во время исполнения программ, для этого необходимо просто переместить агентов с одной машины на другую. Единственным требованию этой системы является установка на машине Java Run Time 1.2. Коммуникационная архитектура предлагает гибкий и эффективный процесс обмена сообщения, где JADE создает очередь и управляет потоком ACL-сообщений, которые являются приватными для каждого агента. Агенты способны обращаться к очереди с помощью комбинации нескольких режимов своей работы: блокирование, голосование, перерыв в работе и сопоставление с эталоном (что касается методов поиска).
На данный момент в системе используется Java RMI, event-notification, и ПОР, но легко можно добавить и другие протоколы. Также предусмотрена возможность интеграции SMTP, HTTP и WAP. Большинство коммуникационных протоколов, которые уже определены международным сообществом разработчиков агентных сред, доступны и могут иллюстрироваться на конкретных примерах после определения поведения системы и ее основных состояний. SL и онтология управления агентами также имплементированы вместе с поддержкой определенных пользователем контентных языков, а также онтологии, которые могут быть имплементированы и зарегистрированы агентами и использованы системой. С целью существенного расширения работоспособности JADE, предусмотрена возможность интеграции с JESS и Java-оболочкой CLIPS.
JADE используется рядом компаний и академических групп. Среди них можно выделить такие известные: ВТ, CNET, NHK, Imperial College, IRST, KPN, University’ of Helsinky, INRIA, ATOS и много других.
Инструментарий JADE
JADE предлагает графический интерфейс платформы администрирования с использованием RMA агента. Этот агент показывает состояние агентной платформы (Agent Platform) и предлагает разнообразные инструменты администрирования, исправление ошибок и тестирование приложений, базирующихся на JADE. RMA — это объект Java, экземпляр класса jade.tools.rma.rma, который можно запустить: из командной строки, как ооычного агента в этой системе (например, командой java jade.BootmyConsole:jade.tools.rma.rma); или через gui-интерфейс (java jade.Boot -gui). На одной платформе можно запустить много RMA-агентов. Каждый экземпляр такого агента будет иметь свое локальное имя, в отличие от агента-контейнера. На Рис. 72 показан GUI-интерфейс RMA-агента.
Dummy Agent — это простой и очень полезный инструмент для инспектирования обмена сообщениями между JADE-агентами. Этот агент позволяет посылать ACL-сообщения агентам, полу чать и управлять поступающими от агентов сообщениями, читать и хранить полученную информацию в файле. На Рис. 73 показан интерфейс этого агента.
Рис. 72. GUI-интерфейс RMA-агента.
JADE (Java Agent Development Framework) — это программная разработка, ее целью является создание и распространение мультиагентных систем и их приложений, отвечающих стандартам FIPA дня интеллектуальных агентов. Агент Sniffer (вынюхивающий что-либо) — это Java-приложение, созданное для слежения за сообщениями, обмен которыми происходит в среде JADE. Sniffer полностью интегрирован в JADE и оказался достаточно полезным в процессе исправления ошибок в поведении агентов. Когда пользователь решает выследить агента или групп>’ агентов с помощью Sniffer-агента, то каждое сообщение, как поступающее агенту/группе агентов, так и исходящее от этого аген-та/группы, перехватывается и отображается в GUI-интерфейсе агента Sniffer. Пользователь может посмотреть каждое сообщение и сохранять их на диск как текстовый файл. На Рис. 74. показан интерфейс агента Sniffer.
Рис. 73. Интерфейс агента Dummy Agent.
Рис. 74. Интерфейс агента Sniffer
SocketProxyAgent — это JADE-агент, предназначенный для установки коммуникаций с удаленными клиентами. Агент позволяет поддерживать 50 параллельных подключений. Каждое входящее сообщение парсится, проверяется его адресат по листингу, агентных имен, и передается агенту в пункт назначения. JADE предлагает графический интерфейс агента-фасилитатора DF (Directory 7 Facilitator) agent. Он позволяет сотрудничать с другими DF-агентами и контролировать (регистрировать, модифицировать, искать агентов по их характеристикам) всю сеть объединения DF-агентов. Этот тип агентов предлагает сервис «yellow pages’» другим агентам. Они могут зарегистрировать свои услуги с помощью DF-агента или «попросить” его найти поддержку 7 у других DF-агентов. Последние могут объединяться и создавать федерации агентов-фасилитаторов. Рис. 75 показывает интерфейс таких агентов.
Рис. 75. Интерфейс агента-фасилитатора
Мы рассмотрели основные инструменты агентной архитектуры JADE. Она позволяет облегчить разработку агентных приложений, основанных на FIPA-спецификации для интероперабельных мультиагентых систем. Цель создания этой архитектуры — упростить процесс разработки, стандартизируя способы взаимодействия агентов во всеоохватывающей среде системных сервисов.
Возможности JADE
Дня достижения этой цели JADE предлагает програмисту-разработчику агентных систем следующие возможности:
- • FIPA-compliant Agent Platform — агентная платформа, основанная на FIPA и включающая обязательные типы системных агентов: AMS, АСС и DF. Эти три типа агентов автоматически активируются при залуске платформы.
- • Distributed Agent Platform — распределенная агентная платформа, которая может использовать несколько хостов, при чем на каждом узле запускается только одна Java Virtual Machine. Агенты имплементируются как Java-потоки. В зависимости от местонахождения агента, посылающего сообщение, и того, кто его получает, для доставки сообщений используется соответствующий транспортный механизм.
- • Multiple Domains support — ряд основанных на FIPA DF-агентов могут объединится в федерацию, таким образом имплементируя мультидоменную агентную среду.
- • Multithreaded execution environment with two-level scheduling. Каждый J ADE-агент имеет собственный поток управления, но он также способен работать в многопотоковом режиме. Java Virtual Machine проводит планирование задач, исполняемых агентами или одним из них.
- • Object-oriented programming environment. Большинство концепций, свойственных FIPA-спецификации, представляются Java-классами, формирующими интерфейс пользователя.
- • Library of interaction protocols. Используются стандартные интерактивные протоколы fipa-request и fipa-contract-net. Для того, чтобы создать агента, который мог бы действовать согласно таким протоколам, разработчикам прикладных программ нужно только имплементировать специфические доменные действия, в то время как вся независимая от прикладной программы протокольная логика будет осуществляться системой JADE.
- • Administration GUI. Простые операции управления платформой могут исполняться через графический интерфейс, отображающий активных агентов и контейнеры агентов. Используя GUI, администраторы платформы могут создавать, уничтожать, прерывать и возобновлять действия агентов, создавать иерархии доменов и мультиагентные федерации DF (фасилитаторов).
ПРОТОТИП РЕАЛИЗАЦИИ АГЕНТНОЙ СИСТЕМЫ
Пусть с помощью UML была разработана модель системы агентного типа, диаграмма архитектуры которой показана на Рис. 76. где:
Рис. 76. Модель системы агентного типа
• Student — компьютер студента, который использует мобильный агент для обучения;
- • Professor — компьютер профессора, который использует сервер дистанционного обучения (мобильного агента) для проверки и предоставления новых заданий;
- • Internet — группа устройств, предоставляющих доступ к глобальной сети Интернет;
- • Mobile Agent Server — сервер мобильных агентов;
- • Lockal Network — устройства локальной сети, обеспечивающие связь серверов;
- • DataBase Server — сервер БД (например. MS SQL Server 2000, Oracle9i. DB/2 Sybase), который содержит информацию о предметах, студентах и т.п.;
- • File Server — файловый сервер, хранит все материалы и контрольные работы.
Диаграмма взаимодействия классов агента обучения (Sequence Diagram) при поиске данных на сервере или в глобатьной сети Интернет показана на Рис. 77.
SearchOnSearchSysjtem()
SearchOnSearchSysttfn() ‘ I :
Puc. 77. Диаграмма взаимодействия классов агента обучения
Эту 7 диаграмм> 7 можно разбить на две. но из-за того, что в ней принимают участие почти одинаковые классы, было бы удобно объединить их в одну 7 по содержанию, поскольку 7 описывается процесс поиска данных.
Агенте обучения поступило задание найти информацию на сервере. Он взывает метод класса агента поиска MAgent.SearchMA — SearchOnServer. Контролер агентов вызывает метод диспетчера PutMA(), который определяет приоритет и ставит агента в очередь. Server.ControllerMA вызывает метод сервера DoWorkForMA(), исполняется поиск и посылается сообщение, если операция завершилась успешно — MAOperationOK(). Диспетчер удаляет агента из очереди. Контролер вызывает метод сервера — вернуть результаты поиска ReturnResultSearch(), которые передаются агенту обучения вместе с сообщением об успешном завершении операции. Процесс поиска в сети Интернет аналогичный, с той разницей, что дня него не используются данные с сервера мобильных агентов.
Рассмотрим Рис. 78 описания Sequence Diagram.
Рис. 78. Диаграмма взаимодействия классов Агента обучения с контролером, диспетчером и сервером агентов
ControllerMA вызывает функцию ListeningMA(), получает агента и вызывает метод класса диспетчера агентов DispetcherMA, который ставит приоритет данного агента в очереди. Контролер анализирует запрос агента и вызывает метод класса ServerMA — DoWorkForMA(). ServerMA анализирует и хранит информацию, полученную от агента, и вызывает метод класса FSOperation — сохранения документа, полученного от агента SaveDocument(). Класс FSOperation посылает серверу сообщение, что операция прошла успешно. Соответствующая информация сохраняется в базе данных и класс DBOperation передает сообщение серверу DoOperationOKQ. Контролер получает сообщения от сервера агентов об успешной операции и вызывает метод класса диспетчера для удаления агента из очереди DelMA(). ControllerMA вызывает функцию класса MessageMA, для получения нового задания. MessageMA посылает сообщение агенту’, что операция успешна и можно делать другое задание, которое поступит.
Диаграмма взаимодействия классов Агента сообщений, Агента обучения, Mail-агента и Агента поиска показана на Рис. 79.
Рис. 79. Диаграмма взаимодействия классов Агента сообщений, Агента обучения, Mail-агента и Агента поиска почты
От Агента сообщений МAgent. MessageMA поступает запрос на проверку электронного взаимодействия. Класс MAgent.MailMA реализует метод CheckMail() и посылает сообщение о результатах его работы addReplyTo() агенту сообщений.
Класс МAgent.MessageMA вызывает метод сервера SearchOnServer(). Агент поиска MAgent.SearchMA просматривает результаты поиска ViewResultOfSearch(), и делает анализ поступившей информации. Агент сообщений получает сообщения про результаты поиска GetMessage().
Класс MAgent.MessageMA вызывает метод агента обучения MAgent.Mes _, s^a _, geMA, который осуществляет, например, проверку контрольной работы ControllWork(). Агент обучения осуществляет проверку’ и дает рекомендацию пересмотреть курсы, в упражнениях к которым были допущены ошибки ViewCourse(). Так же осуществляется процесс тестирования. Также можно просто послать сообщения с запросом пересмотреть любой курс, который вас интересует.
В процессе взаимодействия эти агенты используют также стандартные методы агентной архитектуры JADE, а именно, методы класса jade.content.OntoACLMessage
Диаграмма обмена сообщениями между 7 агентами поиска, обучения, сообщений, mail показана на
Рис. 80. Диаграмма обмена сообщениями между сервером мобильных агентов и агентами, а также контролером, диспетчером и файл-сервером
Рис. 81. Диаграмма обмена сообщениями между агентами поиска, обучения, сообщений, mail
На Рис. 82 показана компонентная диаграмма, которая отображает все пакеты классов данной системы.