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

Post on 07-Apr-2016

226 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

JADE:Java Agent Development Environment Framework

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

12/2013

O que são Agentes?

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

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

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

O que são Agentes?

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

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

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

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

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.

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.

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

Contêineres e Plataformas

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

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

Plataforma

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

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

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

Plataforma

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

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

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

Plataforma

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

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

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

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

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

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

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

A Execução de um Agente

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

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

A Hierarquia de Comportamentos

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

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

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

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 }}

A Comunicação entre Agentes

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

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

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

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}

Troca de mensagem entre os agentes

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

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

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

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

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

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

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

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

top related