SlideShare ist ein Scribd-Unternehmen logo
1 von 53
Java Framework for Multi-
Agent Systems
обзор и использование
Задачи
?! Какое решение можно
предложить в случае:

•где есть необходимость постоянного мониторинга
динамических изменений в наблюдаемой системе;

•где централизованное управление информационными
ресурсами неэффективно

•в зависимости от состояний и поведения среды
необходима возможность динамической адаптации
поведения программных объектов.
Многоагентная система
 (МАС), англ. Multi-agent system (MAS)
 •

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


 • Проблема. МАС существуют для решения таких проблем,
     которые сложно или невозможно решить с помощью одного агента
     или монолитной системы.
Многоагентная система (МАС) - это система, образованная несколькими
взаимодействующими интеллектуальными агентами.
Агент


Под агентом понимается программный         агент, он базируется на теории
искусственного интеллекта и отталкивается от понятия интеллектуальный агент.


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

• Самостоятельно выполняют задание но зависят от других агентов или людей когда задачи
им ставятся.
Возможности программных
 агентов
 •

 • Обмен сообщениями (коммуникация). Способность
     агентом поставить задачи другим агентам.

 • Активное поведение. Способность Читать и модифицировать
     значения глобальных переменных, осуществлять операции
     ввода/вывода, реагировать на исключительные ситуации.

 • Мобильность. Гибкие возможности по модификации
     адаптивности и устойчивости. Способность после каждой
     модификации под определенное поведение и специализацию,
     имеет возможность отката.
Автономность. Способность агентом выполнять действия самостоятельно.
Теоретические проблемы МАС
• Описание, декомпозиция и распределение задач между
  агентами в МАС. Синтез (композиция) решений.


• Обеспечение взаимодействия (координация, коммуникация,
  кооперация или коалиция) агентов в МАС. Построение языков и
  протоколов коммуникации.

• Согласование решений и координация действий агентов.
  Планирование в МАС. Разрешение конфликтов между агентами из-
  за ресурсов

• Описание представлений агентами своих внутренних состояний, а
  также знание о планах и действиях других агентов.

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

• Наиболее полное описание предметной области формируется
  внутри системы поддержки принятия решений.

• Требуется взаимодействие множества агентов, для решения
  сколько-нибудь сложной проблемы, которое неотделимо от
  организации МАС.

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

• Агенты должны быть специализированными. Распределение
  заданий означает присвоение каждому агенту некоторой роли.
Необходимые виды
 специализированных агентов
 •

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


 • Пространственные клиенты (поисковый робот). Просматривают
     Интернет ресурсы, собирают информацию о товарах и услугах

 • Субагенты. Службы, обрабатывающие и обучающие агенты, для
     создания структур и баз данных агентов или среды.
Целенаправленные агенты (субординаторы). Хранят информацию о тех ситуациях, которые
для них желательны. Дает агенту способ выбрать путь, который приведет к нужной цели.
Распределение задач
                                                     Субординатор (руководитель) проводит декомпозицию
      Общая задача                                   исходной проблемы на отдельные задачи.

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



                                                    Общий результат
Коммуникация агентов
    Стандарты коммуникационных протоколов
   Сетевой (низкоуровневый): WAP, TPC/IP, XML/HTTP
   Высокоуровневый: FIPA-ACL, KQML (Knowledge Query Manipulation Language)
   Уровень приложений (application). Что говорить, кому говорить, когда говорить и тд
- Запрос: KQML
(stream-all
:content
“(PRICE ? my-profolio ?price)”
:receiver stock-server
:language LPROLOG
:ontology NYSE)

- Запрос: FIPA
(inform
:sender agent1
:receiver stock-server
:content
(price good 200 150)
:language sl
:ontology hpl-auction)
Язык запросов к RDF хранилищам. (SPARQL)

Задачи:
- Извлечение имеющихся в хранилище знаний – запросами к хранилищу
(asking, querying).
- Применением логического вывода над имеющимися знаниями
(reasoning, entailment).


Синтаксис запроса (SPARQL)
                                v_list – список имен переменных
SELECT <v_list>                  ontologyURI – ссылка на онтологию
                                 template_list – список шаблонов
FROM <ontologyURI>               filter_expr – ограничения на значения переменных
WHERE {<template_list>.
        FILTER <filter_expr>}
Общий вид
Agent Building Tools and Platforms


          - Java Agent DEvelopment Framework (JADE)
          http://jade.tilab.com/


          - Jason(Java SE)
          http://jason.sourceforge.net/



          - Aglobe (Java SE)
          http://agents.felk.cvut.cz/aglobe



          - Mobile agent platform Aglet (IBM)
          http://www.research.ibm.com/trl/aglets/
Java Agent DEvelopment Framework
http://jade.tilab.com




JADE – это ПО промежуточного слоя предлагает промежуточный сетевой уровень,
который позволяет JAVA объектам, находящемся на распределенных сайтах
эффективно общаться
Java Agent DEvelopment Framework
http://jade.tilab.com

JADE включает в себя:

•среду реального времени, в которой агентны JADE могут
«сущестовать».

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

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

•ряд инструментов (tools), которые поддерживают фазы
исправления ошибок (debugging) и развертывания
(deployment) системы.
Java Agent DEvelopment Framework
http://jade.tilab.com

JADE представляет:

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

- одна из немногих платформ полностью реализует FIPA-стандарты (есть библиотека
протоколов согласно стандартам FIPA) для интеллектуальных агентов, что упрощает
разработку мультиагентных систем и совместимость с другими мультиагентными
системами

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

- программную среду, полностью написанную на языке программирования Java, с
использованием таких продвинутых возможностей как Java RMI, Java CORBA IDL, Java
Serialization и Java Reflection API.
Java Agent DEvelopment Framework
http://jade.tilab.com

- набор прикладных программных интерфейсов (API), которые не зависят ни от базового
устройства сети, ни от версии платформы Java, в процессе исполнения данное ПО
предоставляет одни и те же API для окружений Java EE, Java SE, Java ME.

- лицензия: LGPL.

- интеграция и управление платформой в IDE Eclipse.

- легко интегрируется с плагинами механизмы интеллекта доступны через: BDI и FSM,
JadeX, Jason и др. интегрируется с плагинами Semantic Web и Web Services, интеграция с
системами бизнес правил для создания интеллектуальных систем (Jess, Drools),
RDFCodec и AgentOWL, интеграция с jsp

- поддержка онтологий (jade.content package), которые агенты могут использовать для
обмена сообщениями.

- связь с коммерческими структурами: http://jade.tilab.com/theboard-members.htm (Telecom
Italia Lab, Motorola, Whitestein Technologies AG, Profactor GmbH, France Telecom R&D),
платформа для исследований во многих университетах...
Основные инструменты агентной
архитектуры JADE
Каждый экземпляр JADE во время исполнения называется
контейнером (так как он «содержит» определенный набор агентов).

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

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

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

В итоге можно связать несколько отдельных платформ так, что их
агенты смогут обмениваться сообщениями. Таким образом, агентная
платформа является распределенной.
Основные инструменты агентной
архитектуры JADE
Основные инструменты JADE
Главный контейнер создается первым, все созданные позже контейнеры
должны быть зарегистрированы в главном контейнере, контейнер содержит таблицу
контейнеров (CT-container table).


CT-container table – в данной таблице хранятся ссылки на объекты и транспортные
адреса всех контейнеров, входящих в состав платформы.


Внутри каждого контейнера содержится:
• GADT (global agent descriptor table) – это регистр агентов платформы, в котором
хранятся их текущий статус и местоположение.
• LADT (local agent descriptor table) – тоже самое что и GADT, но для агентов контейнера.
Основные инструменты JADE
- Если другой основной контейнер был запущен где-либо в сети, он
представит собой другую платформу в которой новые нормальные
контейнеры имеют возможность зарегистрироваться. При этом:

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

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

- Основной контейнер отличается тем, что он содержит два
специальных (системных) агента:

- AMS (Agent Management System) – данный агент управляет всей платформой.
- "White Pages" содержит имена, обеспечивает доступ агентам к сервису белых страниц
- поддерживает набор агентов на платформе, обеспечивает взаимодействие
- DF (Directory Facilitator) – регистрация сервисов и поиск агента по сервису.
- "Yellow Pages" деловая информацию агентов, они могут зарегистрировать свои услуги
- поддерживает сотрудничество набора агентов на уровне предоставляемых сервисов
Основные инструменты JADE
Основные инструменты JADE
Основные инструменты JADE

Remote Monitoring Agent (RMA) - показывает состояние агентной платформы (Agent
Platform) и предлагает разнообразные инструменты администрирования, исправление
ошибок и тестирование приложений.


Dummy Agent - служит для инспектирования обмена сообщениями между агентами. Этот
агент позволяет посылать ACL-сообщения агентам, получать и управлять поступающими
от агентов сообщениями, читать и хранить полученную информацию.

Sniffer Agent - средство, созданное для слежения за сообщениями, обмен которыми
происходит в среде JADE.

Introspector Agent - средство мониторинга жизненного цикла агента.

Socket Proxy Agent - средство, предназначенное для установки коммуникаций с
удаленными клиентами. Агент позволяет поддерживать 50 параллельных подключений.
Каждое входящее сообщение парсится, проверяется его адресат по листингу агентных
имен, и передается агенту в пункт назначения.
Сервис обмена сообщениями агентов
Диаграмма асинхронного обмена сообщениями:




Средством поддержки способности к взаимодействию программных компонентов
являются:
•средства межпроцессных взаимодействий;
•механизм вызова удалённых процедур;
•архитектура раcпределённых брокеров в технологии CORBA.

В том случае если агенты находятся в разных контейнерах - используется RMI (Java Remote Method Invocation).
В случае межплатформенного сценария взаимодействие - осуществляется по ACC (Agent Communication Channel).
Сервис обмена сообщениями агентов
Сервис обмена сообщениями одна из основополагающих частей
архитектуры платформы JADE:

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

друге).
• Каждый агент имеет свой «почтовый ящик» - очередь входящих сообщений, куда
помещаются все направленные агенту сообщения.
• В тот момент, когда сообщение помещается в очередь входящих сообщений, агент
оповещается об этом.
• Идентификатором служит имя агента (нет необходимости указывать ссылку на объект-
получатель) и, как следствие, нет временной зависимости между общающимися
агентами.
• Не требуется, чтобы отправитель и получатель были запущены в одно и тоже время.
• Получатель даже может еще не существовать или может быть не известен явно
отправителю, т.е. отправитель может знать только свойство получателя.
Сервис обмена сообщениями агентов
Сообщения, которыми обмениваются агенты имеют языковой формат
ACL определенный          FIPA - международным стандартом
взаимодействия агентов, включает обязательные поля:

•Отправитель сообщения.
•Список получателей.
•Цель общения (                                                                ).
                 REQUEST, INFORM, QUERY_IF, CFP, PROPOSE, ACCEPT_PROPOSAL, REJECT_PROPOSAL



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

•Некоторые поля, используемые дляответов, таких, как conversation-ID,reply-with,in-reply-
указания таймаутов для получения
                                   контроля нескольких одновременных разговоров и

to,reply-by.
Сервис обмена сообщениями агентов
Сообщения вкладываются одно в другое, снизу вверх, образуя своего
рода «надсетевой стек» протоколов обмена знаниями:


•Envelope – конверт:
     o отправитель;
     o получатель;
     o тип сообщения.
•Message – сообщение, описанное на языке ACL:
     o язык выражения данных;
     o тип кодирования данных;
     o онтология - описывает набор символов сообщения.
•Content – содержимое сообщения, описанное на языке ACL:
     o данные;
     o знания (факты, правила, запросы).
•Symbol – символы, содержащиеся в описании ACL,             могут
соответствовать определенной онтологии.
Модель сообщения определенная в
стандарте FIPA и используемая в JADE
Поведение агентов
Мультиагентные системы делятся на
кооперативные, конкурирующие и смешанные:


- Агенты в кооперативных системах являются частями единой системы и решают
подзадачи одной общей задачи:


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



- Под смешанными агентными системами подразумеваются конкурирующие агенты,
способные к кооперации,  подсистемы которых также реализуются по агентной
технологии
Поведение агентов JADE
Для отработки реакции на события агент имеет поведения. Типы
поведений:

- простое поведение:
• единожды исполняемое поведение;
• циклически исполняемое поведение;

- сложное поведение:
• поведение-триггер;
• последовательное поведение;
• параллельное поведение.


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

По умолчанию в системе каждому агенту платформы соответствует один поток.


Агент может отрабатывать несколько поведений одновременно.                  Обработка
поведений происходит не по приоритетам (как java потоки), а совместно.


Очередность исполнения отдельных простых поведений не гарантируется, для
этого нужно использовать поведения специальных типов или синхронизацию.


Поведениям не выделяются отдельные потоки, так как при большом количестве
поведений происходит постоянное переключение между ними, а переключение между
потоками происходит относительно долго (вызов поведения как метода происходит
быстрее, чем переключение потоков).
Поведение агентов JADE
Подключение Jade к Eclipse IDE
Подключение Jade к Eclipse IDE
Создание агентно-ориентированного
приложения JADE
Рассмотрим предметную область "Электронная Торговля":
- Сценарий включает в себя агенты, продающие продукты - покупающие продукты
- Для создания агента в JADE необходимо определить класс, наследующий класс
jade.core.Agent, реализовав метод setup():

import jade.core.Agent;
public class ProductBuyerAgent extends Agent {
     protected void setup() {
            // Printout a welcome message
            System.out.println("Hello! Buyer-agent "
+getAID().getName()+" is ready.");
}
}

- Каждый агент идентифицируется «идентификатором агента», представленным
экземпляром класса jade.core.AID.
- Метод getAID() класса Agent позволяет получить идентификатор агента. AID объект
включает уникальное имя и адреса.
- Зная имя агента, его AID может быть получен следующим образом:
AID id = new AID("nickname", AID.ISLOCALNAME); (локальое имя не глобальное)
Запуск и завершение работы
Результат выполнения
Запуск и завершение работы
Результат выполнения
Результат выполнения
-gui testbuyer:com.sysiq.s.maistrenko.buyer.ProductBuyerAgent (Program Arguments)
Aug 3, 2012 2:19:15 PM jade.core.Runtime beginContainerINFO:
----------------------------------
    This is JADE 4.2.0 - revision 6574 of 2012/06/20 15:38:00
    downloaded in Open Source, under LGPL restrictions,
    at http://jade.tilab.com/----------------------------------------
Aug 3, 2012 2:19:15 PM jade.imtp.leap.LEAPIMTPManager initializeINFO: Listening for intra-
platform commands on address:- jicp://192.168.0.102:1099

Aug 3, 2012 2:19:16 PM jade.core.BaseService initINFO: Service
jade.core.management.AgentManagement initialized
Aug 3, 2012 2:19:16 PM jade.core.BaseService initINFO: Service
jade.core.messaging.Messaging initialized
Aug 3, 2012 2:19:16 PM jade.core.BaseService initINFO: Service
jade.core.resource.ResourceManagement initialized
Aug 3, 2012 2:19:16 PM jade.core.BaseService initINFO: Service
jade.core.mobility.AgentMobility initialized
Aug 3, 2012 2:19:16 PM jade.core.BaseService initINFO: Service
jade.core.event.Notification initialized
Aug 3, 2012 2:19:16 PM jade.mtp.http.HTTPServer <init>INFO: HTTP-MTP Using XML parser
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser
Aug 3, 2012 2:19:16 PM jade.core.messaging.MessagingService bootINFO: MTP addresses:
http://old:7778/acc
Aug 3, 2012 2:19:16 PM jade.core.AgentContainerImpl joinPlatformINFO:
--------------------------------------
Agent container Main-Container@192.168.0.102 is
ready.--------------------------------------------
Hello! Buyer-agent testbuyer@192.168.0.102:1099/JADE is ready.
Результат выполнения
Первая часть выведенного текста - заголовок JADE, который
выводится каждый раз при запуске среды JADE.

Далее идёт инициализация сервисов ядра.

Наконец, сообщение о том, что контейнер с именем «Main-Container»
был успешно запущен.

Когда среда JADE и наш агент запущены, выводится приветствие.
          Имя агента «testbuyer», как мы задали в Program
            Arguments.
          Имя платформы “192.168.0.102:1099/JADE”
            автоматически присваивается, используя хост и порт, на
            котором запущена JADE.
          Имя в JADE имеет формат:


<nickname>@<platform-name>
Передача аргументов агенту
Необходимо, чтобы агент ProductByuerAgent получил название продукта, аргументы
могут быть получены как массив Object, с помощью метода getArguments() класса Agent:
public class ProductBuyerAgent1 extends Agent {
    // The title of the product to buy
    private String targetProductTitle;
    // The list of known seller agents
    private AID[] sellerAgents = {
        new AID("seller1", AID.ISLOCALNAME),new AID("seller2", AID.ISLOCALNAME)};
    // Put agent initializations here
    protected void setup() {
        // Printout a welcome message
        System.out.println("Hello! Buyer-agent "+getAID().getName()+" is ready.");
        // Get the title of the Product to buy as a start-up argument
        Object[] args = getArguments();
        if (args != null && args.length > 0) {
            targetProductTitle = (String) args[0];
            System.out.println("Trying to buy "+targetProductTitle);
        } else {
        // Make the agent terminate immediately
            System.out.println("No product title specified");
            doDelete();
        }
    }
    // Put agent clean-up operations here
    protected void takeDown() {
        // Printout a dismissal message
        System.out.println("Buyer-agent "+getAID().getName()+" terminating.");
    }
}
Результат выполнения
-gui testbuyer:
com.sysiq.s.maistrenko.buyer.ProductBuyerAgent1(Canon-EOS-1D-Mark-II-N-digital-
camera) (Program Arguments)

Aug 3, 2012 3:50:12 PM jade.core.Runtime beginContainerINFO:
----------------------------------
    This is JADE 4.2.0 - revision 6574 of 2012/06/20 15:38:00
    downloaded in Open Source, under LGPL restrictions,
    at http://jade.tilab.com/----------------------------------------
  ...
  ...
Hello! Buyer-agent testbuyer@192.168.0.102:1099/JADE is ready.
Trying to buy Canon-EOS-1D-Mark-II-N-digital-camera
Aug 3, 2012 3:50:13 PM jade.core.AgentContainerImpl joinPlatformINFO:
--------------------------------------
Agent container Main-Container@192.168.0.102 is
ready.--------------------------------------------


Даже если не предусмотрены никакие действия после печати приветствия, наш агент всё
ещё запущен.
Для того, чтобы завершить его работу нужно использовать метод doDelete().

Подобно методу setup() (который вызывается средой JADE сразу после создания агента, и в который необходимо включить
инициализацию агента), метод takeDown() вызывается перед завершением работы агента. Он должен содержать операции по
очистке.
Добавление поведения для агента


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


- Оно реализуется как объект класса, наследующего класс
jade.core.behaviours.Behaviour.


- Для того чтобы агент мог исполнять задачу, описываемую объектом
поведения, достаточно добавить поведение агента с помощью метода
addBehaviour() класса Agent
- Фактическая работа, которую агент должен делать, как правило, осуществляется в
рамках «поведения агента».
Согласование поведений
Агент может выполнять одновременно несколько моделей поведения.

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

Поведение исполняется по расписанию, его метод action()
вызывается и работает до тех пор, пока не завершится. Это имеет
преимущества:

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

•Устраняет все вопросы синхронизации между параллельными поведениями, которые
должны получить доступ к одним и тем же ресурсам

•Когда происходит переключение поведения, статус агента не включает какой-либо
сохраненной информации и поэтому можно получить его "снимок"

•Устойчивость и мобильность -передовые возможностями JADE, сохранение статуса
агентов для последующего восстановления, или передачи его в другой контейнер для
удаленного исполнения
3 типа поведений
                                                                             Циклический
                                                                              public class MyCyclicBehaviour extends CyclicBehaviour {
      Одноразовый                                                       public void action() {
        public class MyOneShotBehaviour extends                         // perform operation Y
OneShotBehaviour {                                                      }
  public void action() {                                            }
  // perform operation X }                                                Операция Y будет выполняться в цикле бесконечно,
}                                                                  пока агент, с таким поведением, не будет завершён
        В данном примере операция X выполнится единожды
                                                       Общий
                                                        public class MyThreeStepBehaviour extends Behaviour {
                                                   private int step = 0;
                                                   public void action() {
                                                      switch (step) {
                                                         case 0:         // perform operation X
                                                         step++;
    Операции X, Y и Z выполняются друг за                break;
    другом, после них поведение завершается.             case 1:         // perform operation Y
    Jade предоставляет возможность соединять             step++;
    простые формы поведения для создания                 break;
    более сложных. (SequentialBehaviour,                 case 2:         // perform operation Z
    ParallelBehaviour и FSMBehaviour)                    step++;
                                                         break;
                                                      }
                                                   }
                                                   public boolean done() {
                                                      return step == 3;
                                                   }
                                               }
Планирование операций
Jade предоставляет два готовых класса: WakerBehaviour,
TickerBehaviour (в пакете jade.core.behaviours):
public class MyAgent extends Agent {
  protected void setup() {
     System.out.println(“Adding waker behaviour”);
     addBehaviour( new WakerBehaviour(this, 10000) {
         protected void handleElapsedTimeout() {
         // perform operation X
         }
     } );
  }
}
В данном случае операция X выполнится через 10 секунд после того, как была выведена надпись
«Adding waker behaviour»

public class MyAgent extends Agent {
  protected void setup() {
     addBehaviour( new TickerBehaviour(this, 10000) {
         protected void onTick() {
         // perform operation Y
         }
     } );
  }
}
Операция Y выполняется с периодом в 10 секунд.
Поведение для ProductBuyerAgent




protected void setup() { // Println a welcome message System.out.println(“Hello! Buyer-
agent “+getAID().getName()+” is ready.”); // Get the title of the product to buy as a start-up
argument Object[] args = getArguments(); if (args != null && args.length > 0) {
targetProductTitle = (String) args[0];   System.out.println("Trying to buy
Поведение для ProductSellerAgent
public class ProductSellerAgent extends Agent {
    // The catalogue of Products for sale (maps the title of a Product to its price)
    private Hashtable catalogue;
    // The GUI by means of which the user can add Products in the catalogue
    private ProductSellerGui myGui;
    // Put agent initializations here
    protected void setup() {
    // Create the catalogue
    catalogue = new Hashtable();
    // Create and show the GUI
    myGui = new ProductSellerGui(this);
    myGui.show();
    // Add the behaviour serving requests for offer from buyer agents
    addBehaviour(new OfferRequestsServer());
    // Add the behaviour serving purchase orders from buyer agents
    addBehaviour(new PurchaseOrdersServer());
    }
    protected void takeDown() { // Close the GUI
    myGui.dispose();
    // Printout a dismissal message
    System.out.println("Seller-agent "+getAID().getName()+" terminating."); }
    // This is invoked by the GUI when the user adds a new Product for sale
    public void updateCatalogue(final String title, final int price) {
    addBehaviour(new OneShotBehaviour() {
    public void action() {
    catalogue.put(title, new Integer(price));
} } ); } }
работа с сообщениями
Отправка сообщения другому агенту, состоит в заполнении
ACLMessage объекта и вызове метода send() класса Agent.
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
msg.addReceiver(new AID("Buyer", AID.ISLOCALNAME));
msg.setLanguage("English");
msg.setOntology("cameras");
msg.setContent("Canon-EOS-1D-Mark-II-N-digital-camera");
send(msg);

Получение сообщений, выбор сообщений из очереди сообщений
public void action() {
    MessageTemplate mt = MessageTemplate.MatchPerformative(ACLMessage.CFP);
    ACLMessage msg = myAgent.receive(mt);
    if (msg != null) {
    // Получено сообщение типа CFP.
    // (call for proposal) вид сообщений для сообщений о том,
    // что покупатель-агент направляет продавцу-агенту
    // просьбу выдать ему предложение на продукт
    // Обработка сообщения
    ...
    } else {
        block();
    }
}
AgentOWL
OWL-онтологии могут содержать описания классов, свойств и их экземпляров

AgentOWL - java библиотека, разработанная для поддержки RDF/OWL моделей
для Jade агентов, используется для описания модели знаний агента(generic agent model).

Основывается на пяти основных элементах:
•Resources,
•Actions,
•Actors,
•Context
•Events
Спецификация FIPA Ontology Service specification определяет основные аспекты
моделирование взаимодействия агентов, основанного на онтологиях.


OWL (Web Ontology Language, (World Wide Web Consortium, W3C)) – язык представления
онтологий в Web.
Java Framework for Multi-agent Systems

Weitere ähnliche Inhalte

Andere mochten auch

Психология восприятия и UX дизайн
Психология восприятия и UX дизайнПсихология восприятия и UX дизайн
Психология восприятия и UX дизайнEcommerce Solution Provider SysIQ
 
Эффективный JavaScript - IQLab Frontend Fusion 2012
Эффективный  JavaScript - IQLab Frontend Fusion 2012Эффективный  JavaScript - IQLab Frontend Fusion 2012
Эффективный JavaScript - IQLab Frontend Fusion 2012Ecommerce Solution Provider SysIQ
 
Модульные сетки в реальном мире - IQLab Frontend Fusion 2012
Модульные сетки в реальном мире - IQLab Frontend Fusion 2012Модульные сетки в реальном мире - IQLab Frontend Fusion 2012
Модульные сетки в реальном мире - IQLab Frontend Fusion 2012Ecommerce Solution Provider SysIQ
 
Гибкость и Структурированность Oбъектно Oриентированноя CSS
Гибкость и Структурированность Oбъектно Oриентированноя CSSГибкость и Структурированность Oбъектно Oриентированноя CSS
Гибкость и Структурированность Oбъектно Oриентированноя CSSEcommerce Solution Provider SysIQ
 

Andere mochten auch (20)

non-blocking java script
non-blocking java scriptnon-blocking java script
non-blocking java script
 
Management and Communications (IPAA)
Management and Communications (IPAA)Management and Communications (IPAA)
Management and Communications (IPAA)
 
Психология восприятия и UX дизайн
Психология восприятия и UX дизайнПсихология восприятия и UX дизайн
Психология восприятия и UX дизайн
 
Java serialization
Java serializationJava serialization
Java serialization
 
Developing for e commerce is important
Developing for e commerce is importantDeveloping for e commerce is important
Developing for e commerce is important
 
Going global
Going globalGoing global
Going global
 
Seo and Marketing Requirements in Web Architecture
Seo and Marketing Requirements in Web ArchitectureSeo and Marketing Requirements in Web Architecture
Seo and Marketing Requirements in Web Architecture
 
Quick Intro to Clean Coding
Quick Intro to Clean CodingQuick Intro to Clean Coding
Quick Intro to Clean Coding
 
User focused design
User focused designUser focused design
User focused design
 
Manifest of modern engineers
Manifest of modern engineersManifest of modern engineers
Manifest of modern engineers
 
Mastering Java ByteCode
Mastering Java ByteCodeMastering Java ByteCode
Mastering Java ByteCode
 
Lupan big enterprise ecommerce fusion 2013
Lupan   big enterprise ecommerce fusion 2013Lupan   big enterprise ecommerce fusion 2013
Lupan big enterprise ecommerce fusion 2013
 
Эффективный JavaScript - IQLab Frontend Fusion 2012
Эффективный  JavaScript - IQLab Frontend Fusion 2012Эффективный  JavaScript - IQLab Frontend Fusion 2012
Эффективный JavaScript - IQLab Frontend Fusion 2012
 
Модульные сетки в реальном мире - IQLab Frontend Fusion 2012
Модульные сетки в реальном мире - IQLab Frontend Fusion 2012Модульные сетки в реальном мире - IQLab Frontend Fusion 2012
Модульные сетки в реальном мире - IQLab Frontend Fusion 2012
 
IGears: Template Architecture and Principles
IGears: Template Architecture and PrinciplesIGears: Template Architecture and Principles
IGears: Template Architecture and Principles
 
All things php
All things phpAll things php
All things php
 
Unexpected achievements 2013
Unexpected achievements 2013Unexpected achievements 2013
Unexpected achievements 2013
 
QA evolution to the present day
QA evolution to the present dayQA evolution to the present day
QA evolution to the present day
 
Getting to know magento
Getting to know magentoGetting to know magento
Getting to know magento
 
Гибкость и Структурированность Oбъектно Oриентированноя CSS
Гибкость и Структурированность Oбъектно Oриентированноя CSSГибкость и Структурированность Oбъектно Oриентированноя CSS
Гибкость и Структурированность Oбъектно Oриентированноя CSS
 

Ähnlich wie Java Framework for Multi-agent Systems

Лекция 4
Лекция 4Лекция 4
Лекция 4itc73
 
Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.EatDog
 
методология Rad (46)
методология Rad (46)методология Rad (46)
методология Rad (46)romachka_pole
 
Экскурс в Domain-driven design
Экскурс в Domain-driven designЭкскурс в Domain-driven design
Экскурс в Domain-driven designTados
 
Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей. Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей. Levon Avakyan
 
Введение в maven
Введение в mavenВведение в maven
Введение в mavenDmitry Zinushin
 
Базовый инструментарий аналитика. Методы и техники используемые в инженерии т...
Базовый инструментарий аналитика. Методы и техники используемые в инженерии т...Базовый инструментарий аналитика. Методы и техники используемые в инженерии т...
Базовый инструментарий аналитика. Методы и техники используемые в инженерии т...Yury Buluy
 
Gang of four review.Structural patterns
Gang of four review.Structural patternsGang of four review.Structural patterns
Gang of four review.Structural patternsMykyta Hopkalo
 
Нотации оформления требований
Нотации оформления требованийНотации оформления требований
Нотации оформления требованийJaneKozmina
 
введение в объектно ориентированный анализ
введение в объектно ориентированный анализвведение в объектно ориентированный анализ
введение в объектно ориентированный анализMaksim Nikitin
 
Что такое Java? Кто такой Java разработчик?
Что такое Java? Кто такой Java разработчик?Что такое Java? Кто такой Java разработчик?
Что такое Java? Кто такой Java разработчик?GetITAbroad
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...jazzteam
 
Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”GlobalLogic Ukraine
 
C:\fakepath\lopc_midlet
C:\fakepath\lopc_midletC:\fakepath\lopc_midlet
C:\fakepath\lopc_midletstaticboy44
 

Ähnlich wie Java Framework for Multi-agent Systems (20)

Лекция 4
Лекция 4Лекция 4
Лекция 4
 
Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.
 
методология Rad (46)
методология Rad (46)методология Rad (46)
методология Rad (46)
 
DESIGN PATTERNS? EASY!
DESIGN PATTERNS? EASY!DESIGN PATTERNS? EASY!
DESIGN PATTERNS? EASY!
 
Fragments&Loaders
Fragments&LoadersFragments&Loaders
Fragments&Loaders
 
Экскурс в Domain-driven design
Экскурс в Domain-driven designЭкскурс в Domain-driven design
Экскурс в Domain-driven design
 
Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей. Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей.
 
Введение в maven
Введение в mavenВведение в maven
Введение в maven
 
Software Design Patterns
Software Design PatternsSoftware Design Patterns
Software Design Patterns
 
Базовый инструментарий аналитика. Методы и техники используемые в инженерии т...
Базовый инструментарий аналитика. Методы и техники используемые в инженерии т...Базовый инструментарий аналитика. Методы и техники используемые в инженерии т...
Базовый инструментарий аналитика. Методы и техники используемые в инженерии т...
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Gang of four review.Structural patterns
Gang of four review.Structural patternsGang of four review.Structural patterns
Gang of four review.Structural patterns
 
Нотации оформления требований
Нотации оформления требованийНотации оформления требований
Нотации оформления требований
 
МиСПИСиТ (внешнее описание)
МиСПИСиТ (внешнее описание)МиСПИСиТ (внешнее описание)
МиСПИСиТ (внешнее описание)
 
Kupriyanov
KupriyanovKupriyanov
Kupriyanov
 
введение в объектно ориентированный анализ
введение в объектно ориентированный анализвведение в объектно ориентированный анализ
введение в объектно ориентированный анализ
 
Что такое Java? Кто такой Java разработчик?
Что такое Java? Кто такой Java разработчик?Что такое Java? Кто такой Java разработчик?
Что такое Java? Кто такой Java разработчик?
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
 
Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”
 
C:\fakepath\lopc_midlet
C:\fakepath\lopc_midletC:\fakepath\lopc_midlet
C:\fakepath\lopc_midlet
 

Mehr von Ecommerce Solution Provider SysIQ (10)

Developing for e commerce is important
Developing for e commerce is importantDeveloping for e commerce is important
Developing for e commerce is important
 
Magento code audit
Magento code auditMagento code audit
Magento code audit
 
Scalability and performance for e commerce
Scalability and performance for e commerceScalability and performance for e commerce
Scalability and performance for e commerce
 
Going Global
Going GlobalGoing Global
Going Global
 
Databases on Client Side
Databases on Client SideDatabases on Client Side
Databases on Client Side
 
Testing schools overview
Testing schools overviewTesting schools overview
Testing schools overview
 
Interactive web prototyping
Interactive web prototypingInteractive web prototyping
Interactive web prototyping
 
Модульные сетки в реальном мире
Модульные сетки в реальном миреМодульные сетки в реальном мире
Модульные сетки в реальном мире
 
Правила хорошего SEO тона в Frontend разработке
Правила хорошего SEO тона в Frontend разработкеПравила хорошего SEO тона в Frontend разработке
Правила хорошего SEO тона в Frontend разработке
 
Understanding Annotations in Java
Understanding Annotations in JavaUnderstanding Annotations in Java
Understanding Annotations in Java
 

Java Framework for Multi-agent Systems

  • 1. Java Framework for Multi- Agent Systems обзор и использование
  • 2. Задачи ?! Какое решение можно предложить в случае: •где есть необходимость постоянного мониторинга динамических изменений в наблюдаемой системе; •где централизованное управление информационными ресурсами неэффективно •в зависимости от состояний и поведения среды необходима возможность динамической адаптации поведения программных объектов.
  • 3. Многоагентная система (МАС), англ. Multi-agent system (MAS) • • Цель. Для системы принятия решений разработка многоагентной модели связана с возможностью наблюдения, сбора, структурирования информации о динамических изменениях в наблюдаемой системе. • Проблема. МАС существуют для решения таких проблем, которые сложно или невозможно решить с помощью одного агента или монолитной системы. Многоагентная система (МАС) - это система, образованная несколькими взаимодействующими интеллектуальными агентами.
  • 4. Агент Под агентом понимается программный агент, он базируется на теории искусственного интеллекта и отталкивается от понятия интеллектуальный агент. интеллектуальные агенты - сущности, действующие в изменяемой среде наблюдающие и собирающие информацию о ней. • Полностью независимы, выполняя свои задачи когда их действия направлены на достижение какой-либо цели. • Самостоятельно выполняют задание но зависят от других агентов или людей когда задачи им ставятся.
  • 5. Возможности программных агентов • • Обмен сообщениями (коммуникация). Способность агентом поставить задачи другим агентам. • Активное поведение. Способность Читать и модифицировать значения глобальных переменных, осуществлять операции ввода/вывода, реагировать на исключительные ситуации. • Мобильность. Гибкие возможности по модификации адаптивности и устойчивости. Способность после каждой модификации под определенное поведение и специализацию, имеет возможность отката. Автономность. Способность агентом выполнять действия самостоятельно.
  • 6. Теоретические проблемы МАС • Описание, декомпозиция и распределение задач между агентами в МАС. Синтез (композиция) решений. • Обеспечение взаимодействия (координация, коммуникация, кооперация или коалиция) агентов в МАС. Построение языков и протоколов коммуникации. • Согласование решений и координация действий агентов. Планирование в МАС. Разрешение конфликтов между агентами из- за ресурсов • Описание представлений агентами своих внутренних состояний, а также знание о планах и действиях других агентов. • Описание различных точек зрения, целей и предпочтений агентов в интересах представления их в МАС
  • 7. Некоторая концепция МАС • Агент может иметь лишь частичное представление об общей задаче, должен решать лишь некоторую ее подзадачу. • Наиболее полное описание предметной области формируется внутри системы поддержки принятия решений. • Требуется взаимодействие множества агентов, для решения сколько-нибудь сложной проблемы, которое неотделимо от организации МАС. • В МАС задачи по определенным правилам распределяются между всеми агентами, каждый входит в специализированную группу. • Агенты должны быть специализированными. Распределение заданий означает присвоение каждому агенту некоторой роли.
  • 8. Необходимые виды специализированных агентов • • Добывающие информацию агенты. Действуют в хранилище данных обнаруженной информации для последующего использования (например в стратегиях, по увеличению продаж или привлечения покупателей). • Пространственные клиенты (поисковый робот). Просматривают Интернет ресурсы, собирают информацию о товарах и услугах • Субагенты. Службы, обрабатывающие и обучающие агенты, для создания структур и баз данных агентов или среды. Целенаправленные агенты (субординаторы). Хранят информацию о тех ситуациях, которые для них желательны. Дает агенту способ выбрать путь, который приведет к нужной цели.
  • 9. Распределение задач Субординатор (руководитель) проводит декомпозицию Общая задача исходной проблемы на отдельные задачи. Субординатор Эти задачи распределяются между агентами- ия исполнителями. зи ц мпо Подзадачи Д е ко ач д за д Каждый агент-исполнитель решает свою задачу, подчас е по также разделяя ее на подзадачи. ни е ле Исполнители ед а спр Р д ач о дза Частные результаты общего результата производится Для получения еп композиция, интеграция частных результатов, ни ше соответствующих выделенным задачам. Ре я ци те гра Ин За общий результат отвечает агент-интегратор (чаще Интегратор тот же Субординатор). всего, это Общий результат
  • 10. Коммуникация агентов Стандарты коммуникационных протоколов Сетевой (низкоуровневый): WAP, TPC/IP, XML/HTTP Высокоуровневый: FIPA-ACL, KQML (Knowledge Query Manipulation Language) Уровень приложений (application). Что говорить, кому говорить, когда говорить и тд - Запрос: KQML (stream-all :content “(PRICE ? my-profolio ?price)” :receiver stock-server :language LPROLOG :ontology NYSE) - Запрос: FIPA (inform :sender agent1 :receiver stock-server :content (price good 200 150) :language sl :ontology hpl-auction)
  • 11. Язык запросов к RDF хранилищам. (SPARQL) Задачи: - Извлечение имеющихся в хранилище знаний – запросами к хранилищу (asking, querying). - Применением логического вывода над имеющимися знаниями (reasoning, entailment). Синтаксис запроса (SPARQL) v_list – список имен переменных SELECT <v_list> ontologyURI – ссылка на онтологию template_list – список шаблонов FROM <ontologyURI> filter_expr – ограничения на значения переменных WHERE {<template_list>. FILTER <filter_expr>}
  • 13. Agent Building Tools and Platforms - Java Agent DEvelopment Framework (JADE) http://jade.tilab.com/ - Jason(Java SE) http://jason.sourceforge.net/ - Aglobe (Java SE) http://agents.felk.cvut.cz/aglobe - Mobile agent platform Aglet (IBM) http://www.research.ibm.com/trl/aglets/
  • 14. Java Agent DEvelopment Framework http://jade.tilab.com JADE – это ПО промежуточного слоя предлагает промежуточный сетевой уровень, который позволяет JAVA объектам, находящемся на распределенных сайтах эффективно общаться
  • 15. Java Agent DEvelopment Framework http://jade.tilab.com JADE включает в себя: •среду реального времени, в которой агентны JADE могут «сущестовать». •библиотеку классов, которые разработчик может использовать для разработки агентов. •набор графических инструментов, который позволяет администрировать и отслеживать активность запущенных агентов. •ряд инструментов (tools), которые поддерживают фазы исправления ошибок (debugging) и развертывания (deployment) системы.
  • 16. Java Agent DEvelopment Framework http://jade.tilab.com JADE представляет: - программную среду разработки мультиагентных систем и приложений, Область применения: мобильные сети, web, промышленное применение (планирование и логистика, маркетинговые исследования онлайн торгвля), исследования технологии агентов. - одна из немногих платформ полностью реализует FIPA-стандарты (есть библиотека протоколов согласно стандартам FIPA) для интеллектуальных агентов, что упрощает разработку мультиагентных систем и совместимость с другими мультиагентными системами - программную среду для создания распределенных мультиагентных приложений; и интеллект, и инициатива, и информация, и ресурсы, и контроль могут быть полностью распределены по мобильным терминалам также как и по компьютерам выделенной сети. - программную среду, полностью написанную на языке программирования Java, с использованием таких продвинутых возможностей как Java RMI, Java CORBA IDL, Java Serialization и Java Reflection API.
  • 17. Java Agent DEvelopment Framework http://jade.tilab.com - набор прикладных программных интерфейсов (API), которые не зависят ни от базового устройства сети, ни от версии платформы Java, в процессе исполнения данное ПО предоставляет одни и те же API для окружений Java EE, Java SE, Java ME. - лицензия: LGPL. - интеграция и управление платформой в IDE Eclipse. - легко интегрируется с плагинами механизмы интеллекта доступны через: BDI и FSM, JadeX, Jason и др. интегрируется с плагинами Semantic Web и Web Services, интеграция с системами бизнес правил для создания интеллектуальных систем (Jess, Drools), RDFCodec и AgentOWL, интеграция с jsp - поддержка онтологий (jade.content package), которые агенты могут использовать для обмена сообщениями. - связь с коммерческими структурами: http://jade.tilab.com/theboard-members.htm (Telecom Italia Lab, Motorola, Whitestein Technologies AG, Profactor GmbH, France Telecom R&D), платформа для исследований во многих университетах...
  • 18. Основные инструменты агентной архитектуры JADE Каждый экземпляр JADE во время исполнения называется контейнером (так как он «содержит» определенный набор агентов). Группа активных контейнеров называется платформой и предоставляет однородный слой, который прячет от агентов и от разработчиков приложений сложность платформы. Обычно на каждом хосте размещают по одному контейнеру,и каждый контейнер работает в отдельном процессе ОС. В системе может быть только один главный контейнер, который представляет собой точку начальной загрузки платформы. В итоге можно связать несколько отдельных платформ так, что их агенты смогут обмениваться сообщениями. Таким образом, агентная платформа является распределенной.
  • 20. Основные инструменты JADE Главный контейнер создается первым, все созданные позже контейнеры должны быть зарегистрированы в главном контейнере, контейнер содержит таблицу контейнеров (CT-container table). CT-container table – в данной таблице хранятся ссылки на объекты и транспортные адреса всех контейнеров, входящих в состав платформы. Внутри каждого контейнера содержится: • GADT (global agent descriptor table) – это регистр агентов платформы, в котором хранятся их текущий статус и местоположение. • LADT (local agent descriptor table) – тоже самое что и GADT, но для агентов контейнера.
  • 21. Основные инструменты JADE - Если другой основной контейнер был запущен где-либо в сети, он представит собой другую платформу в которой новые нормальные контейнеры имеют возможность зарегистрироваться. При этом: - Агенты идентифицируются по уникальному имени и при условии, что они знают имя друг друга. - Агенты могут общаться напрямую: внутри одного контейнера, в различных контейнерах внутри одной платформы или в различных платформах. - Основной контейнер отличается тем, что он содержит два специальных (системных) агента: - AMS (Agent Management System) – данный агент управляет всей платформой. - "White Pages" содержит имена, обеспечивает доступ агентам к сервису белых страниц - поддерживает набор агентов на платформе, обеспечивает взаимодействие - DF (Directory Facilitator) – регистрация сервисов и поиск агента по сервису. - "Yellow Pages" деловая информацию агентов, они могут зарегистрировать свои услуги - поддерживает сотрудничество набора агентов на уровне предоставляемых сервисов
  • 24. Основные инструменты JADE Remote Monitoring Agent (RMA) - показывает состояние агентной платформы (Agent Platform) и предлагает разнообразные инструменты администрирования, исправление ошибок и тестирование приложений. Dummy Agent - служит для инспектирования обмена сообщениями между агентами. Этот агент позволяет посылать ACL-сообщения агентам, получать и управлять поступающими от агентов сообщениями, читать и хранить полученную информацию. Sniffer Agent - средство, созданное для слежения за сообщениями, обмен которыми происходит в среде JADE. Introspector Agent - средство мониторинга жизненного цикла агента. Socket Proxy Agent - средство, предназначенное для установки коммуникаций с удаленными клиентами. Агент позволяет поддерживать 50 параллельных подключений. Каждое входящее сообщение парсится, проверяется его адресат по листингу агентных имен, и передается агенту в пункт назначения.
  • 25. Сервис обмена сообщениями агентов Диаграмма асинхронного обмена сообщениями: Средством поддержки способности к взаимодействию программных компонентов являются: •средства межпроцессных взаимодействий; •механизм вызова удалённых процедур; •архитектура раcпределённых брокеров в технологии CORBA. В том случае если агенты находятся в разных контейнерах - используется RMI (Java Remote Method Invocation). В случае межплатформенного сценария взаимодействие - осуществляется по ACC (Agent Communication Channel).
  • 26. Сервис обмена сообщениями агентов Сервис обмена сообщениями одна из основополагающих частей архитектуры платформы JADE: •Сервис основан на асинхронной передаче сообщений. •Используемая(т.е. между гетерогенными сущностями, который ничего не знают друг о коммуникаций, модель коммуникаций для распределенных и слабосвязанных друге). • Каждый агент имеет свой «почтовый ящик» - очередь входящих сообщений, куда помещаются все направленные агенту сообщения. • В тот момент, когда сообщение помещается в очередь входящих сообщений, агент оповещается об этом. • Идентификатором служит имя агента (нет необходимости указывать ссылку на объект- получатель) и, как следствие, нет временной зависимости между общающимися агентами. • Не требуется, чтобы отправитель и получатель были запущены в одно и тоже время. • Получатель даже может еще не существовать или может быть не известен явно отправителю, т.е. отправитель может знать только свойство получателя.
  • 27. Сервис обмена сообщениями агентов Сообщения, которыми обмениваются агенты имеют языковой формат ACL определенный FIPA - международным стандартом взаимодействия агентов, включает обязательные поля: •Отправитель сообщения. •Список получателей. •Цель общения ( ). REQUEST, INFORM, QUERY_IF, CFP, PROPOSE, ACCEPT_PROPOSAL, REJECT_PROPOSAL •Содержание т.е. фактическая информация, содержащаяся в сообщении. •Язык содержания, т.е. какой синтаксис используется, чтобы выразить содержание. •Онтология, то есть словарь символов, используемых в их тот же смысл значения(как отправитель так и получатель должны приписывать содержании и их символам в сообщении , чтобы корректно понимать его). •Некоторые поля, используемые дляответов, таких, как conversation-ID,reply-with,in-reply- указания таймаутов для получения контроля нескольких одновременных разговоров и to,reply-by.
  • 28. Сервис обмена сообщениями агентов Сообщения вкладываются одно в другое, снизу вверх, образуя своего рода «надсетевой стек» протоколов обмена знаниями: •Envelope – конверт: o отправитель; o получатель; o тип сообщения. •Message – сообщение, описанное на языке ACL: o язык выражения данных; o тип кодирования данных; o онтология - описывает набор символов сообщения. •Content – содержимое сообщения, описанное на языке ACL: o данные; o знания (факты, правила, запросы). •Symbol – символы, содержащиеся в описании ACL, могут соответствовать определенной онтологии.
  • 29. Модель сообщения определенная в стандарте FIPA и используемая в JADE
  • 30. Поведение агентов Мультиагентные системы делятся на кооперативные, конкурирующие и смешанные: - Агенты в кооперативных системах являются частями единой системы и решают подзадачи одной общей задачи: - Конкурирующие агенты являются самостоятельными системами, хотя для достижения определенных целей они могут объединять свои усилия, воспринимать цели и команды от других агентов, но при этом поддержка связи с другими агентами не является обязательной. - Под смешанными агентными системами подразумеваются конкурирующие агенты, способные к кооперации, подсистемы которых также реализуются по агентной технологии
  • 31. Поведение агентов JADE Для отработки реакции на события агент имеет поведения. Типы поведений: - простое поведение: • единожды исполняемое поведение; • циклически исполняемое поведение; - сложное поведение: • поведение-триггер; • последовательное поведение; • параллельное поведение. Поведения, как и сам агент, являются Java-классами, следовательно, в процессе разработки программист имеет возможность комбинировать существующие типы поведений и наполнять их необходимым функционалом.
  • 32. Поведение агентов JADE Для отработки реакции на события агент имеет поведения. По умолчанию в системе каждому агенту платформы соответствует один поток. Агент может отрабатывать несколько поведений одновременно. Обработка поведений происходит не по приоритетам (как java потоки), а совместно. Очередность исполнения отдельных простых поведений не гарантируется, для этого нужно использовать поведения специальных типов или синхронизацию. Поведениям не выделяются отдельные потоки, так как при большом количестве поведений происходит постоянное переключение между ними, а переключение между потоками происходит относительно долго (вызов поведения как метода происходит быстрее, чем переключение потоков).
  • 34.
  • 37. Создание агентно-ориентированного приложения JADE Рассмотрим предметную область "Электронная Торговля": - Сценарий включает в себя агенты, продающие продукты - покупающие продукты - Для создания агента в JADE необходимо определить класс, наследующий класс jade.core.Agent, реализовав метод setup(): import jade.core.Agent; public class ProductBuyerAgent extends Agent { protected void setup() { // Printout a welcome message System.out.println("Hello! Buyer-agent " +getAID().getName()+" is ready."); } } - Каждый агент идентифицируется «идентификатором агента», представленным экземпляром класса jade.core.AID. - Метод getAID() класса Agent позволяет получить идентификатор агента. AID объект включает уникальное имя и адреса. - Зная имя агента, его AID может быть получен следующим образом: AID id = new AID("nickname", AID.ISLOCALNAME); (локальое имя не глобальное)
  • 38. Запуск и завершение работы Результат выполнения
  • 39. Запуск и завершение работы Результат выполнения
  • 40. Результат выполнения -gui testbuyer:com.sysiq.s.maistrenko.buyer.ProductBuyerAgent (Program Arguments) Aug 3, 2012 2:19:15 PM jade.core.Runtime beginContainerINFO: ---------------------------------- This is JADE 4.2.0 - revision 6574 of 2012/06/20 15:38:00 downloaded in Open Source, under LGPL restrictions, at http://jade.tilab.com/---------------------------------------- Aug 3, 2012 2:19:15 PM jade.imtp.leap.LEAPIMTPManager initializeINFO: Listening for intra- platform commands on address:- jicp://192.168.0.102:1099 Aug 3, 2012 2:19:16 PM jade.core.BaseService initINFO: Service jade.core.management.AgentManagement initialized Aug 3, 2012 2:19:16 PM jade.core.BaseService initINFO: Service jade.core.messaging.Messaging initialized Aug 3, 2012 2:19:16 PM jade.core.BaseService initINFO: Service jade.core.resource.ResourceManagement initialized Aug 3, 2012 2:19:16 PM jade.core.BaseService initINFO: Service jade.core.mobility.AgentMobility initialized Aug 3, 2012 2:19:16 PM jade.core.BaseService initINFO: Service jade.core.event.Notification initialized Aug 3, 2012 2:19:16 PM jade.mtp.http.HTTPServer <init>INFO: HTTP-MTP Using XML parser com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser Aug 3, 2012 2:19:16 PM jade.core.messaging.MessagingService bootINFO: MTP addresses: http://old:7778/acc Aug 3, 2012 2:19:16 PM jade.core.AgentContainerImpl joinPlatformINFO: -------------------------------------- Agent container Main-Container@192.168.0.102 is ready.-------------------------------------------- Hello! Buyer-agent testbuyer@192.168.0.102:1099/JADE is ready.
  • 41. Результат выполнения Первая часть выведенного текста - заголовок JADE, который выводится каждый раз при запуске среды JADE. Далее идёт инициализация сервисов ядра. Наконец, сообщение о том, что контейнер с именем «Main-Container» был успешно запущен. Когда среда JADE и наш агент запущены, выводится приветствие.  Имя агента «testbuyer», как мы задали в Program Arguments.  Имя платформы “192.168.0.102:1099/JADE” автоматически присваивается, используя хост и порт, на котором запущена JADE.  Имя в JADE имеет формат: <nickname>@<platform-name>
  • 42. Передача аргументов агенту Необходимо, чтобы агент ProductByuerAgent получил название продукта, аргументы могут быть получены как массив Object, с помощью метода getArguments() класса Agent: public class ProductBuyerAgent1 extends Agent { // The title of the product to buy private String targetProductTitle; // The list of known seller agents private AID[] sellerAgents = { new AID("seller1", AID.ISLOCALNAME),new AID("seller2", AID.ISLOCALNAME)}; // Put agent initializations here protected void setup() { // Printout a welcome message System.out.println("Hello! Buyer-agent "+getAID().getName()+" is ready."); // Get the title of the Product to buy as a start-up argument Object[] args = getArguments(); if (args != null && args.length > 0) { targetProductTitle = (String) args[0]; System.out.println("Trying to buy "+targetProductTitle); } else { // Make the agent terminate immediately System.out.println("No product title specified"); doDelete(); } } // Put agent clean-up operations here protected void takeDown() { // Printout a dismissal message System.out.println("Buyer-agent "+getAID().getName()+" terminating."); } }
  • 43. Результат выполнения -gui testbuyer: com.sysiq.s.maistrenko.buyer.ProductBuyerAgent1(Canon-EOS-1D-Mark-II-N-digital- camera) (Program Arguments) Aug 3, 2012 3:50:12 PM jade.core.Runtime beginContainerINFO: ---------------------------------- This is JADE 4.2.0 - revision 6574 of 2012/06/20 15:38:00 downloaded in Open Source, under LGPL restrictions, at http://jade.tilab.com/---------------------------------------- ... ... Hello! Buyer-agent testbuyer@192.168.0.102:1099/JADE is ready. Trying to buy Canon-EOS-1D-Mark-II-N-digital-camera Aug 3, 2012 3:50:13 PM jade.core.AgentContainerImpl joinPlatformINFO: -------------------------------------- Agent container Main-Container@192.168.0.102 is ready.-------------------------------------------- Даже если не предусмотрены никакие действия после печати приветствия, наш агент всё ещё запущен. Для того, чтобы завершить его работу нужно использовать метод doDelete(). Подобно методу setup() (который вызывается средой JADE сразу после создания агента, и в который необходимо включить инициализацию агента), метод takeDown() вызывается перед завершением работы агента. Он должен содержать операции по очистке.
  • 44. Добавление поведения для агента - Поведение представляет собой задачу, которую агент может выполнять. - Оно реализуется как объект класса, наследующего класс jade.core.behaviours.Behaviour. - Для того чтобы агент мог исполнять задачу, описываемую объектом поведения, достаточно добавить поведение агента с помощью метода addBehaviour() класса Agent - Фактическая работа, которую агент должен делать, как правило, осуществляется в рамках «поведения агента».
  • 45. Согласование поведений Агент может выполнять одновременно несколько моделей поведения. Расписание нескольких моделей поведения в агенте имеет не упреждающий характер, а кооперативный. Поведение исполняется по расписанию, его метод action() вызывается и работает до тех пор, пока не завершится. Это имеет преимущества: •Позволяет использовать один поток для одного агента (производительность) •Обеспечивает большую производительность, т.к. переход от одного поведения к другому намного быстрее, чем переключение между потоками •Устраняет все вопросы синхронизации между параллельными поведениями, которые должны получить доступ к одним и тем же ресурсам •Когда происходит переключение поведения, статус агента не включает какой-либо сохраненной информации и поэтому можно получить его "снимок" •Устойчивость и мобильность -передовые возможностями JADE, сохранение статуса агентов для последующего восстановления, или передачи его в другой контейнер для удаленного исполнения
  • 46.
  • 47. 3 типа поведений Циклический public class MyCyclicBehaviour extends CyclicBehaviour { Одноразовый public void action() { public class MyOneShotBehaviour extends // perform operation Y OneShotBehaviour { } public void action() { } // perform operation X } Операция Y будет выполняться в цикле бесконечно, } пока агент, с таким поведением, не будет завершён В данном примере операция X выполнится единожды Общий public class MyThreeStepBehaviour extends Behaviour { private int step = 0; public void action() { switch (step) { case 0: // perform operation X step++; Операции X, Y и Z выполняются друг за break; другом, после них поведение завершается. case 1: // perform operation Y Jade предоставляет возможность соединять step++; простые формы поведения для создания break; более сложных. (SequentialBehaviour, case 2: // perform operation Z ParallelBehaviour и FSMBehaviour) step++; break; } } public boolean done() { return step == 3; } }
  • 48. Планирование операций Jade предоставляет два готовых класса: WakerBehaviour, TickerBehaviour (в пакете jade.core.behaviours): public class MyAgent extends Agent { protected void setup() { System.out.println(“Adding waker behaviour”); addBehaviour( new WakerBehaviour(this, 10000) { protected void handleElapsedTimeout() { // perform operation X } } ); } } В данном случае операция X выполнится через 10 секунд после того, как была выведена надпись «Adding waker behaviour» public class MyAgent extends Agent { protected void setup() { addBehaviour( new TickerBehaviour(this, 10000) { protected void onTick() { // perform operation Y } } ); } } Операция Y выполняется с периодом в 10 секунд.
  • 49. Поведение для ProductBuyerAgent protected void setup() { // Println a welcome message System.out.println(“Hello! Buyer- agent “+getAID().getName()+” is ready.”); // Get the title of the product to buy as a start-up argument Object[] args = getArguments(); if (args != null && args.length > 0) { targetProductTitle = (String) args[0]; System.out.println("Trying to buy
  • 50. Поведение для ProductSellerAgent public class ProductSellerAgent extends Agent { // The catalogue of Products for sale (maps the title of a Product to its price) private Hashtable catalogue; // The GUI by means of which the user can add Products in the catalogue private ProductSellerGui myGui; // Put agent initializations here protected void setup() { // Create the catalogue catalogue = new Hashtable(); // Create and show the GUI myGui = new ProductSellerGui(this); myGui.show(); // Add the behaviour serving requests for offer from buyer agents addBehaviour(new OfferRequestsServer()); // Add the behaviour serving purchase orders from buyer agents addBehaviour(new PurchaseOrdersServer()); } protected void takeDown() { // Close the GUI myGui.dispose(); // Printout a dismissal message System.out.println("Seller-agent "+getAID().getName()+" terminating."); } // This is invoked by the GUI when the user adds a new Product for sale public void updateCatalogue(final String title, final int price) { addBehaviour(new OneShotBehaviour() { public void action() { catalogue.put(title, new Integer(price)); } } ); } }
  • 51. работа с сообщениями Отправка сообщения другому агенту, состоит в заполнении ACLMessage объекта и вызове метода send() класса Agent. ACLMessage msg = new ACLMessage(ACLMessage.INFORM); msg.addReceiver(new AID("Buyer", AID.ISLOCALNAME)); msg.setLanguage("English"); msg.setOntology("cameras"); msg.setContent("Canon-EOS-1D-Mark-II-N-digital-camera"); send(msg); Получение сообщений, выбор сообщений из очереди сообщений public void action() { MessageTemplate mt = MessageTemplate.MatchPerformative(ACLMessage.CFP); ACLMessage msg = myAgent.receive(mt); if (msg != null) { // Получено сообщение типа CFP. // (call for proposal) вид сообщений для сообщений о том, // что покупатель-агент направляет продавцу-агенту // просьбу выдать ему предложение на продукт // Обработка сообщения ... } else { block(); } }
  • 52. AgentOWL OWL-онтологии могут содержать описания классов, свойств и их экземпляров AgentOWL - java библиотека, разработанная для поддержки RDF/OWL моделей для Jade агентов, используется для описания модели знаний агента(generic agent model). Основывается на пяти основных элементах: •Resources, •Actions, •Actors, •Context •Events Спецификация FIPA Ontology Service specification определяет основные аспекты моделирование взаимодействия агентов, основанного на онтологиях. OWL (Web Ontology Language, (World Wide Web Consortium, W3C)) – язык представления онтологий в Web.