JADE: Java Agent Development Environment Framework

Slides:



Advertisements
Apresentações semelhantes
Sistemas Operacionais
Advertisements

Sistemas Distribuídos
JADE/JADEX Maíra Gatti
Renata S.S. Guizzardi Inteligência Artificial – 2007/02
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Construção de Algoritmos 2
Agentes de Software Introdução
Sistemas distribuídos
Arquitetura e organização de computadores
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
Metodologias Equipe do Curso de ES para SMA
Linguagens de Modelagem (cont.) (IV)
Padrão de Projeto Iterator
RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren,
JADE: Java Agent Development Environment Framework
Viviane Torres da Silva
Linguagens de Modelagem para SMA
Sistema para Gerenciamento de Redes Baseado em Agentes Móveis
Sistemas Distribuídos
Polimorfismo e Classes Abstratas Profa
Programação Concorrente
JADE Java Agent DEvelopment Framework
ESTRUTURA DE COMUNICAÇÃO DE DADOS
Sistemas Multiagentes
Estrutura de Dados em Java
Protocolo CMB em simulação distribuída
Concorrência em Java Threads em Java.
Concorrência em Java Threads em Java.
Concorrência em Java Threads em Java.
Maria Tereza Nagel Junho 2004 Grids de Agentes Processadores para Gerência de Redes de Computadores e Telecomunicações Orientador: Prof. Dr. Carlos Becker.
Desenvolvendo Sistemas Multiagentes com JADE
JAVA Orientação a Objetos
Eduardo Kinder Almentero Herbet de Souza Cunha
JAVA Linguagem Ambiente de Desenvolvimento
Exame de Defesa de Mestrado
Sistemas Distribuídos
Entendendo as definições de classe
Chamada Remota de Procedimentos
Introdução a aplicativos Java
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
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)
SISTEMAS DISTRIBUIDOS Aula 4
FTIN Formação Técnica em Informática Módulo Sistema Proprietário Windows AULA 04 Prof. André Lucio.
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Aula Prática 4 Monitoria IP/CC (~if669).
Troca de Mensagens Programação concorrente
Análise e Projeto de Sistemas
Integração de Ferramentas CASE
Capítulo 4: Processos.
Aglets.
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.
1 BSP no InteGrade II WorkShop do InteGrade c. 2 Objetivo O principal objetivo é permitir que aplicações BSP sejam executadas no InteGrade sem ou com.
JAVA – Fila ATAI.
Concorrência em LF1 Paradigmas de Linguagens de Programação 20 de junho de 2006 Aline Timóteo Carlos Rodrigues Flávia Falcão Tiago Rolim.
CloudSim Um framework para modelagem e simulação de infraestrutura e serviços de Computação em Nuvem.
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Fundamentos de Engenharia de SW Diagramas da UML Usados no Projeto de Software.
Diagrama de atividade.
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Bruna Cavallero Martins Universidade Católica de Pelotas.
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.1 12/2013

O que são Agentes? O conceito de agentes surgiu na comunidade de Inteligência Artificial “O que muda em relação a um software dito convencional é que um agente possui autonomia, é capaz de comunicar-se com outros agentes e com usuários humanos, reage a mudanças no seu ambiente e age sempre buscando atingir uma meta. “ 14/04/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 14/04/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 Quando um agente dispõe de algum grau de inteligência artificial para sua execução ele é denominado agente inteligente de software. Caso contrário, é dito agente de software. A diferença fundamental é que um agente de software opera de forma absolutamente previsível em reação às mudanças ambientais. Já o agente inteligente é capaz de raciocinar sobre os elementos percebidos e escolher a melhor forma de ação segundo as circunstâncias externas a ele. 14/04/2017 @LES/PUC-Rio

O que são Agentes? Características: Autonomia Reatividade Pró-atividade Interatividade Adaptação Aprendizado Racionalidade Mobilidade Algumas propriedades básicas podem ser encontradas nos agentes. 1. Agentes podem operar sem controle direto de humanos ou de outros agentes. São autônomos. 2. Agentes podem agir em sociedade com humanos e com outros agentes, eles se comunicam. 3. Agentes podem reagir a várias formas de estimulação dos domínios, eles são reativos. 4. Agentes podem por si mesmo tomar decisões para ajustar-se a metas definidas, eles são pró-ativos. 14/04/2017 @LES/PUC-Rio

O que são Agentes? Características: Autonomia: Reatividade: Operar sem controle direto de humanos ou de outros agentes Reatividade: Reagir a estímulos Pró-atividade: Tomar decisões para ajustar-se a metas definidas Interatividade: Comunicação Adaptação Aprendizado Racionalidade Mobilidade Algumas propriedades básicas podem ser encontradas nos agentes. 1. Agentes podem operar sem controle direto de humanos ou de outros agentes. São autônomos. 2. Agentes podem agir em sociedade com humanos e com outros agentes, eles se comunicam. 3. Agentes podem reagir a várias formas de estimulação dos domínios, eles são reativos. 4. Agentes podem por si mesmo tomar decisões para ajustar-se a metas definidas, eles são pró-ativos. 14/04/2017 @LES/PUC-Rio

O que são Agentes? Características: JADE Autonomia Reatividade Pró-atividade Interatividade Adaptação Aprendizado Racionalidade Mobilidade: poder desenvolver o programa em uma máquina e ser executada em outra JADE Mobilidade: poder desenvolver o programa em uma máquina e ser executada em outra 14/04/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. Middleware: constituído por módulos dotados com APIs de alto nível que proporcionam a sua integração com aplicações desenvolvidas em diversas linguagens de programação e interfaces de baixo nível que permitem a sua independência relativamente ao dispositivo. 4/14/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. 4/14/2017 @LES/PUC-Rio

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

Contêineres e Plataformas O único requisito para que seja compatível é que a máquina execute o Java Run 14/04/2017 @LES/PUC-Rio

Contêineres e Plataformas Cada instância de agente é identificada por um agent identifier (AID) Um ID global é aquele que representa o identificador do agente em toda a plataforma <nome_local>@<nome-plataforma> Um ID local refere-se ao conjunto de informações que representam o agente em seu container 14/04/2017 @LES/PUC-Rio

Plataforma O Jade segue o modelo da FIPA (Foundation for Intelligent Physical Agents) FIPA: Uma associação internacional que tenta produzir especificações padrões para as tecnologias de agentes 14/04/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 14/04/2017 @LES/PUC-Rio

Plataforma Oferece o serviço de páginas amarelas na plataforma Cadastro de serviços que estão sendo oferecidos pelos agentes, permitindo que outros agentes Possam buscar e usufruir desses serviços 14/04/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. 14/04/2017 @LES/PUC-Rio

Plataforma 14/04/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 14/04/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...) 14/04/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 14/04/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 Inicialização do agente ou a partir de um comportamento 14/04/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 14/04/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 14/04/2017 @LES/PUC-Rio

A Execução de um Agente 14/04/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 14/04/2017 @LES/PUC-Rio

A Hierarquia de Comportamentos 14/04/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 14/04/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 14/04/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 14/04/2017 @LES/PUC-Rio

A Comunicação entre Agentes 14/04/2017 @LES/PUC-Rio

A Comunicação entre Agentes A troca de mensagens é assíncrona e usa a FIPA ACL (Agent Communication Language) JADE disponibiliza um mecanismo assíncrono de mensagens: cada agente possui uma fila de mensagens (caixa de entrada), onde este agente decide o momento de ler estas mensagens. No momento desejado pelo agente este pode ler apenas a primeira mensagem, ou ler as mensagens que satisfazem algum critério. 14/04/2017 @LES/PUC-Rio

Enviando Mensagens Deve-se criar e montar um objeto ACLMessage e chamar o método send() do agente Esta mensagem de exemplo representa um pedido de um agente para o outro, onde o solicitante deseja obter o preço (que será armazenado na variável p) de um computador com processador Celeron e 256 MB de memória. 14/04/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 } 14/04/2017 @LES/PUC-Rio

Troca de mensagem entre os agentes 14/04/2017 @LES/PUC-Rio

O Serviço de Páginas Amarelas – Agente DF 14/04/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 14/04/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(); } } 14/04/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"); 14/04/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(); } } ); 14/04/2017 @LES/PUC-Rio

Referência Manual do Jade. Disponível em http://jade.tilab.com/doc/tutorials/noEnglish/ManualJadePortuguese.pdf. Acesso em março de 2014. 14/04/2017 @LES/PUC-Rio