JADE : Java Agent DEvelopment Framework JADE



Documentos relacionados
JADE Framework para desenvolvimento de sistemas multiagente

Centralizado Distribuído

Jade Java Agent Development Framework

Gerenciador de proj et os; Transport e de m ensagens; Suporte às fases de desenvolvim ento e depuração; Proj et ado para sust ent ar escalabilidade;

Sistemas Paralelos e Distribuídos /2004 Curso: Matemática /Informática Sistemas Distribuídos /2004 Curso: Ensino da Informática

Num sistema de objectos distribuídos, dois conceitos são fundamentais.

SISTEMAS DISTRIBUÍDOS

Me. Eng. JOÃO ALVAREZ PEIXOTO. Sistemas Multi-agentes em Java utilizando a plataforma JADE

Middleware de Aplicações Paralelas/Distribuídas

Grupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais

Plataforma para Agentes

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais

Grupo I [7v] 1. [1,0] Apresente o conteúdo do IDL relativo a este programa. Assuma PROGRAM=62015 e VERSION=1.

JADE Java Agent DEvelopment Framework

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução

Java Básico. Matrícula de Alunos. Marco Antonio, Arquiteto de Software TJDF Novembro/2005

Java 2 Standard Edition. Fundamentos de. Objetos Remotos. Helder da Rocha

Guia e Utilização do Visual Studio 6.0

Capítulo 8. Introdução UML

Especialização em Engenharia de Software - CEUT

Invocação de Métodos Remotos

Análise e Projeto Orientados por Objetos

VM Card. Referência das Definições Web das Funções Avançadas. Manuais do Utilizador

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

3 Classes e instanciação de objectos (em Java)

A interface do Microsoft Visual Studio 2005

Capítulo 4. Packages e interfaces

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Programação de Computadores - I. Profª Beatriz Profº Israel

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Cartão de fidelização de clientes das distribuidoras de combustível.

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação por Objectos. Java

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes

Um sistema SMS 1 simplificado

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

Sistemas Distribuídos

Aula 30 - Sockets em Java

Sistemas Distribuídos

Sistemas Distribuídos

EAI Manual do Administrador

Licenciatura em Engenharia Informática Sistemas Distribuídos I 2ª chamada, 6 de Julho de º Semestre, 2004/2005

Java : Comunicação Cliente-Servidor.

INTRODUÇÃO 12. DOCUMENTAÇÃO INTRODUÇÃO INTRODUÇÃO

4.1. TRABALHAR COM O CALENDÁRIO

Redes de Computadores. Trabalho de Laboratório Nº8

Sistemas Distribuídos

Java Mail Server. Manual do Utilizador

Enterprise Java Beans

FTP FILE F TRANSFER PROTOCOL. Tópicos

Programação Concorrente em java - Exercícios Práticos Abril 2004

Invocação de Métodos Remotos RMI (Remote Method Invocation)

Java. Marcio de Carvalho Victorino

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Programação II Programação para a Web. Christopher Burrows

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

UNIVERSIDADE. Sistemas Distribuídos

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve

Java 2 Standard Edition Como criar classes e objetos

THREADS EM JAVA. George Gomes Cabral

FTIN Formação Técnica em Informática Módulo Sistema Proprietário Windows AULA 04. Prof. André Lucio

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

Redes de Computadores. Guia de Laboratório Configuração de Redes

Extracto on Line Aplicação Local Guia do Administrador

Universidade Federal do ABC ufabc

Invocação Remota MC704

Guia rápido do utilizador

Manual do Comunicador 1.0 (Externo)

Workflow Management Systems

Noções de. Microsoft SQL Server. Microsoft SQL Server

Guião de Introdução ao Eclipse IDE Índice

Sistemas Distribuídos: Conceitos e Projeto Java RMI

Construindo Agentes Inteligentes com o JADE e Eclipse Utilizando o Eclipse para construir Agentes Inteligentes em JADE

Computação Paralela. Uma framework para aplicações concorrentes João Luís Ferreira Sobral Departamento do Informática Universidade do Minho

EIC. Projecto I. Manual do Utilizador. Vídeo Vigilância Abordagem Open Source. Curso: Engenharia de Informática e Comunicações Ano Lectivo: 2005/2006

REDES INTEGRADAS DE TELECOMUNICAÇÕES II 2005 / 2006

Keeper of Knowledge. Capítulo 2 Classes em Java

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras.

Projeto de Software Orientado a Objeto

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

Configuração de contas em Microsoft Outlook 2003/Mozilla Thunderbird

Multithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações

MANEJO DE DOCUMENTOS COM O GXFLOW

Capítulo II Modelos de Programação Distribuída

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

4.4. UML Diagramas de interacção

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais

Engenharia de Software Sistemas Distribuídos

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

insfcanceof new public switch transient while byte continue extends for int null

Java Threads. Introdução

Transcrição:

: Java Agent DEvelopment Framework http:// sharon.cselt.it/projects/jade Framework para desenvolvimento de software, no projecto de sistemas multi-agente e aplicações conforme as normas da FIPA Escrito em JAVA, compreende várias packages JAVA Agent Platform Agent AMS DF Message Transport Protocol 2 1

Agent Management System (AMS) Supervisão sobre acesso e uso da plataforma. Mantém directoria de identificadores de agentes (AID) e seu estado. Todos os agentes se registam em AMS. Em uma plataforma, existe apenas um AMS. Directory Facilitator (DF) Serviços de páginas amarelas. Quando plataforma é lançada, AMS e DF são criados automaticamente 3 Plataforma pode ter vários containers, onde residem os agentes Containers não estão necessariamente na mesma máquina Em cada plataforma existe um container especial: main container, reside na máquina onde corre o servidor RMI Comunicação Receptor no mesmo container : Passagem como evento Receptor na mesma plataforma, mas noutro container : RMI Receptor numa plataforma diferente : Protocolo IIOP 4 2

Suporta mobilidade intra-plataforma e clonagem Plataforma pode estar distribuída através de múltiplas máquinas (em cada máquina está um container ) Agentes podem migrar entre containers domove(location) beforemove() / aftermove() Agentes podem ser clonados doclone(location, String) beforeclone() / afterclone() 5 Execução Alterar a variável CLASSPATH %%\lib\jade.jar;%\lib\jadetools.jar;%%\lib\base64.jar; %%\lib\iiop.jar; Executar o comando: java jade.boot [options] [agentlist] lança main container que inclui AMS e DF [options] -container -host HostName (p.defeito, máquina local) -port PortNumber (p.defeito, 1099) -gui (GUI do RMA)... [agentlist] identificadores de agentes separados por espaços identificador = nome:nome_classe 6 3

Execução Lançar agentes na plataforma i. Usando RMA seleccionar container e usar botão Start New Agent ii. A partir da linha de comando, quando se arranca java jade.boot gui nome:nomeclasse (ex: java jade.boot gui ping0:examples.pingagent.pingagent) 7 Execução Múltiplos containers Na mesma máquina Iniciar java jade.boot gui Adicionar novo container com agente java jade.boot container agentid Em máquinas diferentes Iniciar na máquina MCCARTHY java jade.boot gui Adicionar novo container com agente na máquina MARKOV java jade.boot host MCCARTHY -container agentid agente vive na máquina MARKOV, mas pertence à plataforma que corre na máquina MCCARTHY; o seu endereço é nome@mccarthy:1099/ 8 4

Ferramentas que simplificam a administração da plataforma e desenvolvimento de aplicações Remote Monitoring Agent Dummy Agent Sniffer Agent Introspector Agent Directory Facilitator GUI 9 Remote Monitoring Agent (RMA) Consola gráfica para controlo da plataforma Vizualização do estado de agentes e containers Pode existir mais que um RMA na mesma plataforma Em um container, apenas pode existir um RMA Como executar: Como um agente normal java jade.boot myconsole:jade.tools.rma.rma Usando o argumento -gui java jade.boot gui 10 5

(RMA) 11 Dummy Agent Ferramenta de monitoração e debugging Permite enviar, receber e visualizar mensagens ACL Como executar: A partir da linha de comando java jade.boot da:jade.tools.dummyagent.dummyagent A partir do menu do RMA GUI botão Start DummyAgent 12 6

(DummyAgent) 13 Sniffer Agent Quando se espia um agente (ou grupo), as mensagens dirigidas ou enviadas a este são visualizadas com notação semelhante a diagramas de sequência UML Quando um agente ou container é criado ou destruído, Sniffer é informado de imediato pelo AMS Como executar: A partir do menu do RMA GUI botão Start Sniffer nome do agente sniffer é atribuído pelo sistema botão Start New Agent Name: XXXX ClassName: jade.tools.sniffer.sniffer 14 7

(SnifferAgent) 15 Directory Facilitator (DF) GUI DF fornece serviços de páginas amarelas. Agentes podem registar os seus serviços no DF, ou questionar o DF Em cada plataforma, existe pelo menos um DF Como executar: A partir do menu do RMA GUI Tools Show the DF GUI Introspector Agent Monitoração ciclo de vida de um agente: mensagens enviadas e recebidas e fila de comportamentos. Como executar: A partir do menu do RMA GUI botão Start IntrospectorAgent 16 8

(DF Gui) 17 Classe Agent classe base para construção de agentes Início execução do agente 1. É executado o construtor 2. É atribuído um identificador ao agente, que é registado no AMS identificador = nomelocal + @ + maquina:porto + / 3. É executado o método setup() O método setup() é usado para: Modificar dados registados no AMS Atribuir serviços ao agente, e registar o agente em um ou mais domínios (DFs) Adicionar comportamentos (obrigatório pelo menos um). Estes são escalonados assim que termina método setup() 18 9

Parar execução do agente Agent.doDelete() pára execução agente Agent.takeDown() método que pode ser reescrito pelo utilizador para qualquer limpeza antes de agente ser destruído. Comunicação Passagem de mensagens assíncrona Trocados objectos da classe ACLMessage Agent.send(msg) envia uma mensagem Agent.receive() recepção mensagem Agent.blockingReceive() recepção mensagem; suspende toda a actividade do agente até que uma mensagem seja recebida 19 Implementação de comportamentos Tarefas dos agentes são implementadas como objectos Behaviour Agent.addBehaviour(Behaviour1) Agent.removeBehaviour(Behaviour1) Existe uma fila de comportamentos. Escalonamento efectuado numa política de ronda. É executado método action() de um comportamento. Quando retorna, é chamado o método done() para verificar se o comportamento terminou a sua tarefa; se sim, este é removido da fila. 20 10

(exemplo) import jade.core.*; import jade.core.behaviours.*; import jade.lang.acl.aclmessage; import jade.domain.fipaagentmanagement.servicedescription; import jade.domain.fipaagentmanagement.dfagentdescription; import jade.domain.dfservice; import jade.domain.fipaexception; public class PingPong extends Agent { class ReceiveMsgReplyBehaviour extends SimpleBehaviour { private boolean finished=false; private int n=0; public ReceiveMsgReplyBehaviour(Agent a) { super(a); } 21 (exemplo) public void action() { ACLMessage msg=blockingreceive(); if (msg!=null) { if (msg.getperformative()!=aclmessage.not_understood){ ACLMessage reply = msg.createreply(); if (msg.getperformative() ==ACLMessage.INFORM) { String content=msg.getcontent(); System.out.println("mensagem recebida:"+content); String replycont; if (content.equals("ping")) replycont="pong"; else replycont="ping"; reply.setcontent(replycont); if (n==10) finished=true; n++; } else reply.setperformative(aclmessage.not_understood); send(reply); } 22 } } 11

(exemplo) public boolean done() { return finished; } } // fim de classe ReceiveMsgReplyBehaviour protected void setup() { DFAgentDescription dfd = new DFAgentDescription(); ServiceDescription sd = new ServiceDescription(); sd.settype("agente PingPong"); sd.setname(getname()); dfd.setname(getaid()); dfd.addservices(sd); try { DFService.register(this,dfd); } catch (FIPAException e) { System.out.println(getLocalName() + "erro no registo em DF. " + e.getmessage()); dodelete(); } 23 (exemplo) ReceiveMsgReplyBehaviour Behaviour1 = new ReceiveMsgReplyBehaviour(this); addbehaviour(behaviour1); if (getname().indexof("ping0")==0) { ACLMessage msg = new ACLMessage(ACLMessage.INFORM); msg.setcontent("ping"); AID receiver =new AID("pong0",false); msg.addreceiver(receiver); send(msg); } } // fim do metodo setup() } // fim da classe PingPong 24 12