Авторизация

Голосование

Какие разделы наполнять в первую очередь?
 
Многоагентные системы PDF
Автор: Администратор   
20.10.2009 09:00

Технологии не стоят на месте разработка программного обеспечения все более усложняется технологически, чтобы облегчить понимание и простоту сопросвождения. Многоагентные системы одна из этих новых технологий, она позволяет несколько обстрагироваться от кода и упростить многозадачные ПО. Информация о многоагентых систем (MAC) уже достаточно, поэтому я хочу описать непосредственно разработку просто агента в многоагентной системе JADE...

 

Многоагентные системы JADE

 

Установка ПО:

 

Для создания агента понадобится многоагентная система JADE 3.6, Java Developer Kit 6.1.6 и IDE в которой будем непосредственно программировать – NetBeans в нашем случае это версия 6.7.1 (я лично качал JDK сразу вместе с Net Beans). Сначала Распаковываем JADE в в любую папку(например C:\JADE), мы можем создать своего первого агента на платформе Java Agent Development Framework. Сначала необходимо создать Java-проект нашего агента в среде Net Beans и подключить JADE к этому проекту.

 

Подключение JADE:

 

Сначала создаем JAVA проект, который назовем к примеру JavaAgent. При создании проекта не забудьте выключить галочку на Create Main Class, это отключит создание главного класса, т.к. мы будем создавать все классы вручную.

Создаем комплект библиотек для подключение через меню Service(или Tools) – Libraries, далее «New Library» т.е. создаем свой набор библиотек, назовем его, к примеру, «Jade». Далее добавляем библиотеки JADE кнопочкой «Add JAR/Folder» и указываем путь к библиотекам JADE. Это четыре библиотеки: http.jar, iiop.jar, jade.jar, jadeTools.jar.

Затем подключаем их к проекту, для этого в свойствах проекта выбираем libraries и выбираем «Add Library…»
Результат наших действий:

 

Подключение библиотек JADE в Net Beans

 

 

Разработка Агентов:

 

Мы создадим простейший пример многоагентной системы, где будут 2 агента, один посылает сообщения всем, второй отвечает на это сообщение.

Теперь необходимо создать первого агента(Агент А), который будет отвечать на запрос, для этого щелкаем правой кнопкой мыши по Source Packages и выбираем New -> Java Packages, назовем его A, теперь создаем в этом пакете Java Class - его назовем AMain. Делаем тоже самое и для Агента B(Пакет B, ява клас BClass)

На данный момент пока просто вставьте код для AMain и BClass, который указан в конце. Там есть комментарии в принципе можно разобраться, если нет, я постараюсь дописать текст

Перед тем как запустить нашего агента необходимо настроить параметры запуска проекта. Это можно сделать выбрав в свойствах проекта в свойстве «Run».

 

Опции запуска проекта Net Beans для JADE

 

Для этого вписываем главный класс как jade.Boot, а в аргументах указываем ГУЙ системы jade и те агенты какие грузим, а грузим мы agenta из пакета A, класса AMain и agentb из пакета B класса BClass В итоге получаем (-gui jade.Boot agenta:A.AMain agentb:B.BClass):

 

 

Теперь можно запускать приложение!

Графический интерфейс платформы администрирования с использованием RMA агента выглядит следующим образом:

 

Графический интерфейс JADE для просмотра агентов

 

Код программы:

 

Пакет А (Агент А):

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package A;

import jade.core.Agent;
import jade.core.AID;
import jade.domain.AMSService;
import jade.domain.FIPAAgentManagement.*;
import jade.core.behaviours.*;
import jade.lang.acl.*;

/**
*
* @author TRSteep
*/
public class AMain extends Agent {

public void setup() {
System.out.println("Привет! агент "+getAID().getName()+" готов.");
addBehaviour(new CyclicBehaviour(this) // Поведение агента исполняемое в цикле
{

public void action() {
ACLMessage msg = receive();
if (msg != null) {
System.out.println( " – " + myAgent.getLocalName()
+ " received: "
+ msg.getContent() );
} //Вывод на экран локального имени агента и полученного сообщения
block();
//Блокируем поведение, пока в очереди сообщений агента не появится хотя бы одно сообщение
}
});
AMSAgentDescription [] agents = null;
try {
SearchConstraints c = new SearchConstraints();
c.setMaxResults(new Long(-1));
agents = AMSService.search(this, new AMSAgentDescription(), c);
} catch (Exception e) {
System.out.println( "Problem searching AMS: " + e);

e.printStackTrace();
}

for(int i=0; i<4; i++) {
AID agentID = agents[i].getName();
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
msg.addReceiver(agentID); // id агента которому отправляем сообщение
msg.setLanguage("English"); //Язык
msg.setContent("Ping"); //Содержимое сообщения

send(msg); //отправляем сообщение
}
}
}


Пакет В (Агент В):

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package B;

import jade.core.Agent;
import jade.core.behaviours.*;
import jade.lang.acl.*;
/**
*
* @author TRSteep
*/
public class BClass extends Agent {

protected void setup() {
System.out.println("Привет! агент "+getAID().getName()+" готов.");
addBehaviour(new CyclicBehaviour(this) {

public void action() {
ACLMessage msg = receive();
if (msg != null) {
System.out.println(" – " +
myAgent.getLocalName() +
" received: "
+ msg.getContent() );
//Вывод на экран локального имени агента и полученного сообщения
ACLMessage reply = msg.createReply();
reply.setPerformative( ACLMessage.INFORM );
reply.setContent( "Pong");
//Содержимое сообщения
send(reply); //отправляем сообщения
}
block();
}
});
}

}

 

 

Диаграмма взаимодействия межу агентами:

Схема работы агентов

 

Скачать исходные коды Агена A, Агента B

Обновлено 10.01.2010 04:46
 
sape

Разное