A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

JADE: Java Agent Development Environment Framework

Apresentações semelhantes


Apresentação em tema: "JADE: Java Agent Development Environment Framework"— Transcrição da apresentação:

1 JADE: Java Agent Development Environment Framework
Versão atual: 4.3.0 03/2013

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

3 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

4 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

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

6 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

7 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

8 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

9 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

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

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

12 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

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

14 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

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

16 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

17 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

18 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

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

20 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: 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

21 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

22 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

23 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

24 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

25 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

26 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

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

28 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

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

30 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

31 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

32 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

33 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

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

35 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

36 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

37 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

38 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

39 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

40 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

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

42 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

43 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

44 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

45 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

46 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


Carregar ppt "JADE: Java Agent Development Environment Framework"

Apresentações semelhantes


Anúncios Google