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.1 12/2013

2 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

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 14/04/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 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

5 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

6 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

7 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

8 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

9 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

10 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

11 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

12 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 Um ID local refere-se ao conjunto de informações que representam o agente em seu container 14/04/2017 @LES/PUC-Rio

13 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

14 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

15 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

16 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

17 Plataforma 14/04/2017 @LES/PUC-Rio

18 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

19 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

20 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

21 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

22 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

23 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

24 A Execução de um Agente 14/04/2017 @LES/PUC-Rio

25 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

26 A Hierarquia de Comportamentos
14/04/2017 @LES/PUC-Rio

27 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

28 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

29 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

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

31 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

32 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

33 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

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

35 O Serviço de Páginas Amarelas – Agente DF
14/04/2017 @LES/PUC-Rio

36 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

37 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

38 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

39 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

40 Referência Manual do Jade. Disponível em Acesso em março de 2014. 14/04/2017 @LES/PUC-Rio


Carregar ppt "JADE: Java Agent Development Environment Framework"

Apresentações semelhantes


Anúncios Google