JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML +...

80
JADE/JADEX Maíra Gatti 2007.2

Transcript of JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML +...

Page 1: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

JADE/JADEX

Maíra Gatti2007.2

Page 2: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Agenda

• Jade

• Jadex

• Jadex WebBridge

• ESSMA

– AUML + Jadex

– AUML + Jade

Page 3: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

JadeJava Agent Development Framework

http://jade.tilab.com/

Versão atual: 3.5 (25 Junho 2007)

Page 4: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

O que é Jade?

• Jade é um middleware para o desenvolvimento de sistemas multi-agentes

• Inclui

– Um ambiente de execução onde os agentes JADE "vivem" e que deve estar ativo em um host antes que um agente possa ser executado

– Uma biblioteca de classes que programadores podem usar para desenvolver agentes

– Um conjunto de ferramentas gráficas que permite a administração e o monitoramento das atividades dos agentes em execução

Page 5: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Contêiner e Plataforma

• Contêiner

– Instância de um ambiente Jade

– É onde os agentes executam

– Ao iniciar o Jade, um MainContainer é criado

• Plataforma

– Conjunto de contêineres ativos

Page 6: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Contêineres e Plataformas

Page 7: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

A Plataforma

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

Page 8: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

AMS e DF

• Agent Management System (AMS)

– 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

• Directory Facilitator (DF)

– Oferecer o serviço de páginas amarelas na plataforma

Page 9: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

A Classe Agent

• Representa a classe base para a definição de agentes

• Para o desenvolvedor, 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...)

• Oferece um conjunto de métodos para a implementação do comportamento do agente

Page 10: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

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 comportamtentos

• A classe Agent oferece um scheduler (não acessível ao programador) que gerencia automaticamente o agendamento dos comportamentos

Page 11: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

O Ciclo de Vida de um Agente

Page 12: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Ciclo de Vida de um Agente

• Iniciado

– O objeto agente é criado, mas ainda não se registrou no AMS, i.e. não possui um identificador e não pode se comunicar com outros agentes

• Ativo

– O objeto agente está registrado no AMS, possui um identificador e pode executar seus serviços

• Suspenso

– O objeto agente está parado, i.e. sua thread interna está suspensa e o agente não está executando serviço algum

Page 13: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Ciclo de Vida de um Agente

• Esperando

– O objeto agente está bloqueado, esperando por algum evento, i.e. sua thread interna está dormindo e será acordada quando uma condição se tornar verdadeira

• Removido

– O objeto agente está terminado, i.e. sua thread interna acabou sua execução e o agente não está mais registrado no AMS

• Em Trânsito

– Um agente móvel entra neste estado quando está migrando para um novo local (contêiner). O sistema continua a armazenar as mensagens enviadas a este agente, que lhe serão passadas quando ele estiver no novo local

Page 14: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

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 MAS

– Ex: agente@localhost:1099/JADE

– Entra no estado Ativo

• É executado o método setup()

– Método responsável por inicializar os comportamentos do agente

Page 15: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

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

Page 16: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Um Exemplo

Page 17: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

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

Page 18: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

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

protected void takeDown() { // Imprimindo uma mensagem de saida System.out.println("Agente " + getAID().getName() + " terminando."); }}

Page 19: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

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

Page 20: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

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

Page 21: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

O Esquema de um Comportamento

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

public boolean done() { return true; }}

Page 22: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Detalhes sobre 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

Page 23: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

A Execução de um Agente

Page 24: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

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

Page 25: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

A Hierarquia de Comportamentos

Page 26: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Esquemas de Comportamentos Simples

// 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 27: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

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

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

Page 28: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Comportamentos Especiais

• WakerBehaviour

– Comportamento que espera um determinado período de tempo (em ms) para efetivamente executar a tarefa

• TickerBehaviour

– Comportamento que executa uma tarefa periodicamente em intervalos de tempo constantes (em ms). Este comportamento nunca acaba

Page 29: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

WakerBehaviour

public class MyAgent extends Agent { protected void setup() { System.out.println("Adicionando waker behaviour"); addBehaviour(new WakerBehaviour(this, 10000) { protected void handleElapsedTimeout() { // Executa a operação X } } ); }}

A operação X é executada 10 segundo depois de imprimir "Adicionando waker behaviour"

Page 30: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

TickerBehaviour

public class MyAgent extends Agent { protected void setup() { addBehaviour(new TickerBehaviour(this, 10000) { protected void onTick() { // Executar a operação Y } } ); }}

A operação Y é executada periodicamente a cada 10 segundos

Page 31: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

A Comunicação entre Agentes

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

Page 32: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

A Linguagem ACL

• Campos principais

– Sender: o agente que envia a mensagem

– Receivers: lista de agentes destino da mensagem

– Performative: ato de fala que indica o que o agente que envia a mensagem espera com ela

– Content: o real conteúdo da mensagem

– Language: sintaxe usada para expressar o conteúdo

– Ontology: denota a semântica dos itens do conteúdo

– Outros campos de controle de convesação como: conversation-id, reply-with, in-reply-to, reply-by

Page 33: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

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

Page 34: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

A Linguagem ACL – Performativas

• INFORM “A porta está aberta”

• QUERY “A porta está aberta?”

• CFP “Alguém quer abrir a porta?”

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

Page 35: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

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

Page 36: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

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

Page 37: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Recebendo Mensagens

• Para se 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}

Page 38: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Bloqueando um Agente à espera de uma Mensagem

• O scheduler de ações do Jade não pára a execução de uma ação caso não haja mensagens para um agente

• Para parar a execução de uma ação à espera de uma mensagem, deve-se usar o método block()

public void action() { ACLMessage msg = myAgent.receive(); if (msg != null) { // Mensagem recebida - processá-la ... } else block();}

Page 39: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Selecionando um Tipo de Mensagem da Fila

• Pode-se selecionar um tipo de mensagem da fila usando um MessageTemplate

public void action() { MessageTemplate mt; mt = MessageTemplate.MatchPerformative(ACLMessage.CFP); ACLMessage msg = myAgent.receive(mt); if (msg != null) { // Mensagem do tipo CFP recebida - processá-la ... } else block();}

Page 40: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

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

• Todo agente deve registrar seu serviço no DF

• Só existe um DF em cada plataforma Jade

Page 41: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

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

Page 42: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

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

Page 43: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

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.getName(); } catch (FIPAException fe) { fe.printStackTrace(); } ... } ); ...}

Page 44: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Nova versã0 3.5 – Novidade

• Novo mecanismo de comunicação– Para lista de assinaturas

– Os agentes podem enviam mensagens sem especificar os destinatários, somente o assunto

– Implementado no kernel do Jade pelo • TopicManagement Service

• jade.core.messaging package

• Versão reestruturada do Web Service Integration Gateway (WSIG)– 1) Está empacotado com uma aplicação web que pode ser implantada

em qualquer servidor, tal como, Apache Tomcat

– 2) Os web services visíveis são derivados diretamente das ações especificadas na ontologia referenciada pelo descritor de serviço registrado no DF.

– 3) um documento WSDL padrão é produzido para cada agent service que precise ser visível como um web service.

• Desta forma é possível construir clientes web services sem nenhum conhecimento sobre qual agente provê o serviço e como ele o faz

• http://jade.tilab.com/doc/tutorials/WSIG_Guide.pdf

Page 45: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

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

Page 46: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

Jadex BDI Agent Systems

http://vsis-www.informatik.uni-hamburg.de/projects/jadex/

Versão atual: 0.96 (15 Junho 2007)

Page 47: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Jadex - Introdução

• O que são agentes inteligentes mesmo?

• Como construir os modelos mentais dos agentes usando o Jade?

Page 48: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Jadex - Introdução

• Modelo BDI – Belief Desire Intention

• É necessário uma arquitetura de agentes capaz de montar as inúmeras partes do agente que representa o modelo

– Agente interno

– Sociedade de agentes

– Inteligência artificial

• Jadex = Jade + BDI

– Grupo de Sistemas Distribuídos e Sistemas de Informação

– Universidade de Hamburg

Page 49: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Jadex

• Jade + BDI

– Mas o que muda exatamente?

AGENTES ORIENTADOS A OBJETIVOS

– Classes explícitas

• Belief, Goals, Plans

– Os agentes possuem beliefs, que pode ser qualquer tipo de classe Java e são carregados em uma base de belief

– Goals são descrições de estado a ser alcançado implícitas ou explícitas

– Para atingir os objetivos (goals) os agentes executam os planos (plans)

Page 50: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Jadex

Os planos podem ler e alterar os beliefs do agente

Page 51: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Jadex

Page 52: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Jadex Agent

Page 53: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Jadex

• OQL-like query language

– Linguagem de busca de fatos na base de beliefs

• ADF - XML based Agent Definition File

– Especifica os beliefs, goals e plans iniciais do agente

– O ambiente de execução Jadex

• le o arquivo

• gera o modelo mental do agente

• Executa o agente de acordo com os goals, selecionando os planos

• Capabilities

– Define um conjunto de funcionalidades pre-definidas

• Tais como para acessar o DF

– Arquivo tal como ADF que pode ser plugado nos agentes

Page 54: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Jadex - OQL

Page 55: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Jadex – Agent Plattform

Page 56: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Jadex - Fragmento de Especificação do Meta-modelo do Agente

Page 57: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Jadex - Especificação do Meta-modelo do Goal

Page 58: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Jadex – Esqueleto de Plano

Page 59: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Exemplo

Page 60: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Exemplo

Page 61: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Exemplo – Modelo do Agente

Page 62: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Plano: StackBlocks

Page 63: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Arquitetura Jadex

Page 64: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Jadex - Ferramentas

• Todas do Jade

• Ferramenta de visualização BDI

• Ferramenta Introspector

• Agente de Log (Logger Agent)

Page 65: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Jadex – BDI Viewer Tool

Page 66: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Jadex – Introspector Tool

Page 67: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Jadex Webbridge

• Como usar Jadex em uma aplicação Web?

• Servlets, JSP, Jade, Jadex, Goals....???

Page 68: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Jadex Webbridge

Page 69: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

ESSMA

• Panacéia linguagens de modelagem e metodologias

• Panacéia de plataformas e frameworks

• Como integrar???

Page 70: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

AUML + Jadex

• Protocolos de interação orientados a objetivos

Page 71: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

AUML + Jadex

• Protocolos de interação orientados a objetivos

– META: Esconder o detalhe da troca de mensagens entre os agentes para dar ênfase nos aspectos de domínio dos protocolos

Page 72: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

AUML + Jadex

• Protocolos de interação orientados a objetivos

Page 73: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Page 74: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Page 75: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

O plano para o comprador

Page 76: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

AUML + Jade bahaviors

• FSM: Finite State Machine

• cpXML: conversation policy XML

• template of the conversation building block

Page 77: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

AUML -> FSM

Page 78: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Plugin Eclipse

Page 79: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

© LES/PUC-Rio

Bibliografia

• Jade: http://jade.tilab.com/

• Lars Braubach, Alexander Pokahr. Goal-Oriented Interaction Protocols, Fifth German conference on Multi-Agent System TEchnologieS (MATES-2007).

• Alexander Pokahr, Lars Braubach. An Architecture and Framework for Agent-Based Web Applications, 5th International Central and Eastern European Conference on Multi-Agent Systems (CEEMAS 2007).

• Alexander Pokahr, Lars Braubach, Winfried Lamersdorf. A Flexible BDI Architecture Supporting Extensibility, The 2005 IEEE/WIC/ACM International Conference on Intelligent Agent Technology (IAT-2005).

• Alexander Pokahr, Lars Braubach, Winfried Lamersdorf. Jadex: A BDI Reasoning Engine, Chapter of Multi-Agent Programming, Kluwer Book, Editors: R. Bordini, M. Dastani, J. Dix and A. Seghrouchni.

• Alexander Pokahr, Lars Braubach, Winfried Lamersdorf. A Flexible BDI Architecture Supporting Extensibility, The 2005 IEEE/WIC/ACM International Conference on Intelligent Agent Technology (IAT-2005).

• M. Dinkloh and J. Nimis. A tool for integrated design and implementation of conversations in multiagent systems. In ProMAS Workshop, pages 187–200, 2004.

Page 80: JADE/JADEX Maíra Gatti 2007.2. © LES/PUC-Rio Agenda Jade Jadex Jadex WebBridge ESSMA –AUML + Jadex –AUML + Jade.

Obrigada!

Maíra Gatti

2007.2