
- •Агентная платформа jade
- •1. Описание агентной платформы jade
- •1.1. Архитектурная модель
- •1.2. Функциональная модель
- •2. Архитектура и реализация платформы jade
- •2.1. Структуры компонент-соединитель
- •2.1.1. Агент
- •2.1.2. Поведения
- •2.1.3. Платформа
- •2.1.4. Сервис обмена сообщениями
- •2.1.5. Анализ атрибутов качества
- •2.1.5.1. Производительность
- •2.1.5.2. Масштабируемость
- •2.1.5.3. Готовность
- •2.2.2. Сервис обмена сообщениями
- •2.2.2.1. Модифицируемость
- •2.3.1.1. Безопасность
- •3. Установка и настройка
- •3.1. Требования к окружению
- •3.2. Eclipse интегрированная среда разработки
- •3.2.1. Установка
- •3.2.2. Настройка приложения
- •3.2.3. Добавление кода
- •3.2.4. Запуск и отладка кода
- •3.3. Установка и настройка jade
- •1.1. Файл CalcModel.Java
- •1.1. Файл CalcPanel.Java
- •1.1. Файл Calculator.Java
- •2.1.Листинг: Файл PingAgent.Java
- •2.2. Листинг: Файл PongAgent.Java
2.1.5. Анализ атрибутов качества
2.1.5.1. Производительность
С точки зрения производительности архитектура имеет ряд плюсов связанный с многопоточностью.
Навязываемое платформой разделение функционала агента на набор поведений позволяет легко распараллелить исполнение независимых поведений. По-умолчанию менеджеру поведений каждого агента внутри платформы выделяется свой поток, и все поведения агента выполняются внутри этого потока. Для большого количества простых поведений такая политика распределения ресурсов подходит лучше в том смысле, что переключение поведений внутри одного потока происходит быстрее, чем переключение множества слабо загруженных потоков. Кроме того, экономится память.
Однако, сама по себе инфраструктура поведений вносит дополнительные вычислительные издержки. Особенно при однопоточном исполнении.
Также значительные издержки вносит система передачи сообщений (по-сравнению с простым обменом сообщениями в Actor-Model каркасах). Как будет показано ниже, она чрезвычайно гибкая и позволяет стандартными средствами передавать сложные типы данных, вроде высказываний логики 1-го порядка. Но все это за счет производительности.
В общем, практика показывает, что на одном среднем ПК одновременный запуск более 50-100 простых взаимодействующих агентов вызывает заметное падение производительности.
2.1.5.2. Масштабируемость
Агенты, существующие внутри платформы, независимы друг от друга. Они могут свободно перемещаться между контейнерами с сохранением возможности получать сообщения от других агентов. Все взаимодействия между агентами происходят по принципу p2p, что также улучшает масштабируемость системы.
Следовательно, при наличии двух и более хостов можно производить распределенные вычисления, балансировать нагрузку. И с ростом числа хостов производительность такой системы будет расти. Если вам удастся минимизировать обмен сообщениями между контейнерами.
Если же не удастся... есть класс задач, когда «все агенты связаны со всеми»... тогда при увеличении доли «межконтейнерного обмена» сообщениями система будет работать все медленнее и медленнее.
2.1.5.3. Готовность
В случае уничтожения главного контейнера система работающая на платформе даст сбой, в том случае если разработчик не обеспечит резервное хранилище данных сервисов (желтых и белых страниц). В платформе есть возможность дублирования основного контейнера, сохранения состояния агентов в БД.
2.1.5.4. Контролепригодность
Для обеспечения контроля могут быть использованы специальные системные агенты:
Sniffer Agent – отслеживание потока сообщений между агентами;
Dummy Agent – отправка сообщения агенту;
Introspector Agent – мониторинг жизненного цикла агента;
Remote Monitoring Agent – мониторинг платформы.
2.1.5.5. Интеграция со сторонними системами
Платформа поддерживает интеграцию со сторонними системами:
внедрение агентов в апплет при разработке web-приложений;
интеграция с системами бизнес правил для создания интеллектуальных систем (Jess, Drools);
интеграция с машинами вывода BDI, AgentSpeak, Prolog и др.;
интеграция с другими агентными платформами, поддерживающими стандарт FIPA.
2.2. Модульные структуры
В данном разделе рассмотрены модули архитектуры, а так же различные зависимости между ними.
2.2.1. Агент
C точки зрения платформы, агент JADE– обычный экземпляр определяемого пользователем Java-класса, который расширяет классAgent, реализованный в платформе. Из этого следует, что базовый набор действий агента, необходимый для функционирования внутри платформы определен изначально.
Рис. 2.7. Модули агента
2.2.1.1. Модифицируемость
Агент, как было сказано выше, имеет базовое наполнение как наследник класса Agent. Из каждого агента доступен общий функционал платформы:
прием-передача сообщений и стандартные протоколы взаимодействий;
планировщик поведений и набор стандартных поведений;
менеджер управления жизненным циклом агента.
Прикладному разработчику требуется реализовать только «решатель» агента, анализирующий входные данные и выбирающий выходное воздействие.
Если разработчик использует сторонние библиотеки, в которых реализованы «мозги» агента (JadeX, Jason и др.), тогда даже нет нужды напрямую работать с платформой, а логика работы агента описывается в терминах целей, планов их достижения и отдельных действий.