Desenvolvendo Sistemas Multiagentes com JADE

Slides:



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

Agentes de Software Introdução
Eventos Marco Antonio, Arquiteto de Software – TJDF Novembro/2005
Marco A. S. Reis EJB Acesso Remoto Marco A. S. Reis
Herança, Polimorfismo e Classes Abstratas em Java
Prof. Thiago Pereira Rique
MLAW: um Middleware para Aplicacao de Leis Rodrigo Paes.
Jade Java Agent Development Framework Versão atual: 3.5 (25 Junho 2007)
Jade e Jadex Equipe do Curso de ES para SMA
JADE: Java Agent Development Environment Framework
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
Sistema para Gerenciamento de Redes Baseado em Agentes Móveis
Modelos Baseados em Agentes
Wagner Santos C. de Jesus
JADE Java Agent DEvelopment Framework
TÉCNICAS DE PROGRAMAÇÃO II
CRIANDO OBJETOS EM JAVA
O Mecanismo de Threads em Java 2. Criar uma classe herdeira da super classe Thread public class minhaThread extends Thread{ public class minhaThread extends.
Concorrência em Java Threads em Java.
Programação Orientada a Objetos com Java
Concorrência em Java Threads em Java.
Capítulo 2 Java Servlets.
Padrão de Projeto Visitor
Introdução a Java: Classes, métodos e variáveis Eduardo Figueiredo 24 de Março de 2010 POOAula 05.
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Programação I Aula 2 (Métodos)
Entendendo as definições de classe
Chamada Remota de Procedimentos
Linguagem de Programação JAVA
Prof. Daniel Aula 03.  Criar Projeto  Criar Pacote  Criando classes  Meu primeiro programa  Compilar  Comentários  Variáveis.
Aula 3 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.
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
UML e Java, Introdução AB,20001 Diagrama de Classes UML e JAVA Problema Existem diversos tipos de contas bancárias. Todas as contas têm um atributo saldo.
T. D. S. I. PARA WEB Prof. Emmanuel Nolêto. Java RMI.
Pilhas Profa. Nádia Félix.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Linguagem II Exceções.
Wagner Santos C. de Jesus
Programação Orientada a Objetos - Java
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
RMI - JAVA.
Elementos de um Sistema de Agentes Móveis Agentes e Places Comportamento de Agentes Comunicação Padronização OMG/MASIF.
Introdução às Java Threads
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
Aula Prática 4 Monitoria IP/CC (~if669).
Polimorfismo.
Coleções, Genéricos, Threads Marco Antonio. Collection Principais métodos da interface Collection.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Classes Abstratas e Interface
Herança e Arquitetura em camadas
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
RMI Objetos Distribuídos Luiz C. D´oleron SCJP
Coleções em Java - Parte 2
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.
JADE: Java Agent Development Environment Framework
Modificadores Programação II.
JR: Flexible Distributed Programming in an Extended Java Elmário Gomes Dutra Jr. Gustavo Romano.
Introdução a Orientação a Objetos
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
Strings e Arrays Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
Agentes de Software Introdução
The Java Agent DEvelopment Framework
Transcrição da apresentação:

Desenvolvendo Sistemas Multiagentes com JADE Allan Lima adsl@cin.ufpe.br Desenvolvendo Sistemas Multiagentes com JADE

SMA e o JADE SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do zero sempre? É ai que entram os frameworks multiagentes

Roteiro O que é o JADE? Visão geral do JADE Implementação agentes Arquitetura e funcionalidades Implementação agentes Modelo de Agente do JADE Criando comportamentos para os Agentes Fazendo os Agentes se comunicarem Serviços de Páginas Amarelas

O que o JADE? JADE Criado pela Teltecom Italia Java Agent DEvelopment framework Criado pela Teltecom Italia Atua como um middleware para o desenvolvimento de SMA em Java Possui um conjunto de ferramentas e um biblioteca de programação Permite a distribuição dos agentes É baseado nos modelos da FIPA

Visão Geral do JADE Runtime Evironment Library Graphical Tools Infra-estrutura para dar “vida” aos agentes Library Classes para auxiliar na implementação da simulação Graphical Tools Permitem a administração e o monitoramento da simulação

Visão Geral do JADE Utilitários de desenvolvimento Remote Monitoring Agent Dummy Agent Sniffer Agent Directory Facilitator GUI

Agent Management System Directory Facilitator Message Transport System Visão Geral do JADE Library Agent Platfrom Agent Agent Management System Directory Facilitator Message Transport System

Criando Agentes Todos os agentes devem herdar da classe jade.core.Agent public class BookBuyerAgent extends Agent { ... }

Criando Agentes setup() e takeDown() e getAID() public class BookBuyerAgent extends Agent { protected void setup() { System.out.println(getAID().getName() + " is ready"); } protected void takeDown() { System.out.println(getAID().getName() + " deleted"); O método setup() é chamando quando o agente é inserido no JADE O método takeDown() é chamando quando o agente é removido do JADE O método AID() retorna o identificador único do agente no formato: <nome>@<host>:<port>

Rodando Agentes no JADE A classe jade.Boot tem um método main() que recebe o nome e o tipo dos agentes como parâmetro Exemplo de parâmetro buyer1:BookBuyerAgent buyer2:BookBuyerAgent Exemplo...

Passando Parâmetros para os Agentes Também podemos passar parâmetros para os agentes quando queremos Exemplo: buyer1:BookBuyerAgent(The-lord-of-the-rings) buyer2:BookBuyerAgent(Harry-Potter) O método getArguments() retorna um Object[] com os parâmetros dos agentes Exemplo...

Comportamentos Comportamento dos agentes é definido pela classe abstrata Behaviour Devemos herdar desta classe e adicionar comportamentos aos agentes com o método addBehaviour() Principais métodos a serem implementados: void action() boolean done() O método action() é chamado de acordo com o tipo do comportamento O métido done() serve para verificar se o comportamento foi finalizado e deve ser removido da lista de comportamentos do agente

Ciclo de Vida de um Agente Sim takeDown() O agente foi morto? Não Pegue o próximo comportamento Setup() c.action() Um agente é considerado morto quando o método doDelete() é chamado c.done()? Não Sim Sim Remova c do pool de comportamentos

Tipos de Comportamento Behaviour Genérico, temos de implementar os métodos action() e done() OneShotBehaviour done() sempre retorna true CyclicBehaviour done() sempre retorna false WakerBehaviour Executa o comportamento apenas uma vez após um determinado tempo TickerBehaviour Excuta o comportamento em tempos fixos de intervalo

Exemplos Comportamentos do agente comprador e do agente vendedor...

Comunicação A comunicação é feita de forma assíncrona Cada agente tem sua lista de mensagens Modelo FIPA-ACL ACLMessage msg = new ACLMessage(ACLMessage.INFORM); msg.addReceiver(new AID("Peter", AID.ISLOCALNAME)); msg.setLanguage("English"); msg.setOntology("Weather-forecast-ontology"); msg.setContent("Today it’s raining"); send(msg);

Comunicação Métodos Importantes Agent.send() Agent.receive() Envia uma mensagem Agent.receive() Retira a primeira mensagem da lista de mensagens do agente Retorna null se não tiver mensagem na lista Behaviour.block() O active() só volta a ser executado quando houver uma mensagem seja inseria da lista do agente

Exemplos Trocando mensagens entre o agente comprador e o agente vendedor...

Serviço de Páginas Amarelas Permitem aos agentes publicarem quem é responsável por prover determinados serviços Um agente chamado Directory Facilitator guarda estes dados Directory Facilitator AgentA: ServiceX, ServiceY AgentB: ServiceX, ServiceZ AgentC: ServiceY

Publicando Serviços DFService.register() Publica um serviço DFAgentDescription e ServiceDescription Descrevem o serviço Exemplo...

Procurando por Serviços DFService.search() Realiza a busca por serviços Recebe o agente e o serviço pelo qual ele busca Importante: O serviço pode não estar presente no momento do search!!! Devemos usar uma forma de sincronizar a chamada ou usar o método searchUntil Exemplo...

Dúvidas, críticas, sugestões?

Para brincar um pouco Fazer o Agente comprador ter uma lista de livros e comprar todos eles Implementar um mecanismo de pesquisa no comprador Ou seja, ele vai para todos os agente que vendem livros ele vai procurar perguntar pelo preço e no fim vai comprar do agente que vender mais barato

Para saber mais... O site do JADE tem tudo que você precisa http://jade.tilab.com/ É necessário um cadastro para o download do projeto Tutorial para iniciantes (base para esta aula) http://jade.tilab.com/doc/JADEProgramming-Tutorial-for-beginners.pdf