1 / 45

JADE: J ava A gent D evelopment E nvironment Framework

JADE: J ava A gent D evelopment E nvironment Framework. http:// jade.tilab.com / Versão atual : 4.3.0 03/2013. O q ue são Agentes ?. O q ue são Agentes ?.

lulu
Download Presentation

JADE: J ava A gent D evelopment E nvironment Framework

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JADE:Java Agent Development Environment Framework http://jade.tilab.com/ Versãoatual: 4.3.0 03/2013

  2. O quesãoAgentes? @LES/PUC-Rio

  3. O quesãoAgentes? • Agente de software é uma entidade que está situada em um ambiente e capaz de ação autônoma neste ambiente para atingir seus objetivos projetados. Wooldridge & Jennings • A entidade Agente é qualquer coisa que possa perceber o ambiente e agir sobre o mesmo. Russell & Norvig @LES/PUC-Rio

  4. O quesãoAgentes? • Autonomia: • Operam sem intervenção humana ou de outros agentes • Tem algum tipo de controle sobre suas ações e seu estado interno @LES/PUC-Rio

  5. O quesãoAgentes? • Características: • Autonomia • Reatividade • Pró-atividade • Interatividade • Adaptação • Aprendizado • Racionalidade • Mobilidade @LES/PUC-Rio

  6. O quesãoAgentes? • Características: • Autonomia • Reatividade • Pró-atividade • Interatividade • Adaptação • Aprendizado • Racionalidade • Mobilidade JADE @LES/PUC-Rio

  7. JADE • Jade é um middleware para o desenvolvimento de sistemas multi-agentes, que suporta: • Um modelo assíncrono de programação de agentes • Comunicação entre agentes de uma mesma plataforma ou de plataformas diferentes. • Mobilidade e segurança. @LES/PUC-Rio

  8. JADE • Jade é também uma plataforma para execução de agentes, que inclui: • Um ambiente de execução (container) onde os agentes JADE "vivem" e possam ser executados. • Uma biblioteca de classes de desenvolvimento de agentes. • Um conjunto de ferramentas gráficas que permite a administração e o monitoramento das atividades dos agentes em execução. @LES/PUC-Rio

  9. Contêiner e Plataforma • Contêiner • Instância de um ambiente Jade • É onde os agentes executam • Plataforma • Conjunto de contêineres ativos @LES/PUC-Rio

  10. Contêineres e Plataformas @LES/PUC-Rio

  11. Plataforma • O Jade segue o modelo da FIPA (Foundation for Intelligent Physical Agents) @LES/PUC-Rio

  12. Plataforma • Agente que exerce o controle sobre o acesso e o uso da plataforma • Existe um único AMS por plataforma • Mantém a lista de identificadores dos agentes (AID) que estão na plataforma • Todo agente deve se registrar no AMS @LES/PUC-Rio

  13. Plataforma • Oferece o serviço de páginas amarelas na plataforma @LES/PUC-Rio

  14. Plataforma • Sistema JADE suporta a comunicação entre vários agentes FIPA e fornece uma implementação padrão da comunicação linguagem FIPA-ACL, o que facilita a comunicação entre os agentes e permite a detecção de serviços do sistema. @LES/PUC-Rio

  15. Plataforma @LES/PUC-Rio

  16. Modelo Computacional do Agente • Um agente é multi-tarefa, onde os serviços são executados concorrentemente • Cada serviço de um agente deve ser implementado como um ou mais comportamentos @LES/PUC-Rio

  17. A Classe Agent • A classe base para a definição de agentes • Um agente Jade é uma instância de uma classe Java que estende a classe Agent • Já oferece todas as interações básicas da plataforma (registro, configuração, etc...) @LES/PUC-Rio

  18. A Classe Agent • Oferece um conjunto de métodos para a implementação do comportamento do agente • A classe Agent oferece um scheduler (não acessível ao programador) que gerencia automaticamente o agendamento dos comportamentos @LES/PUC-Rio

  19. O Ciclo de Vida de um Agente @LES/PUC-Rio

  20. Criando um Agente Jade • Jade gerencia a criação de um novo agente com os seguintes passos: • O construtor do agente é executado • O agente recebe um identificador do AMS • Ex: agente@localhost:1099/JADE • Entra no estado Ativo • É executado o método setup() • Método responsável por inicializar os comportamentos do agente @LES/PUC-Rio

  21. Um Exemplo package examples.hello; import jade.core.Agent; public class HelloWorldAgent extends Agent { protected void setup() { // Mostra uma mensagem de Hello System.out.println("Hello World! Meu nome eh " + getAID().getName()); } } prompt> set CLASSPATH=%CLASSPATH%;.;[CLASSPATH JADE JARS] prompt> java jade.Boot -gui Agente1:examples.hello.HelloWorldAgent @LES/PUC-Rio

  22. As Tarefas do Agente – Classe Behaviour • Todas as tarefas dos agentes são executadas por meio de "comportamentos" • Um comportamento é um objeto da classe Behaviour • O agente adiciona um comportamento com o método addBehaviour() • Comportamentos podem ser adicionados a qualquer momento • No método setup() • Dentro de outros comportamentos @LES/PUC-Rio

  23. As Tarefas do Agente – Classe Behaviour • Método action() • Método que define as operações que são executadas quando o comportamento está em execução • Método done() • Método que especifica se um comportamento foi completado e deve ser removido do pool de comportamentos que um agente está executando @LES/PUC-Rio

  24. O Esquema de um Comportamento public class UmComportamento extends Behaviour { public void action() { while (true) { // Código do Comportamento } } public boolean done() { return true; } } @LES/PUC-Rio

  25. A Execução de Comportamentos • Um agente pode executar diversos comportamentos concorrentemente • O scheduling de comportamentos não é preemptivo • Quando um comportamento está agendado para execução, o método action é chamado e executa até retornar • Quem deve definir quando um agente deve passar da execução de um comportamento para outro é o desenvolvedor @LES/PUC-Rio

  26. A Execução de um Agente @LES/PUC-Rio

  27. A Hierarquia de Comportamentos • Comportamentos Simples • Modelam os comportamentos atômicos • OneShotBehaviour e CyclicBehaviour • Comportamentos Compostos • Modelam comportamentos que são compostos de outros comportamentos. Assim, as operações que devem ser executadas não estão definidas neste comportamento em si, mas nos comportamentos filhos que o compõem • SequentialBehaviour, ParallelBehaviour e FSMBehaviour @LES/PUC-Rio

  28. A Hierarquia de Comportamentos @LES/PUC-Rio

  29. Comportamentos Simples • OneShotBehaviour • Modela comportamentos que só devem executar uma vez e que não podem ser bloqueados (parar o comportamento até que algum evento ocorra) • CyclicBehaviour • Modela comportamentos atômicos que devem ser executados eternamente @LES/PUC-Rio

  30. Comportamentos Compostos • SequentialBehaviour • Executa seus sub-comportamentos seqüencialmente e termina quando todos estes estiverem terminados • ParallelBehaviour • Executa seus sub-comportamentos concorrentemente e termina quando uma condição particular sobre o conjunto de sub-comportamentos é alcançada • FSMBehaviour • Executa seus sub-comportamentos como uma Máquina de Estados Finita (FSM). Quando uma tarefa acaba, sua saída é usada para se calcular a transição para a próxima tarefa. O comportamento termina quando uma tarefa final é executada @LES/PUC-Rio

  31. Esquemas de Comportamentos Simples // OneShotBehaviour public class MyOneShotBehaviour extends OneShotBehaviour { public void action() { // Executar a operação X } } // CyclicBehaviour public class MyCyclicBehaviour extends CyclicBehaviour { public void action() { // Executar a operação Y } } @LES/PUC-Rio

  32. Esquema Genérico de Comportamento public class MyTwoStepBehaviour extends Behaviour { private int step = 0; public void action() { switch (step) { case 0: // Executar a operação X step++; break; case 1: // Executar a operação Y step++; break; } } public boolean done() { return step == 2; } } @LES/PUC-Rio

  33. A Comunicação entre Agentes @LES/PUC-Rio

  34. A Comunicação entre Agentes • A troca de mensagens é assíncrona e usa a FIPA ACL (Agent Communication Language) @LES/PUC-Rio

  35. Mensagem ACL Conteúdo da mensagem inform ( Início da mensagem :sender agent1 :receiver hpl-auction-server :content (price (bid good02) 150) Tipo de ato de comunicação (Performativa) :in-reply-to round-4 :reply-with bid04 :language FIPA SL :ontology hpl-auction Controle de conversação ) A Linguagem ACL - Exemplo @LES/PUC-Rio

  36. A Linguagem ACL – Performativas INFORM “A porta está aberta” QUERY “A porta está aberta?” REQUEST “Abra a porta para mim” AGREE “OK, vou abrir a porta para você” REFUSE “Eu não vou abrir a porta” FAILURE “Eu não consigo abrir a porta” @LES/PUC-Rio

  37. A Linguagem ACL – Performativas PROPOSE “Eu posso abrir a porta para você, pelo seguinte preço” SUBSCRIBE “Quero ser avisado quando a porta for aberta” NOT-UNDERSTOOD “Porta? Que porta?” @LES/PUC-Rio

  38. Enviando Mensagens • Deve-se criar e montar um objeto ACLMessage e chamar o método send() do agente ACLMessage msg = new ACLMessage( ACLMessage.INFORM ); msg.addReceiver( new AID( "Agente2", AID.ISLOCALNAME ) ); msg.setLanguage( "English" ); msg.setOntology( "Weather-forecast-ontology" ); msg.setContent( "Today it’s raining" ); send(msg); @LES/PUC-Rio

  39. Recebendo Mensagens • Para receber uma mensagem usa-se o método receive(), que recupera a primeira mensagem da fila de mensagens do agente • Este método remove a mensagem da pilha, ou retorna null caso esteja vazia ACLMessage msg = receive(); if (msg != null) { // Processar a mensagem } @LES/PUC-Rio

  40. O Serviço de Páginas Amarelas – Agente DF @LES/PUC-Rio

  41. O Serviço de Páginas Amarelas – Agente DF • Todo agente deve registrar seu serviço no DF (Directory Facilitator) • Só existe um DF em cada plataforma Jade @LES/PUC-Rio

  42. Registrando um Serviço no DF • Deve-se criar um objeto ServiceDescription e chamar o método register() de um DF (usualmente no método setup() do agente) protected void setup() { ... // Registrar um agente vendedor de livros no DF DFAgentDescription dfd = new DFAgentDescription(); dfd.setName(getAID()); ServiceDescription sd = new ServiceDescription(); sd.setType("book-selling"); sd.setName("JADE-book-trading"); dfd.addServices(sd); try { DFService.register(this, dfd); } catch (FIPAException fe) { fe.printStackTrace(); } ... } @LES/PUC-Rio

  43. Removendo um Serviço do DF • Chamar o método deregister() do DF (usualmente no método takeDown() do agente) protected void takeDown() { // Saindo do DF try { DFService.deregister(this); } catch (FIPAException fe) { fe.printStackTrace(); } // Mostrando uma mensagem de saída System.out.println("Agente vendedor " + getAID().getName() + " terminando"); } @LES/PUC-Rio

  44. Procurando por Serviços no DF • Criar um objeto DFAgentDescription e chamar o método search() do DF protected void setup() { ... // Criando um TickerBehaviour para procurar agentes vendedores a cada minuto addBehaviour(new TickerBehaviour(this, 60000) { protected void onTick() { // Atualizando a lista de agentes vendedores DFAgentDescription template = new DFAgentDescription(); ServiceDescription sd = new ServiceDescription(); sd.setType("book-selling"); template.addServices(sd); try { DFAgentDescription[] result = DFService.search(myAgent, template); sellerAgents = new AID[result.length]; for (int i = 0; i < result.length; ++i) sellerAgents[i] = result[i].getName(); } catch (FIPAException fe) { fe.printStackTrace(); } ... } ); ... } @LES/PUC-Rio

  45. Concluindo... • Jade é um framework de desenvolvimento de sistemas multi-agentes • Implementa o modelo de infraestrutura FIPA com registro, páginas amarelas e mecanismo de envio de mensagens • Uso de AMS (Agent Management System), DF e de FIPA ACL • Ciclo de vida de um agente • setup(), addBehaviour(), takeDown() • Abordagem orientada a tarefas: o comportamento dos agentes é decomposto em pedaços menores (Behaviour) que são adicionados ao agente quando necessário @LES/PUC-Rio

More Related