Новости
- Мета лабораторної роботи
- Інструкція по виконанню лабораторної роботи
- Виконання роботи
- Завдання для самостійної роботи
Анотація: Знайомство з мультиагентной платформою 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 ).
Мал.6.10.
Новий Java проект в Eclipse IDE
Далі переходимо у вікно створення проекту, задаємо ім'я і натискаємо Next. У наступному вікні необхідно підключити до нашого проекту бібліотеки Jade ( Мал. 6.11 )
Мал.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.
Мал.6.14.
Конфігурація запуску, вкладка Arguments
Мал. 6.15. Конфігурація запуску. вкладка Main
Натискаємо на кнопку Run і запускаємо нашу платформу. Платформа запущена, і ми бачимо призначений для користувача інтерфейс, в якому запущена платформа і два базових агента AMS і DF. Щоб додати в головний контейнер нашого Агента "Ping", необхідно увійти у вкладку Action і додати клас нашого Агента ( Мал. 6.17 ).
Мал.6.16.
Інтерфейс користувача на платформі Jade
Мал. 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
Мал.6.18.
DummyAgent, запит на Ping агента
Мал. 6.19. Відповідь на запит DummyAgent
Після правильного заповнення запиту необхідно натиснути на кнопку: відправити повідомлення. DummyAgent дозволяє відправляє запит з одного точної адреси агента на точну адресу іншого агента навіть якщо вони знаходиться в різних контейнерах. Але ці агенти повинні бути прописані в одній мультиагентной системі (тобто відомі DF агентам). Справа, натиснувши на значок окуляри, в білому полі призначеного для користувача інтерфейсу DummyAgent, можна побачити, чи прийшов відповідь і якого він змісту ( ріс.6.19 ).
Для того, щоб простіше було відслідковувати відправку повідомлень, можна запустити ще одного агента Sniffer, в якому відображаються стрілками надіслані повідомлення між агентами ( ріс.6.20 ).
Мал.6.20.
агент Sniffer
Завдання для самостійної роботи
- Створити ще одного агента Ping1 і відправити запит двом агентам одночасно
- Змінити текст повідомлення запиту і відповіді.
- Створити Container1 (не головний) і створити в ньому агента.
- Запустити агентів в прикладі папки src / examples / bookTrading.
висновки
У цьому розділі були описані основні принципи розробки мультиагентних систем і розібраний приклад роботи з платформою JADE.
У чому ж суть Агента в прикладі PingAgent?