Опубликован: 12.07.2013 | Уровень: для всех | Доступ: платный | ВУЗ: Санкт-Петербургский государственный университет
Самостоятельная работа 3:

Знакомство с JADE

< Лекция 3 || Самостоятельная работа 3 || Лекция 4 >
Аннотация: Знакомство с мультиагентной платформой JADE, установка платформы на рабочий компьютер, освоение протокола передачи данных между агентами на платформе, запуск главного контейнера платформы и нового агента, на примере агентов "PingAgent" - запрос-ответ.

Цель лабораторной работы

Презентацию к лабораторной работе Вы можете скачать здесь.

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

Инструкция по выполнению лабораторной работы

Подготовка

Перед началом работы необходимо запустить среду разработки Eclipse IDE, загрузить и установить JDK и JADE. Запустить платформу можно двумя способами: из командной строки или в среде разработки. Как и в предыдущих лабораторных работах мы будем использовать среду разработки Eclipse IDE. Для запуска из командной строке необходимо обратится к инструкции на официальном сайте платформы JADE по ссылке: http://jade.tilab.com/doc/index.html.

Для начала знакомства с JADE необходимо установить JDK и запустить Eclipse IDE (см. лаб. работу 1). В Eclipse IDE создать рабочую папку и открыть новый Java проект. Далее, открыть новый файл java, в который будем записывать программный код агента.

Перед тем как создавать агента нам потребуется установить платформу JADE. Скачать архив с платформой можно с официального сайта JADE по ссылке: http://jade.tilab.com/. Но необходимо будет зарегистрироваться и получить подтверждение регистрации по электронной почте. Скачайте последнюю версию платформы. Распакуйте архив и откройте его. Архив содержит 3 папки:

  • JADE-bin-4.X – папка с исполняемыми файлами;
  • JADE-bin-4.X – папка с исполняемыми файлами;
  • JADE-example-4.X – папка с примерами.

Создайте отдельную папку, например, с названием Jade, и скопируйте содержимое всех трех папок из архива в новую папку (для упрощения адреса лучше всего новую папку создать в корне диска).

В результате мы получаем готовую платформу. Проверьте расположение таких файлов как:

  • build.xml – находится в корне папки Jade (созданной нами);
  • jade.jar – находится в папке lib/;
  • папки исходных файлов examples/ и jade/ - находятся в src/.

Перед запуском платформы и дальнейшей работы с ней хотелось бы обозначить следующие моменты в архитектуре системы. Основными элементами мультиагентной системы являются Агенты. Мультиагентная платформа состоит из контейнеров, в которых "живут" Агенты. Контейнер может не содержать ни одного агента или содержать сколько угодно агентов. Каждый контейнер обладает своим сетевым адресом и именем. Есть особый контейнер – главный контейнер – без него платформа не работает. Главный контейнер имеет несколько особенностей. Перечислим их:

  • он должен быть создан первым;
  • он должен включать в себя двух специальных агентов:
    • AMS (agent management system) – агент, который управляет остальными агентами; он способен создавать и останавливать агентов;
    • DF (directory facilitation) – по сути представляет из себя желтые страницы, в котором записываются адреса, имена и возможности агентов в системе.

Выполнение работы

Для запуска платформы необходимо запустить Eclipse IDE, создать новую рабочую среду и в ней открыть новый Java проект (рис. 6.10).

Новый Java проект в Eclipse IDE

Рис. 6.10. Новый Java проект в Eclipse IDE

Далее переходим в окно создания проекта, задаем имя и нажимаем Next. В следующем окне необходимо подключить к нашему проекту библиотеки Jade (рис. 6.11)

Библиотеки Jade в проекте

Рис. 6.11. Библиотеки Jade в проекте

Для подключения библиотек необходимо нажать Add External JARs и указать путь к библиотекам. Они находятся в папке \lib, куда были скопированы все файлы архивов платформы Jade. После этого, нажимаем Finish.

Новый класс

Рис. 6.12. Новый класс

Теперь к проекту подключены библиотеки JADE. Создаем нового Агента из примера "PingAgent". Для этого необходимо создать новый класс в папке \src (рис. 6.12).

Теперь вводим информацию, создаем новый класс в папку Project/src в пакете sprintintel с именем PingAgent. Также на этом этапе необходимо записать в поле "Superclass" следующую информацию: java.lang.Agent и нажать Finish.

Сейчас у нас есть новый Агент и подключены необходимые библиотеки. Необходимо задать программный код Агента. Для этого открываем PingAgent.java из папки examples\PingAgent, которая находится в директории, в которую распакованы архивы Jade. Копируем все содержимое примера в нашего агента. Посмотрим на код нашего агента, в нем есть ошибки, которые необходимо исправить (рис. 6.13).

Ошибка в коде Агента

Рис. 6.13. Ошибка в коде Агента

Эта ошибка вполне понятна. Необходимо исправить имя пакета, который мы используем. В нашем случае – это sprintintel. Далее необходимо обязательно сохранить изменения в файле Агента.

Для того чтобы запустить Агента и мультиагентную платформу переходим меню Run Configuration. В нем добавляем новую конфигурацию запуска Java-приложения. На рис. 6.14 и рис. 6.15 показаны параметры главного класса (MainClass) – jade.Boot и видно название настоящего проекта. В поле Program Argument вкладки Arguments вводим значении "–gui". Таким образом, мы определили, что нам необходимо запустить платформу и главный контейнер, который уже содержит дополнительный класс нашего агента PingAgent.

Конфигурация запуска, вкладка Arguments

Рис. 6.14. Конфигурация запуска, вкладка Arguments
Конфигурация запуска. Вкладка Main

Рис. 6.15. Конфигурация запуска. Вкладка Main

Нажимаем на кнопку Run и запускаем нашу платформу. Платформа запущена, и мы видим пользовательский интерфейс, в котором запущена платформа и два базовых агента AMS и DF. Чтобы добавить в главный контейнер нашего Агента "Ping", необходимо войти во вкладку Action и добавить класс нашего Агента (рис. 6.17).

Пользовательский интерфейс платформы Jade

Рис. 6.16. Пользовательский интерфейс платформы Jade
Class Агента Ping Agent в пакете sprintintel

Рис. 6.17. Class Агента Ping Agent в пакете sprintintel

Наш агент теперь находится в главном контейнере. В чем же суть Агента в примере PingAgent? Основная задача этого агента – это отправлять ответ в виде слова "Ping" при запросе в виде слова "Pong". В коде эта часть выглядит так:

 public void action() {
  ACLMessage  msg = myAgent.receive();
  if(msg != null){
    ACLMessage reply = msg.createReply();
    if(msg.getPerformative()== ACLMessage.REQUEST){
	String content = msg.getContent();
	if ((content != null) && 
     (content.indexOf("ping") != -1)){
	  myLogger.log(Logger.INFO, "Agent
 "+getLocalName()+" - Received PING Request 
from "+msg.getSender().getLocalName());
	  reply.setPerformative(ACLMessage.INFORM);
	  reply.setContent("pong");
      }
    }
  }
}

При запуске агента в главном контейнере он обращается в "желтые страницы" – агент DF, который записывает у себя адрес этого агента. Все запросы осуществляются через DF агента. Таким образом, в систему могут входить и выходить новые агенты и быть "на связи".

Теперь проверим работу нашего Агента и отправим ему запрос с помощью DummyAgent – готовый агент с пользовательским интерфейсом, посредством которого возможно отправлять сообщения на другие агенты и получать от них ответы. Для запуска DummyAgent необходимо нажать кнопку StartDummyAgent в ряду кнопок быстрого доступа пользовательского интерфейса платформы. В самом Агенте необходимо составить запрос в правильной форме, как это показано на рис.6.18

DummyAgent, запрос на Ping агента

Рис. 6.18. DummyAgent, запрос на Ping агента
Ответ на запрос DummyAgent

Рис. 6.19. Ответ на запрос DummyAgent

После правильного заполнения запроса необходимо нажать на кнопку: отправить сообщение. DummyAgent позволяет отправляет запрос с одного точного адреса агента на точный адрес другого агента даже если они находится в различных контейнерах. Но эти агенты должны быть прописаны в одной мультиагентной системе (т.е. известны DF агентам). Справа, нажав на значок очки, в белом поле пользовательского интерфейса DummyAgent, можно увидеть, пришел ли ответ и какого он содержания (рис.6.19).

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

Агент Sniffer

Рис. 6.20. Агент Sniffer

Задания для самостоятельной работы

  1. Создать еще одного агента Ping1 и отправить запрос двум агентам одновременно
  2. Изменить текст сообщения запроса и ответа.
  3. Создать Container1 (не главный) и создать в нем агента.
  4. Запустить агентов в примере папки src/examples/bookTrading.

Выводы

В этой главе были описаны основные принципы разработки мультиагентных систем и разобран пример работы с платформой JADE.

< Лекция 3 || Самостоятельная работа 3 || Лекция 4 >
Николай Корнеев
Николай Корнеев

В самостоятельной работе №1 нет примера lab01 файла labAtom32.rar. Ссылка которая есть в презентации

www.math.spbu.ru/user/gran/Atom32/lab01

не работает?

Мурат Фазлиев
Мурат Фазлиев
Россия, г. Таганрог
Олег Стельмах
Олег Стельмах
Россия, г. Таганрог