jade: java agent development environment framework versão atual: 4.3.1 12/2013

40
JADE: Java Agent Development Environment Framework http://jade.tilab.com/ Versão atual: 4.3.1 12/2013

Upload: camille-de-lemos

Post on 07-Apr-2016

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

JADE:Java Agent Development Environment Framework

http://jade.tilab.com/Versão atual: 4.3.1

12/2013

Page 2: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

O que são Agentes?

27/04/23 @LES/PUC-Rio 2

Page 3: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

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 & Norvig27/04/23 @LES/PUC-Rio 3

Page 4: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

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

27/04/23 @LES/PUC-Rio 4

Page 5: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

O que são Agentes?

Características: Autonomia Reatividade Pró-atividade Interatividade Adaptação Aprendizado Racionalidade Mobilidade

27/04/23 @LES/PUC-Rio 5

Page 6: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

O que são Agentes?

Características: Autonomia:

• 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

27/04/23 @LES/PUC-Rio 6

Page 7: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

O que são Agentes?

Características: Autonomia Reatividade Pró-atividade Interatividade Adaptação Aprendizado Racionalidade Mobilidade: poder desenvolver o programa em

uma máquina e ser executada em outra

27/04/23 @LES/PUC-Rio 7

JADE

Page 8: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

04/27/23 @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.

Page 9: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

04/27/23 @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.

Page 10: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

Contêiner e Plataforma

Contêiner Instância de um ambiente Jade É onde os agentes executam

Plataforma Conjunto de contêineres ativos

27/04/23 @LES/PUC-Rio 10

Page 11: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

Contêineres e Plataformas

27/04/23 @LES/PUC-Rio 11

Page 12: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

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• <nome_local>@<nome-plataforma>

Um ID local refere-se ao conjunto de informações que representam o agente em seu container

27/04/23 @LES/PUC-Rio 12

Page 13: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

Plataforma

O Jade segue o modelo da FIPA (Foundation for Intelligent Physical Agents)

27/04/23 @LES/PUC-Rio 13

Page 14: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

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

27/04/23 @LES/PUC-Rio 14

Page 15: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

Plataforma

Oferece o serviço de páginas amarelas na plataforma

27/04/23 @LES/PUC-Rio 15

Page 16: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

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.

27/04/23 @LES/PUC-Rio 16

Page 17: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

Plataforma

27/04/23 @LES/PUC-Rio 17

Page 18: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

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

27/04/23 @LES/PUC-Rio 18

Page 19: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

A Classe Agent

A classe base para a definição de agentesUm agente Jade é uma instância de uma

classe Java que estende a classe AgentJá oferece todas as interações básicas da

plataforma (registro, configuração, etc...)

27/04/23 @LES/PUC-Rio 19

Page 20: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

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

27/04/23 @LES/PUC-Rio 20

Page 21: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

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

comportamento27/04/23 @LES/PUC-Rio 21

Page 22: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

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

27/04/23 @LES/PUC-Rio 22

Page 23: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

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

27/04/23 @LES/PUC-Rio 23

Page 24: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

A Execução de um Agente

27/04/23 @LES/PUC-Rio 24

Page 25: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

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

27/04/23 @LES/PUC-Rio 25

Page 26: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

A Hierarquia de Comportamentos

27/04/23 @LES/PUC-Rio 26

Page 27: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

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

27/04/23 @LES/PUC-Rio 27

Page 28: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

Comportamentos Compostos

SequentialBehaviour Executa seus sub-comportamentos seqüencialmente e

termina quando todos estes estiverem terminadosParallelBehaviour

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

27/04/23 @LES/PUC-Rio 28

Page 29: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

Esquemas de Comportamentos Simples

27/04/23 @LES/PUC-Rio 29

// OneShotBehaviourpublic class MyOneShotBehaviour extends OneShotBehaviour { public void action() { // Executar a operação X }}

// CyclicBehaviourpublic class MyCyclicBehaviour extends CyclicBehaviour { public void action() { // Executar a operação Y }}

Page 30: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

A Comunicação entre Agentes

27/04/23 @LES/PUC-Rio 30

Page 31: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

A Comunicação entre Agentes

A troca de mensagens é assíncrona e usa a FIPA ACL (Agent Communication Language)

27/04/23 @LES/PUC-Rio 31

Page 32: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

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.

27/04/23 @LES/PUC-Rio 32

Page 33: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

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

27/04/23 @LES/PUC-Rio 33

ACLMessage msg = receive();if (msg != null) { // Processar a mensagem}

Page 34: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

Troca de mensagem entre os agentes

27/04/23 @LES/PUC-Rio 34

Page 35: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

O Serviço de Páginas Amarelas – Agente DF

27/04/23 @LES/PUC-Rio 35

Page 36: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

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

27/04/23 @LES/PUC-Rio 36

Page 37: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

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)

27/04/23 @LES/PUC-Rio 37

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(); } ...}

Page 38: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

Removendo um Serviço do DF

Chamar o método deregister() do DF (usualmente no método takeDown() do agente)

27/04/23 @LES/PUC-Rio 38

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");}

Page 39: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

Procurando por Serviços no DF

Criar um objeto DFAgentDescription e chamar o método search() do DF

27/04/23 @LES/PUC-Rio 39

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(); } ... } ); ...}

Page 40: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.1 12/2013

Referência

Manual do Jade. Disponível em http://jade.tilab.com/doc/tutorials/noEnglish/ManualJadePortuguese.pdf. Acesso em março de 2014.

27/04/23 @LES/PUC-Rio 40