jade: java agent development environment framework versão atual: 4.3.0 03/2013

45
JADE: Java Agent Development Environment Framework http://jade.tilab.com/ Versão atual: 4.3.0 03/2013

Upload: internet

Post on 17-Apr-2015

117 views

Category:

Documents


8 download

TRANSCRIPT

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

JADE:Java Agent Development Environment Framework

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

03/2013

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

O que são Agentes?

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

Page 3: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.0 03/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 & Norvig

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

Page 4: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.0 03/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

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

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

O que são Agentes?

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

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

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

O que são Agentes?

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

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

JADE

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

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

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

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

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

Contêiner e Plataforma

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

Plataforma Conjunto de contêineres ativos

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

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

Contêineres e Plataformas

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

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

Plataforma

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

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

Page 12: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.0 03/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

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

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

Plataforma

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

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

Page 14: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.0 03/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.

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

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

Plataforma

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

Page 16: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.0 03/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

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

Page 17: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.0 03/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...)

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

Page 18: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.0 03/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

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

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

O Ciclo de Vida de um Agente

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

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

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

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

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

Um Exemplo

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

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

Page 22: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.0 03/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 No método setup() Dentro de outros comportamentos

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

Page 23: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.0 03/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

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

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

O Esquema de um Comportamento

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

public class UmComportamento extends Behaviour { public void action() { while (true) { // Código do Comportamento } }

public boolean done() { return true; }}

Page 25: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.0 03/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

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

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

A Execução de um Agente

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

Page 27: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.0 03/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

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

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

A Hierarquia de Comportamentos

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

Page 29: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.0 03/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

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

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

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

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

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

Esquemas de Comportamentos Simples

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

// 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 32: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.0 03/2013

Esquema Genérico de Comportamento

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

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 step++; break; } }

public boolean done() { return step == 2; }}

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

A Comunicação entre Agentes

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

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

A Comunicação entre Agentes

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

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

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

A Linguagem ACL - Exemplo

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

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

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

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”

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

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

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?”

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

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

Enviando Mensagens

Deve-se criar e montar um objeto ACLMessage e chamar o método send() do agente

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

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

Page 39: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.0 03/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

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

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

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

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

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

Page 41: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.0 03/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

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

Page 42: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.0 03/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)

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

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 43: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.0 03/2013

Removendo um Serviço do DF

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

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

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 44: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.0 03/2013

Procurando por Serviços no DF

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

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

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 45: JADE: Java Agent Development Environment Framework  Versão atual: 4.3.0 03/2013

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

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