Agentes de Software Introdução

Slides:



Advertisements
Apresentações semelhantes
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Advertisements

Sistemas Operacionais
JADE/JADEX Maíra Gatti
Programação em Java Prof. Maurício Braga
INFORMAÇÕES COMPLEMENTARES
A busca das mulheres para alcançar seu espaço dentro das organizações
Vamos contar D U De 10 até 69 Professor Vaz Nunes 1999 (Ovar-Portugal). Nenhuns direitos reservados, excepto para fins comerciais. Por favor, não coloque.
Exercício do Tangram Tangram é um quebra-cabeças chinês no qual, usando 7 peças deve-se construir formas geométricas.
Nome : Resolve estas operações começando no centro de cada espiral. Nos rectângulos põe o resultado de cada operação. Comprova se no final.
Interação entre objetos
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 3.
Curso de ADMINISTRAÇÃO
Diagramas de Seqüência
Jade Java Agent Development Framework Versão atual: 3.5 (25 Junho 2007)
Metodologias Equipe do Curso de ES para SMA {lucena, furtado, choren,
Jade e Jadex Equipe do Curso de ES para SMA
Metodologias Equipe do Curso de ES para SMA
JADE: Java Agent Development Environment Framework
Sistemas Multi-Agentes
Orientação a Objetos: Encapsulamento e Classificação
Viviane Torres da Silva
Sistema para Gerenciamento de Redes Baseado em Agentes Móveis
Os Sistemas Multi-agente Viviane Torres da Silva
1 MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE) BREVE HISTÓRICO CARACTERÍSTICAS CONCEITOS DE PROGRAMAÇÃO ORIENTADA A OBJETOS MODELAGEM DE ANÁLISE E DE.
EXPRESSÕES ARITMÉTICAS
EXPRESSÕES ARITMÉTICAS
JADE Java Agent DEvelopment Framework
Estruturas de Controle
Aula 2 Aspectos Preliminares
Aula 4 Nomes, Vinculações, Tipos e Escopos
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
Listas Encadeadas.
Classes e objetos Arrays e Sobrecarga
Classes e objetos Modelagem
Classes e objetos P. O. O. Prof. Grace.
AP 1.
TÉCNICAS DE PROGRAMAÇÃO II
Renda até 2 SM.
Diagnósticos Educativos = Diagnósticos Preenchidos 100% = 1.539
UML - Unified Modeling Language
PESQUISA SOBRE PRAZO MÉDIO DA ASSISTÊNCIA NA SAÚDE SUPLEMENTAR
Concorrência em Java Threads em Java.
Concorrência em Java Threads em Java.
Desenvolvendo Sistemas Multiagentes com JADE
Aluno: Mário Monteiro Orientador: Sérgio Soares 1.
Algoritmos Culturais.
CATÁLOGO GÉIA PÁG. 1 GÉIA PÁG. 2 HESTIA PÁG. 3.
PROCESSOS PRINCIPAIS Alunos - Grau de Satisfação 4971 avaliações * Questões que entraram em vigor em 2011 ** N.A. = Não Aplicável Versão: 07/02/2012 INDICADORES.
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Plataforma Brasil – Submissão de pesquisa
Entendendo as definições de classe
Programação de Computadores
Projeto Medindo minha escola.
Semântica de Linguagens de Programação
Projeto de Banco de Dados
Plataforma JADE Mauricio S Freitas.
FIPA THE FOUNDATION FOR INTELLIGENT PHYSICAL AGENTS
1 Aplicações do Fecho Regular. 2 A interseção de uma linguagem livre de contexto e uma linguagem regular é uma linguagem livre de contexto livre de contexto.
Olhe fixamente para a Bruxa Nariguda
Máquina de Turing Universal
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
UML - Unified Modeling Language
Equipe Bárbara Régis Lissa Lourenço Lucas Hakim Ricardo Spada Coordenador: Gabriel Pascutti.
1 DADOS PARA CONTATO Nilson Nicolau Nossa Caixa – Nosso Banco Fone: (0xx11)
JADE: Java Agent Development Environment Framework
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Agentes de Software Introdução Projeto de Sistemas de Software

Agenda Introdução O que são Agentes? Agente versus Objeto Sistemas Multiagentes Exemplos de Aplicações ES de Sistemas Multiagentes Plataforma Jade © 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 © 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 © LES/PUC-Rio

Ambiente O que são Agentes? Agente Agentes e o Ambiente Sensores Processamento autônomo Ambiente Efetuadores © LES/PUC-Rio

Características de Agentes ES Básicas Autonomia Capacidade de agir sem intervenção externa Reatividade Capacidade de perceber o ambiente e responder às mudanças que ocorrem nele Pró-atividade Atuam não somente em resposta ao ambiente – são orientados a objetivos Interatividade Se comunicam com outros agentes e com o ambiente Adaptação São capazes de modificar, em algum grau, o seu comportamento devido à mudanças do ambiente e de outros agentes © LES/PUC-Rio

Características de Agentes ES Adicionais Aprendizado São capazes de modificar o seu comportamento baseados em sua experiência (não é necessariamente relacionado às mudanças no ambiente) Racionalidade São capazes de selecionar suas ações baseados em seus objetivos Mobilidade São capazes de se mover de um ambiente para outro © LES/PUC-Rio

Agente vs. Objeto Similaridade Entidades computacionais Encapsulam estado Realizam ações Se comunicam via troca de mensagens © LES/PUC-Rio

Agente vs. Objeto Diferenças Autonomia Objetos são obedientes Objetos são passivos Objetos são obedientes Agentes: Go and No Objetos não encapsulam ativação de comportamento Um objeto provê mínimo suporte para estruturas coletivas (ex. hierarquia e relacionamentos) Enquanto agentes dão suporte para estruturas coletivas: organizações © LES/PUC-Rio

Sistemas Multi-Agentes Um agente, em geral, não é encontrado completamente sozinho em uma aplicação, mas formando conjunto com outros agentes. “Sistema Multi-Agente (MAS)” © LES/PUC-Rio

O que são Sistemas Multiagentes? No ponto de vista de IA Um sistema multiagentes é uma sociedade de agentes (agentes IA) individuais, que interagem por meio de troca de conhecimento e de negociação para alcançar um objetivo local ou global No ponto de vista de ES Um sistema multiagentes é um sistema de software composto por diversos locos de controle (agentes de software) encapsulados e independentes, que interagem no contexto específico de uma aplicação © LES/PUC-Rio

Engenharia de Software de Sistemas Multiagentes Introdução

Evoluções na Engenharia de Software A ES é uma disciplina que se preocupa com todos os aspectos do desenvolvimento de software Engenharia de Software OO Linguagens Orientadas a Objetos. Novos métodos para design de sistemas. Software está cada vez mais complexo: os sistemas de software deverão estar Em todo o lugar Sempre conectados (disponíveis) Sempre ativos para executar requisições de usuários © LES/PUC-Rio

ES de Sistemas Multiagentes: Motivação Sistemas Complexos © LES/PUC-Rio

Tendências Sistemas distribuídos Sistemas extensíveis Crescimento da Internet Utilização de ontologias – Web Semântica Sistemas abertos © LES/PUC-Rio

Benefícios da abstração de Agentes Entidade Pró-Ativa Fraco acoplamento Comunicação através de mensagens Flexibilidade de customização individual de agentes protocolos de comunicação algoritmos de aprendizado © LES/PUC-Rio

O paradigma de SMAs Oferece: Um modelo de decomposição Uma abstração para o desenvolvimento de software baseado no domínio do problema Um modelo para desenvolvimento de sistemas como uma composição de unidades organizacionais Um modelo de descentralização para reduzir o acoplamento Antropomórfica Generalização na forma de comunicação de agente © LES/PUC-Rio

Uma pergunta… Será que o paradigma e técnicas atuais de ES serão suficientes para atacar o problema da produção eficiente da próxima geração de sistemas de software? © LES/PUC-Rio

Evolução dos Paradigmas de ES Linguagens Assembler Abstração Funcional Programação Estruturada Orientação a Objetos Componentes ... Agentes de Software Abstrações determinadas pela arquitetura da máquina Tempo Abstrações determinadas pelo domínio do problema © LES/PUC-Rio

O Estado da Arte Engenharia de software para sistemas multiagentes está em estado inicial Muitas propostas e pouco consenso Desenvolvimento ad-hoc ou desenvolvimento proprietário Falta de avaliação do impacto do uso do paradigma multiagente Experimentação – Estudos de Caso Necessidade de um desenvolvimento de uma ES para o paradigma © LES/PUC-Rio

Pesquisa até então... Desenvolvimento de ES para sistemas multiagentes Linguagens de modelagem Metodologias de desenvolvimento Arquiteturas de desenvolvimento Padrões de projeto Plataformas e Frameworks Métodos formais Melhores práticas Processos de desenvolvimento Necessário amadurecimento... © LES/PUC-Rio

Exemplos

TAC (Trading Agent Competition) Classic © LES/PUC-Rio

Exemplo - Sistema de compra de produtos Cenário 1: Cliente compra um produto Cliente escolhe um produto e avisa ao vendedor que quer comprá-lo. O vendedor pega o produto e efetua a venda. © LES/PUC-Rio

Exemplo - Sistema de compra de produtos Cenário 2: O funcionário responsável pelo histórico de vendas da loja, faz uma classificação dos clientes em três categorias: Ouro, prata e bronze. O vendedor recebe esta classificação e envia ofertas para os clientes, baseado em alguma estratégia de venda. © LES/PUC-Rio

Diagrama de Classes © LES/PUC-Rio

Exemplo: Sequência implementação Cenário 1 © LES/PUC-Rio

Exemplo 2: Agenda Virtual © LES/PUC-Rio

Agendamento de Compromissos 1/3 © LES/PUC-Rio

Agendamento de Compromissos 2/3 © LES/PUC-Rio

Agendamento de Compromissos 2.1/3 © LES/PUC-Rio

Agendamento de Compromissos 3/3 © LES/PUC-Rio

Exemplo de Código © LES/PUC-Rio

Exemplo 3: Agente reativos – Inteligência social emergente Colônia de formigas procurando por comida Cada formiga é um agente Se comunicam através do ambiente Toda vez que elas acham comida liberam um hormônio chamado feromônio no ambiente As outras seguem o feromônio E a sociedade converge para o local da comida URL: http://website.lineone.net/~john.montgomery/demos/ants.html © LES/PUC-Rio

Outros Exemplos Agentes para sistemas de métricas Coleta, Avaliação, Apresentação para o Usuário Agentes para gerência de ordens de serviço Organização, Escalonamento e Negociação de ordens de serviço Agentes para gerência de compromissos Agendamento, Estratégia de Negociação, Lembretes Agentes para gerenciamento de tráfego Informação de melhores caminhos © LES/PUC-Rio

Pesquisa em andamento no LES Arquiteturas, frameworks e ferramentas para regular SMA Governança, normas e reputação Diagnóstico e Recomendação de execuções Dependability em Sistemas Multiagentes Abertos Agentes inteligentes, ontologias, simulação e ambientes para SMA regulados por normas Ubiqüidade e Context-aware Sistemas Multiagentes para Medicina Útero virtual Células-tronco Leski http://wiki.les.inf.puc-rio.br/index.php/Sistemas_Multiagentes © LES/PUC-Rio

Jade Java Agent Development Framework http://jade.tilab.com/ Versão atual: 3.5

O que é Jade? Jade é um middleware para o desenvolvimento de sistemas multi-agentes Inclui Um ambiente de execução onde os agentes JADE "vivem" e que deve estar ativo em um host antes que um agente possa ser executado Uma biblioteca de classes que programadores podem usar para desenvolver 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

Contêiner e Plataforma Instância de um ambiente Jade É onde os agentes executam Ao iniciar o Jade, um MainContainer é criado Plataforma Conjunto de contêineres ativos © LES/PUC-Rio

Contêineres e Plataformas © LES/PUC-Rio

A Plataforma O Jade segue o modelo da FIPA (Foundation for Intelligent Physical Agents) © LES/PUC-Rio

AMS e DF Agent Management System (AMS) Directory Facilitator (DF) 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 Directory Facilitator (DF) Oferecer o serviço de páginas amarelas na plataforma © LES/PUC-Rio

A Classe Agent Representa a classe base para a definição de agentes Para o desenvolvedor, 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...) Oferece um conjunto de métodos para a implementação do comportamento do agente © 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 comportamtentos A classe Agent oferece um scheduler (não acessível ao programador) que gerencia automaticamente o agendamento dos comportamentos © LES/PUC-Rio

O Ciclo de Vida de um Agente - INITIATED : the Agent object is built, but hasn't registered itself yet with the AMS, has neither a name nor an address and cannot communicate with other agents. - ACTIVE : the Agent object is registered with the AMS, has a regular name and address and can access all the various JADE features. - SUSPENDED : the Agent object is currently stopped. Its internal thread is suspended and no agent behaviour is being executed. - WAITING : the Agent object is blocked, waiting for something. Its internal thread is sleeping on a Java monitor and will wake up when some condition is met (typically when a message arrives). - DELETED : the Agent is definitely dead. The internal thread has terminated its execution and the Agent is no more registered with the AMS. - TRANSIT: a mobile agent enters this state while it is migrating to the new location. The system continues to buffer messages that will then be sent to its new location. © LES/PUC-Rio

Ciclo de Vida de um Agente Iniciado O objeto agente é criado, mas ainda não se registrou no AMS, i.e. não possui um identificador e não pode se comunicar com outros agentes Ativo O objeto agente está registrado no AMS, possui um identificador e pode executar seus serviços Suspenso O objeto agente está parado, i.e. sua thread interna está suspensa e o agente não está executando serviço algum © LES/PUC-Rio

Ciclo de Vida de um Agente Esperando O objeto agente está bloqueado, esperando por algum evento, i.e. sua thread interna está dormindo e será acordada quando uma condição se tornar verdadeira Removido O objeto agente está terminado, i.e. sua thread interna acabou sua execução e o agente não está mais registrado no AMS Em Trânsito Um agente móvel entra neste estado quando está migrando para um novo local (contêiner). O sistema continua a armazenar as mensagens enviadas a este agente, que lhe serão passadas quando ele estiver no novo local © 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 © 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 © LES/PUC-Rio

Um Exemplo © 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 © 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()); doDelete(); } protected void takeDown() { // Imprimindo uma mensagem de saida System.out.println("Agente " + getAID().getName() + " terminando."); © 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 © 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 © 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; © LES/PUC-Rio

Detalhes sobre 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

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

A Hierarquia de Comportamentos © 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 © 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 © 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 © 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; © LES/PUC-Rio

Comportamentos Especiais WakerBehaviour Comportamento que espera um determinado período de tempo (em ms) para efetivamente executar a tarefa TickerBehaviour Comportamento que executa uma tarefa periodicamente em intervalos de tempo constantes (em ms). Este comportamento nunca acaba © LES/PUC-Rio

WakerBehaviour public class MyAgent extends Agent { protected void setup() { System.out.println("Adicionando waker behaviour"); addBehaviour(new WakerBehaviour(this, 10000) { protected void handleElapsedTimeout() { // Executa a operação X } } ); A operação X é executada 10 segundo depois de imprimir "Adicionando waker behaviour" © LES/PUC-Rio

TickerBehaviour public class MyAgent extends Agent { protected void setup() { addBehaviour(new TickerBehaviour(this, 10000) { protected void onTick() { // Executar a operação Y } } ); A operação Y é executada periodicamente a cada 10 segundos © LES/PUC-Rio

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

A Linguagem ACL Campos principais Sender: o agente que envia a mensagem Receivers: lista de agentes destino da mensagem Performative: ato de fala que indica o que o agente que envia a mensagem espera com ela Content: o real conteúdo da mensagem Language: sintaxe usada para expressar o conteúdo Ontology: denota a semântica dos itens do conteúdo Outros campos de controle de convesação como: conversation-id, reply-with, in-reply-to, reply-by © 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 © LES/PUC-Rio

A Linguagem ACL – Performativas INFORM “A porta está aberta” QUERY “A porta está aberta?” CFP “Alguém quer abrir a porta?” 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

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

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

Recebendo Mensagens Para se 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

Bloqueando um Agente à espera de uma Mensagem O scheduler de ações do Jade não pára a execução de uma ação caso não haja mensagens para um agente Para parar a execução de uma ação à espera de uma mensagem, deve-se usar o método block() public void action() { ACLMessage msg = myAgent.receive(); if (msg != null) { // Mensagem recebida - processá-la ... } else block(); © LES/PUC-Rio

Selecionando um Tipo de Mensagem da Fila Pode-se selecionar um tipo de mensagem da fila usando um MessageTemplate public void action() { MessageTemplate mt; mt = MessageTemplate.MatchPerformative(ACLMessage.CFP); ACLMessage msg = myAgent.receive(mt); if (msg != null) { // Mensagem do tipo CFP recebida - processá-la ... } else block(); © 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 © 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(); } } © 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"); © 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.getName(); } catch (FIPAException fe) { fe.printStackTrace(); } } ); © 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 http://www.inf.puc-rio.br/~ioliveira/temp/pss/jade/ © LES/PUC-Rio

FIM Perguntas?