Java Framework for Multi-agent Systems

2,061 views

Published on

A multi-agent system (MAS) is a system composed of multiple interacting intelligent agents within a given environment that generated a lot of excitement in recent years because of its promise to become a new paradigm for conceptualizing, designing, and implementing software systems. We'll talk about JADE (Java Agent Development Framework) and what could be created using it.

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,061
On SlideShare
0
From Embeds
0
Number of Embeds
192
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Java Framework for Multi-agent Systems

  1. 1. Java Framework for Multi-Agent Systemsобзор и использование
  2. 2. Задачи?! Какое решение можнопредложить в случае:•где есть необходимость постоянного мониторингадинамических изменений в наблюдаемой системе;•где централизованное управление информационнымиресурсами неэффективно•в зависимости от состояний и поведения средынеобходима возможность динамической адаптацииповедения программных объектов.
  3. 3. Многоагентная система (МАС), англ. Multi-agent system (MAS) • • Цель. Для системы принятия решений разработка многоагентной модели связана с возможностью наблюдения, сбора, структурирования информации о динамических изменениях в наблюдаемой системе. • Проблема. МАС существуют для решения таких проблем, которые сложно или невозможно решить с помощью одного агента или монолитной системы.Многоагентная система (МАС) - это система, образованная несколькимивзаимодействующими интеллектуальными агентами.
  4. 4. АгентПод агентом понимается программный агент, он базируется на теорииискусственного интеллекта и отталкивается от понятия интеллектуальный агент.интеллектуальные агенты - сущности, действующие в изменяемой среденаблюдающие и собирающие информацию о ней.• Полностью независимы, выполняя свои задачи когда их действия направлены надостижение какой-либо цели.• Самостоятельно выполняют задание но зависят от других агентов или людей когда задачиим ставятся.
  5. 5. Возможности программных агентов • • Обмен сообщениями (коммуникация). Способность агентом поставить задачи другим агентам. • Активное поведение. Способность Читать и модифицировать значения глобальных переменных, осуществлять операции ввода/вывода, реагировать на исключительные ситуации. • Мобильность. Гибкие возможности по модификации адаптивности и устойчивости. Способность после каждой модификации под определенное поведение и специализацию, имеет возможность отката.Автономность. Способность агентом выполнять действия самостоятельно.
  6. 6. Теоретические проблемы МАС• Описание, декомпозиция и распределение задач между агентами в МАС. Синтез (композиция) решений.• Обеспечение взаимодействия (координация, коммуникация, кооперация или коалиция) агентов в МАС. Построение языков и протоколов коммуникации.• Согласование решений и координация действий агентов. Планирование в МАС. Разрешение конфликтов между агентами из- за ресурсов• Описание представлений агентами своих внутренних состояний, а также знание о планах и действиях других агентов.• Описание различных точек зрения, целей и предпочтений агентов в интересах представления их в МАС
  7. 7. Некоторая концепция МАС• Агент может иметь лишь частичное представление об общей задаче, должен решать лишь некоторую ее подзадачу.• Наиболее полное описание предметной области формируется внутри системы поддержки принятия решений.• Требуется взаимодействие множества агентов, для решения сколько-нибудь сложной проблемы, которое неотделимо от организации МАС.• В МАС задачи по определенным правилам распределяются между всеми агентами, каждый входит в специализированную группу.• Агенты должны быть специализированными. Распределение заданий означает присвоение каждому агенту некоторой роли.
  8. 8. Необходимые виды специализированных агентов • • Добывающие информацию агенты. Действуют в хранилище данных обнаруженной информации для последующего использования (например в стратегиях, по увеличению продаж или привлечения покупателей). • Пространственные клиенты (поисковый робот). Просматривают Интернет ресурсы, собирают информацию о товарах и услугах • Субагенты. Службы, обрабатывающие и обучающие агенты, для создания структур и баз данных агентов или среды.Целенаправленные агенты (субординаторы). Хранят информацию о тех ситуациях, которыедля них желательны. Дает агенту способ выбрать путь, который приведет к нужной цели.
  9. 9. Распределение задач Субординатор (руководитель) проводит декомпозицию Общая задача исходной проблемы на отдельные задачи. Субординатор Эти задачи распределяются между агентами- ия исполнителями. зи ц мпо ПодзадачиД е ко ач д за д Каждый агент-исполнитель решает свою задачу, подчас е по также разделяя ее на подзадачи. ни е ле Исполнители ед а спрР д ач о дза Частные результаты общего результата производится Для получения еп композиция, интеграция частных результатов, ни ше соответствующих выделенным задачам. Ре я ци те гра Ин За общий результат отвечает агент-интегратор (чаще Интегратор тот же Субординатор). всего, это Общий результат
  10. 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. 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>}
  12. 12. Общий вид
  13. 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. 14. Java Agent DEvelopment Frameworkhttp://jade.tilab.comJADE – это ПО промежуточного слоя предлагает промежуточный сетевой уровень,который позволяет JAVA объектам, находящемся на распределенных сайтахэффективно общаться
  15. 15. Java Agent DEvelopment Frameworkhttp://jade.tilab.comJADE включает в себя:•среду реального времени, в которой агентны JADE могут«сущестовать».•библиотеку классов, которые разработчик можетиспользовать для разработки агентов.•набор графических инструментов, который позволяетадминистрировать и отслеживать активностьзапущенных агентов.•ряд инструментов (tools), которые поддерживают фазыисправления ошибок (debugging) и развертывания(deployment) системы.
  16. 16. Java Agent DEvelopment Frameworkhttp://jade.tilab.comJADE представляет:- программную среду разработки мультиагентных систем и приложений, Областьприменения: мобильные сети, web, промышленное применение (планирование илогистика, маркетинговые исследования онлайн торгвля), исследования технологииагентов.- одна из немногих платформ полностью реализует FIPA-стандарты (есть библиотекапротоколов согласно стандартам FIPA) для интеллектуальных агентов, что упрощаетразработку мультиагентных систем и совместимость с другими мультиагентнымисистемами- программную среду для создания распределенных мультиагентных приложений; иинтеллект, и инициатива, и информация, и ресурсы, и контроль могут быть полностьюраспределены по мобильным терминалам также как и по компьютерам выделенной сети.- программную среду, полностью написанную на языке программирования Java, сиспользованием таких продвинутых возможностей как Java RMI, Java CORBA IDL, JavaSerialization и Java Reflection API.
  17. 17. Java Agent DEvelopment Frameworkhttp://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 (TelecomItalia Lab, Motorola, Whitestein Technologies AG, Profactor GmbH, France Telecom R&D),платформа для исследований во многих университетах...
  18. 18. Основные инструменты агентнойархитектуры JADEКаждый экземпляр JADE во время исполнения называетсяконтейнером (так как он «содержит» определенный набор агентов).Группа активных контейнеров называется платформой ипредоставляет однородный слой, который прячет от агентов и отразработчиков приложений сложность платформы.Обычно на каждом хосте размещают по одному контейнеру,и каждыйконтейнер работает в отдельном процессе ОС.В системе может быть только один главный контейнер, которыйпредставляет собой точку начальной загрузки платформы.В итоге можно связать несколько отдельных платформ так, что ихагенты смогут обмениваться сообщениями. Таким образом, агентнаяплатформа является распределенной.
  19. 19. Основные инструменты агентнойархитектуры JADE
  20. 20. Основные инструменты JADEГлавный контейнер создается первым, все созданные позже контейнерыдолжны быть зарегистрированы в главном контейнере, контейнер содержит таблицуконтейнеров (CT-container table).CT-container table – в данной таблице хранятся ссылки на объекты и транспортныеадреса всех контейнеров, входящих в состав платформы.Внутри каждого контейнера содержится:• GADT (global agent descriptor table) – это регистр агентов платформы, в которомхранятся их текущий статус и местоположение.• LADT (local agent descriptor table) – тоже самое что и GADT, но для агентов контейнера.
  21. 21. Основные инструменты JADE- Если другой основной контейнер был запущен где-либо в сети, онпредставит собой другую платформу в которой новые нормальныеконтейнеры имеют возможность зарегистрироваться. При этом:- Агенты идентифицируются по уникальному имени и при условии, что они знают имя другдруга.- Агенты могут общаться напрямую: внутри одного контейнера, в различных контейнерахвнутри одной платформы или в различных платформах.- Основной контейнер отличается тем, что он содержит дваспециальных (системных) агента:- AMS (Agent Management System) – данный агент управляет всей платформой.- "White Pages" содержит имена, обеспечивает доступ агентам к сервису белых страниц- поддерживает набор агентов на платформе, обеспечивает взаимодействие- DF (Directory Facilitator) – регистрация сервисов и поиск агента по сервису.- "Yellow Pages" деловая информацию агентов, они могут зарегистрировать свои услуги- поддерживает сотрудничество набора агентов на уровне предоставляемых сервисов
  22. 22. Основные инструменты JADE
  23. 23. Основные инструменты JADE
  24. 24. Основные инструменты JADERemote Monitoring Agent (RMA) - показывает состояние агентной платформы (AgentPlatform) и предлагает разнообразные инструменты администрирования, исправлениеошибок и тестирование приложений.Dummy Agent - служит для инспектирования обмена сообщениями между агентами. Этотагент позволяет посылать ACL-сообщения агентам, получать и управлять поступающимиот агентов сообщениями, читать и хранить полученную информацию.Sniffer Agent - средство, созданное для слежения за сообщениями, обмен которымипроисходит в среде JADE.Introspector Agent - средство мониторинга жизненного цикла агента.Socket Proxy Agent - средство, предназначенное для установки коммуникаций судаленными клиентами. Агент позволяет поддерживать 50 параллельных подключений.Каждое входящее сообщение парсится, проверяется его адресат по листингу агентныхимен, и передается агенту в пункт назначения.
  25. 25. Сервис обмена сообщениями агентовДиаграмма асинхронного обмена сообщениями:Средством поддержки способности к взаимодействию программных компонентовявляются:•средства межпроцессных взаимодействий;•механизм вызова удалённых процедур;•архитектура раcпределённых брокеров в технологии CORBA.В том случае если агенты находятся в разных контейнерах - используется RMI (Java Remote Method Invocation).В случае межплатформенного сценария взаимодействие - осуществляется по ACC (Agent Communication Channel).
  26. 26. Сервис обмена сообщениями агентовСервис обмена сообщениями одна из основополагающих частейархитектуры платформы JADE:•Сервис основан на асинхронной передаче сообщений.•Используемая(т.е. между гетерогенными сущностями, который ничего не знают друг окоммуникаций, модель коммуникаций для распределенных и слабосвязанныхдруге).• Каждый агент имеет свой «почтовый ящик» - очередь входящих сообщений, кудапомещаются все направленные агенту сообщения.• В тот момент, когда сообщение помещается в очередь входящих сообщений, агентоповещается об этом.• Идентификатором служит имя агента (нет необходимости указывать ссылку на объект-получатель) и, как следствие, нет временной зависимости между общающимисяагентами.• Не требуется, чтобы отправитель и получатель были запущены в одно и тоже время.• Получатель даже может еще не существовать или может быть не известен явноотправителю, т.е. отправитель может знать только свойство получателя.
  27. 27. Сервис обмена сообщениями агентовСообщения, которыми обмениваются агенты имеют языковой форматACL определенный FIPA - международным стандартомвзаимодействия агентов, включает обязательные поля:•Отправитель сообщения.•Список получателей.•Цель общения ( ). REQUEST, INFORM, QUERY_IF, CFP, PROPOSE, ACCEPT_PROPOSAL, REJECT_PROPOSAL•Содержание т.е. фактическая информация, содержащаяся в сообщении.•Язык содержания, т.е. какой синтаксис используется, чтобы выразить содержание.•Онтология, то есть словарь символов, используемых в их тот же смысл значения(какотправитель так и получатель должны приписывать содержании и их символам всообщении , чтобы корректно понимать его).•Некоторые поля, используемые дляответов, таких, как conversation-ID,reply-with,in-reply-указания таймаутов для получения контроля нескольких одновременных разговоров иto,reply-by.
  28. 28. Сервис обмена сообщениями агентовСообщения вкладываются одно в другое, снизу вверх, образуя своегорода «надсетевой стек» протоколов обмена знаниями:•Envelope – конверт: o отправитель; o получатель; o тип сообщения.•Message – сообщение, описанное на языке ACL: o язык выражения данных; o тип кодирования данных; o онтология - описывает набор символов сообщения.•Content – содержимое сообщения, описанное на языке ACL: o данные; o знания (факты, правила, запросы).•Symbol – символы, содержащиеся в описании ACL, могутсоответствовать определенной онтологии.
  29. 29. Модель сообщения определенная встандарте FIPA и используемая в JADE
  30. 30. Поведение агентовМультиагентные системы делятся накооперативные, конкурирующие и смешанные:- Агенты в кооперативных системах являются частями единой системы и решаютподзадачи одной общей задачи:- Конкурирующие агенты являются самостоятельными системами, хотя для достиженияопределенных целей они могут объединять свои усилия, воспринимать цели и командыот других агентов, но при этом поддержка связи с другими агентами не являетсяобязательной.- Под смешанными агентными системами подразумеваются конкурирующие агенты,способные к кооперации, подсистемы которых также реализуются по агентнойтехнологии
  31. 31. Поведение агентов JADEДля отработки реакции на события агент имеет поведения. Типыповедений:- простое поведение:• единожды исполняемое поведение;• циклически исполняемое поведение;- сложное поведение:• поведение-триггер;• последовательное поведение;• параллельное поведение.Поведения, как и сам агент, являются Java-классами,следовательно, в процессе разработки программист имеетвозможность комбинировать существующие типы поведений инаполнять их необходимым функционалом.
  32. 32. Поведение агентов JADEДля отработки реакции на события агент имеет поведения.По умолчанию в системе каждому агенту платформы соответствует один поток.Агент может отрабатывать несколько поведений одновременно. Обработкаповедений происходит не по приоритетам (как java потоки), а совместно.Очередность исполнения отдельных простых поведений не гарантируется, дляэтого нужно использовать поведения специальных типов или синхронизацию.Поведениям не выделяются отдельные потоки, так как при большом количествеповедений происходит постоянное переключение между ними, а переключение междупотоками происходит относительно долго (вызов поведения как метода происходитбыстрее, чем переключение потоков).
  33. 33. Поведение агентов JADE
  34. 34. Подключение Jade к Eclipse IDE
  35. 35. Подключение Jade к Eclipse IDE
  36. 36. Создание агентно-ориентированногоприложения 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); (локальое имя не глобальное)
  37. 37. Запуск и завершение работыРезультат выполнения
  38. 38. Запуск и завершение работыРезультат выполнения
  39. 39. Результат выполнения-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:1099Aug 3, 2012 2:19:16 PM jade.core.BaseService initINFO: Servicejade.core.management.AgentManagement initializedAug 3, 2012 2:19:16 PM jade.core.BaseService initINFO: Servicejade.core.messaging.Messaging initializedAug 3, 2012 2:19:16 PM jade.core.BaseService initINFO: Servicejade.core.resource.ResourceManagement initializedAug 3, 2012 2:19:16 PM jade.core.BaseService initINFO: Servicejade.core.mobility.AgentMobility initializedAug 3, 2012 2:19:16 PM jade.core.BaseService initINFO: Servicejade.core.event.Notification initializedAug 3, 2012 2:19:16 PM jade.mtp.http.HTTPServer <init>INFO: HTTP-MTP Using XML parsercom.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParserAug 3, 2012 2:19:16 PM jade.core.messaging.MessagingService bootINFO: MTP addresses:http://old:7778/accAug 3, 2012 2:19:16 PM jade.core.AgentContainerImpl joinPlatformINFO:--------------------------------------Agent container Main-Container@192.168.0.102 isready.--------------------------------------------Hello! Buyer-agent testbuyer@192.168.0.102:1099/JADE is ready.
  40. 40. Результат выполненияПервая часть выведенного текста - заголовок JADE, которыйвыводится каждый раз при запуске среды JADE.Далее идёт инициализация сервисов ядра.Наконец, сообщение о том, что контейнер с именем «Main-Container»был успешно запущен.Когда среда JADE и наш агент запущены, выводится приветствие.  Имя агента «testbuyer», как мы задали в Program Arguments.  Имя платформы “192.168.0.102:1099/JADE” автоматически присваивается, используя хост и порт, на котором запущена JADE.  Имя в JADE имеет формат:<nickname>@<platform-name>
  41. 41. Передача аргументов агентуНеобходимо, чтобы агент 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."); }}
  42. 42. Результат выполнения-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-cameraAug 3, 2012 3:50:13 PM jade.core.AgentContainerImpl joinPlatformINFO:--------------------------------------Agent container Main-Container@192.168.0.102 isready.--------------------------------------------Даже если не предусмотрены никакие действия после печати приветствия, наш агент всёещё запущен.Для того, чтобы завершить его работу нужно использовать метод doDelete().Подобно методу setup() (который вызывается средой JADE сразу после создания агента, и в который необходимо включитьинициализацию агента), метод takeDown() вызывается перед завершением работы агента. Он должен содержать операции поочистке.
  43. 43. Добавление поведения для агента- Поведение представляет собой задачу, которую агент можетвыполнять.- Оно реализуется как объект класса, наследующего классjade.core.behaviours.Behaviour.- Для того чтобы агент мог исполнять задачу, описываемую объектомповедения, достаточно добавить поведение агента с помощью методаaddBehaviour() класса Agent- Фактическая работа, которую агент должен делать, как правило, осуществляется врамках «поведения агента».
  44. 44. Согласование поведенийАгент может выполнять одновременно несколько моделей поведения.Расписание нескольких моделей поведения в агенте имеет неупреждающий характер, а кооперативный.Поведение исполняется по расписанию, его метод action()вызывается и работает до тех пор, пока не завершится. Это имеетпреимущества:•Позволяет использовать один поток для одного агента (производительность)•Обеспечивает большую производительность, т.к. переход от одного поведения к другомунамного быстрее, чем переключение между потоками•Устраняет все вопросы синхронизации между параллельными поведениями, которыедолжны получить доступ к одним и тем же ресурсам•Когда происходит переключение поведения, статус агента не включает какой-либосохраненной информации и поэтому можно получить его "снимок"•Устойчивость и мобильность -передовые возможностями JADE, сохранение статусаагентов для последующего восстановления, или передачи его в другой контейнер дляудаленного исполнения
  45. 45. 3 типа поведений Циклический public class MyCyclicBehaviour extends CyclicBehaviour { Одноразовый public void action() { public class MyOneShotBehaviour extends // perform operation YOneShotBehaviour { } 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; } }
  46. 46. Планирование операций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 секунд.
  47. 47. Поведение для ProductBuyerAgentprotected 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-upargument Object[] args = getArguments(); if (args != null && args.length > 0) {targetProductTitle = (String) args[0]; System.out.println("Trying to buy
  48. 48. Поведение для ProductSellerAgentpublic 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));} } ); } }
  49. 49. работа с сообщениямиОтправка сообщения другому агенту, состоит в заполнении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(); }}
  50. 50. AgentOWLOWL-онтологии могут содержать описания классов, свойств и их экземпляров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.

×