JADE: Java Agent Development Environment Framework

Slides:



Advertisements
Apresentações semelhantes
JADE/JADEX Maíra Gatti
Advertisements

Eduardo Kinder Almentero Herbet de Souza Cunha
Agentes de Software Introdução
Sistemas distribuídos
Reflexão Marco Antonio Arquiteto de Software Novembro/2007.
Sockets Marco Antonio – marcoreis.net Arquiteto de Software Dezembro/2007.
Capítulo 1 Introdução.
Prof. Thiago Pereira Rique
1 ZEUS Agentes Inteligentes e Sistemas Multi-agente Ferramentas de Contrução de Agentes IST- 2003/2004 Ana Paiva.
Diagramas de Seqüência
Jade Java Agent Development Framework Versão atual: 3.5 (25 Junho 2007)
Jade e Jadex Equipe do Curso de ES para SMA
Padrão de Projeto Iterator
RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren,
PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena
Orientação a Objetos: Encapsulamento e Classificação
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
Viviane Torres da Silva
Programação Básica em Java
Polimorfismo e Classes Abstratas Profa
Programação Concorrente
JADE Java Agent DEvelopment Framework
Classes e objetos Modelagem
Classes e objetos P. O. O. Prof. Grace.
Estrutura de Dados em Java
CRIANDO OBJETOS EM JAVA
Concorrência em Java Threads em Java.
Introdução a linguagem Python
Concorrência em Java Threads em Java.
Concorrência em Java Threads em Java.
Desenvolvendo Sistemas Multiagentes com JADE
JAVA Orientação a Objetos
Eduardo Kinder Almentero Herbet de Souza Cunha
Extensão do Framework CORMAS para lidar com Agentes Normativos Marx Leles Viana Seminário de SMA 2013/1.
Colaboração por Dispositivos Móveis para o GeoRisc
JAVA Linguagem Ambiente de Desenvolvimento
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Entendendo as definições de classe
Chamada Remota de Procedimentos
Desenvolvimento de Aplicações CORBA
1 Mobilidade de Código com μcode Projeto Giga Alexandre Lages
Plataforma JADE Mauricio S Freitas.
FIPA THE FOUNDATION FOR INTELLIGENT PHYSICAL AGENTS
Orientação a Objetos e Java Graduação em Ciência da Computação
Professora Lucélia Oliveira
T. D. S. I. PARA WEB Prof. Emmanuel Nolêto. Java RMI.
Pilhas Profa. Nádia Félix.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Listas Simplesmente Encadeadas
Wagner Santos C. de Jesus
Orientação a Objetos usando Java
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Java Kickstart, day 2 Semelhanças com linguagem C.
Aula Prática 4 Monitoria IP/CC (~if669).
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
Plano de Aula Agentes que Interagem Conceitos Básicos FIPA ACL
Análise e Projeto de Sistemas
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
JADE: Java Agent Development Environment Framework
Bruno Inojosa MCP .NET Framework
Modificadores Programação II.
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Fundamentos de Engenharia de SW Diagramas da UML Usados no Projeto de Software.
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Agentes de Software Introdução
Transcrição da apresentação:

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

O que são Agentes? 25/03/2017 @LES/PUC-Rio

O que são Agentes? 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 25/03/2017 @LES/PUC-Rio

O que são Agentes? Autonomia: Operam sem intervenção humana ou de outros agentes Tem algum tipo de controle sobre suas ações e seu estado interno 25/03/2017 @LES/PUC-Rio

O que são Agentes? Características: Autonomia Reatividade Pró-atividade Interatividade Adaptação Aprendizado Racionalidade Mobilidade 25/03/2017 @LES/PUC-Rio

O que são Agentes? Características: JADE Autonomia Reatividade Pró-atividade Interatividade Adaptação Aprendizado Racionalidade Mobilidade JADE 25/03/2017 @LES/PUC-Rio

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. Provisioning – Fornecimento. Embedding – Embutir, mapear, hospedar Adaptive – Adaptativo Overview – visao global 3/25/2017 @LES/PUC-Rio

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. Provisioning – Fornecimento. Embedding – Embutir, mapear, hospedar Adaptive – Adaptativo Overview – visao global 3/25/2017 @LES/PUC-Rio

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

Contêineres e Plataformas 25/03/2017 @LES/PUC-Rio

Plataforma O Jade segue o modelo da FIPA (Foundation for Intelligent Physical Agents) 25/03/2017 @LES/PUC-Rio

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 25/03/2017 @LES/PUC-Rio

Plataforma Oferece o serviço de páginas amarelas na plataforma 25/03/2017 @LES/PUC-Rio

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. 25/03/2017 @LES/PUC-Rio

Plataforma 25/03/2017 @LES/PUC-Rio

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 25/03/2017 @LES/PUC-Rio

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...) 25/03/2017 @LES/PUC-Rio

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 25/03/2017 @LES/PUC-Rio

O Ciclo de Vida de um Agente 25/03/2017 @LES/PUC-Rio

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 25/03/2017 @LES/PUC-Rio

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 25/03/2017 @LES/PUC-Rio

Destruindo um Agente Jade Mesmo que não esteja fazendo coisa alguma, o agente continua executando Para terminar um agente, deve-se executar o método doDelete() que chama o método takeDown() Serve para remover todas as referências ao agente da plataforma 25/03/2017 @LES/PUC-Rio

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 25/03/2017 @LES/PUC-Rio

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 25/03/2017 @LES/PUC-Rio

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

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 25/03/2017 @LES/PUC-Rio

A Execução de um Agente 25/03/2017 @LES/PUC-Rio

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 25/03/2017 @LES/PUC-Rio

A Hierarquia de Comportamentos 25/03/2017 @LES/PUC-Rio

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 25/03/2017 @LES/PUC-Rio

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 25/03/2017 @LES/PUC-Rio

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

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 } public boolean done() { return step == 2; 25/03/2017 @LES/PUC-Rio

A Comunicação entre Agentes 25/03/2017 @LES/PUC-Rio

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

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

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” 25/03/2017 @LES/PUC-Rio

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?” 25/03/2017 @LES/PUC-Rio

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); 25/03/2017 @LES/PUC-Rio

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 } 25/03/2017 @LES/PUC-Rio

O Serviço de Páginas Amarelas – Agente DF 25/03/2017 @LES/PUC-Rio

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 25/03/2017 @LES/PUC-Rio

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(); } } 25/03/2017 @LES/PUC-Rio

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"); 25/03/2017 @LES/PUC-Rio

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(); } } ); 25/03/2017 @LES/PUC-Rio

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 25/03/2017 @LES/PUC-Rio