Читайте также: |
|
package ExampleAMSDF;
import jade.Boot;
import jade.core.Profile;
import jade.core.Runtime;
import jade.core.ProfileImpl;
import jade.wrapper.ContainerController;
import jade.wrapper.AgentController;
// Главная программа
public class Main
{
public Main() {}
// Запуск двух агентов отправителя
public static void main(String[] args)
{
// Загрузка JADE-системы
String arg[] = {"-gui"};
Boot boot=new Boot(arg);
// Создание агентного контейнера (для локального хоста)
Profile p = new ProfileImpl();
p.setParameter(Profile.MAIN_HOST, "1-fcd36d9673f14");
p.setParameter(Profile.MAIN_PORT, "1099");
p.setParameter(Profile.CONTAINER_NAME, "MyContainer");
Runtime rt = Runtime.instance();
ContainerController cc = rt.createAgentContainer(p);
// Создание и запуск двух агентов отправителей,
// которые содержатся в главном контейнере
try
{
AgentController agent1 = ac.createNewAgent("Agent1", "SheetProductsOntology.RegisterAgent", null);
agent1.start();
AgentController agent2 = ac.createNewAgent("Agent2", "SheetProductsOntology.RegisterAgent", null);
agent2.start();
AgentController agent3 = ac.createNewAgent("Agent3", "SheetProductsOntology.SearchAgent", null);
agent3.start();
}
// Обработка исключительной ситуации
catch(Exception e) {e.printStackTrace();}
}
}
package ExampleAMSDF;
import jade.core.Agent;
import jade.core.behaviours.TickerBehaviour;
import jade.domain.FIPAAgentManagement.AMSAgentDescription;
import jade.domain.FIPAAgentManagement.DFAgentDescription;
import jade.domain.FIPAAgentManagement.ServiceDescription;
import jade.domain.FIPAAgentManagement.Property;
import jade.domain.FIPAAgentManagement.FIPAManagementOntology;
import jade.domain.AMSService;
import jade.domain.DFService;
import jade.domain.FIPAException;
import jade.domain.FIPANames;
// Агент-регистратор
public class RegisterAgent extends Agent
{
// модификация AMS-агентного описания,
// регистрация DF-агентного описания перед началом работы
protected void setup()
{
try
{
// модифицировать AMS-агентное описание
AMSAgentDescription amsad = new AMSAgentDescription();
amsad.setName(getAID());
amsad.setState("active");
amsad.setOwnership("FEDOROV");
AMSService.modify(this,amsad);
System.out.println(getLocalName()+
" MODIFY WITH THE AMS");
// зарегистрировать DF-агентное описание
DFAgentDescription dfad = new DFAgentDescription();
dfad.setName(getAID());
ServiceDescription sd = new ServiceDescription();
sd.setType("Sending");
sd.setName(getLocalName()+"Sending");
sd.setOwnership("FEDOROV");
sd.addLanguages(FIPANames.ContentLanguage.FIPA_SL);
sd.addOntologies(FIPAManagementOntology.NAME);
sd.addProtocols(
FIPANames.InteractionProtocol.FIPA_REQUEST);
sd.addProperties(new Property("company", "DonNTU"));
dfad.addServices(sd);
DFService.register(this, dfad);
System.out.println(getLocalName()+
" REGISTERED WITH THE DF");
} catch (FIPAException e) {e.printStackTrace();}
}
// дерегистрация DF-агентного описания по завершению работы
protected void takeDown()
{
try
{
DFService.deregister(this);
System.out.println(getLocalName()+
" DEREGISTERED WITH THE DF");
}
catch (FIPAException e) {e.printStackTrace();}
}
}
package ExampleAMSDF;
import jade.core.Agent;
import jade.core.behaviours.TickerBehaviour;
import jade.domain.FIPAAgentManagement.AMSAgentDescription;
import jade.domain.FIPAAgentManagement.DFAgentDescription;
import jade.domain.FIPAAgentManagement.ServiceDescription;
import jade.domain.FIPAAgentManagement.SearchConstraints;
import jade.domain.AMSService;
import jade.domain.DFService;
import jade.domain.FIPAException;
// Агент-поисковик
public class SearchAgent extends Agent
{
// добавить Ticker-поведение перед началом работы
protected void setup()
{
addBehaviour(new TickerBehaviourNew(this, 10000));
}
// Ticker-поведение агента
public class TickerBehaviourNew extends TickerBehaviour
{
// Конструктор
public CyclicBehaviourNew(Agent agent, long timeout)
{
super(agent, timeout);
}
// Действие агента (поиск агентов с заданными параметрами)
protected void onTick()
{
try
{
// искать агентов с владельцем FEDOROV
SearchConstraints sc = new SearchConstraints();
sc.setMaxResults(new Long(10));
AMSAgentDescription amsad1 = new AMSAgentDescription();
amsad1.setOwnership("FEDOROV");
AMSAgentDescription[] AMSresult1 = AMSService.search(myAgent,amsad1,sc);
for(int i=0;i<AMSresult1.length;++i)
System.out.println(AMSresult1[i].getName());
System.out.println("OWNER FEDOROV --------------");
// искать агентов с состоянием active
AMSAgentDescription amsad2 = new AMSAgentDescription();
amsad2.setState("active");
AMSAgentDescription[] AMSresult2 = AMSService.search(myAgent,amsad2,sc);
for(int i=0;i<AMSresult2.length;++i)
System.out.println(AMSresult2[i].getName());
System.out.println("ACTIVE STATE ---------------");
// искать агентов с типом службы Sending
DFAgentDescription dfad = new DFAgentDescription();
ServiceDescription sd = new ServiceDescription();
sd.setType("Sending");
dfad.addServices(sd);
DFAgentDescription[] DFresult = DFService.search(myAgent,dfad,sc);
for(int i=0;i<DFresult.length;++i)
System.out.println(DFresult[i].getName());
System.out.println("SENDING SERVICE ------------");
} catch (FIPAException e) {e.printStackTrace();}
}
}
}
Дата добавления: 2015-11-14; просмотров: 58 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Пример реализации параллельных действий для мультиагентной системы в программной среде JADE | | | Пример реализации работы с протоколом FIPA-Request для мультиагентной системы в программной среде JADE |