A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

JADE/JADEX Maíra Gatti 2007.2.

Cópias: 1
Jade Java Agent Development Framework Versão atual: 3.5 (25 Junho 2007)

Apresentações semelhantes


Apresentação em tema: "JADE/JADEX Maíra Gatti 2007.2."— Transcrição da apresentação:

1 JADE/JADEX Maíra Gatti 2007.2

2 Agenda Jade Jadex Jadex WebBridge ESSMA AUML + Jadex AUML + Jade
© LES/PUC-Rio

3 Jade Java Agent Development Framework
Versão atual: 3.5 (25 Junho 2007)

4 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 © LES/PUC-Rio

5 Contêiner e Plataforma
Instância de um ambiente Jade É onde os agentes executam Ao iniciar o Jade, um MainContainer é criado Plataforma Conjunto de contêineres ativos © LES/PUC-Rio

6 Contêineres e Plataformas
© LES/PUC-Rio

7 A Plataforma O Jade segue o modelo da FIPA (Foundation for Intelligent Physical Agents) © LES/PUC-Rio

8 AMS e DF Agent Management System (AMS) Directory Facilitator (DF)
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 © LES/PUC-Rio

9 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 © LES/PUC-Rio

10 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 © LES/PUC-Rio

11 O Ciclo de Vida de um Agente
- INITIATED : the Agent object is built, but hasn't registered itself yet with the AMS, has neither a name nor an address and cannot communicate with other agents. - ACTIVE : the Agent object is registered with the AMS, has a regular name and address and can access all the various JADE features. - SUSPENDED : the Agent object is currently stopped. Its internal thread is suspended and no agent behaviour is being executed. - WAITING : the Agent object is blocked, waiting for something. Its internal thread is sleeping on a Java monitor and will wake up when some condition is met (typically when a message arrives). - DELETED : the Agent is definitely dead. The internal thread has terminated its execution and the Agent is no more registered with the AMS. - TRANSIT: a mobile agent enters this state while it is migrating to the new location. The system continues to buffer messages that will then be sent to its new location. © LES/PUC-Rio

12 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 © LES/PUC-Rio

13 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 © LES/PUC-Rio

14 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: Entra no estado Ativo É executado o método setup() Método responsável por inicializar os comportamentos do agente © LES/PUC-Rio

15 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 © LES/PUC-Rio

16 Um Exemplo © LES/PUC-Rio

17 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 © LES/PUC-Rio

18 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."); © LES/PUC-Rio

19 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 © LES/PUC-Rio

20 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 © LES/PUC-Rio

21 O Esquema de um Comportamento
public class UmComportamento extends Behaviour { public void action() { while (true) { // Código do Comportamento } public boolean done() { return true; © LES/PUC-Rio

22 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 © LES/PUC-Rio

23 A Execução de um Agente © 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 © LES/PUC-Rio

25 A Hierarquia de Comportamentos
© 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 © LES/PUC-Rio

27 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 © LES/PUC-Rio

28 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 © LES/PUC-Rio

29 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 } public boolean done() { return step == 2; © LES/PUC-Rio

30 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 © LES/PUC-Rio

31 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" © LES/PUC-Rio

32 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 © LES/PUC-Rio

33 A Comunicação entre Agentes
A troca de mensagens é assíncrona e usa a FIPA ACL (Agent Communication Language) © LES/PUC-Rio

34 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 © LES/PUC-Rio

35 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 © LES/PUC-Rio

36 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” © LES/PUC-Rio

37 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?” © LES/PUC-Rio

38 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); © LES/PUC-Rio

39 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 } © LES/PUC-Rio

40 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(); © LES/PUC-Rio

41 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(); © LES/PUC-Rio

42 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 © LES/PUC-Rio

43 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(); } } © LES/PUC-Rio

44 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"); © LES/PUC-Rio

45 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(); } } ); © LES/PUC-Rio

46 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 © LES/PUC-Rio

47 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 © LES/PUC-Rio

48 Jadex BDI Agent Systems
Versão atual: 0.96 (15 Junho 2007)

49 Jadex - Introdução O que são agentes inteligentes mesmo?
Como construir os modelos mentais dos agentes usando o Jade? © LES/PUC-Rio

50 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 © LES/PUC-Rio

51 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) © LES/PUC-Rio

52 Jadex Os planos podem ler e alterar os beliefs do agente © LES/PUC-Rio

53 Jadex © LES/PUC-Rio

54 Jadex Agent © LES/PUC-Rio

55 Jadex OQL-like query language ADF - XML based Agent Definition File
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 © LES/PUC-Rio

56 Jadex - OQL © LES/PUC-Rio

57 Jadex – Agent Plattform
© LES/PUC-Rio

58 Jadex - Fragmento de Especificação do Meta-modelo do Agente
© LES/PUC-Rio

59 Jadex - Especificação do Meta-modelo do Goal
© LES/PUC-Rio

60 Jadex – Esqueleto de Plano
© LES/PUC-Rio

61 Exemplo © LES/PUC-Rio

62 Exemplo © LES/PUC-Rio

63 Exemplo – Modelo do Agente
© LES/PUC-Rio

64 Plano: StackBlocks © LES/PUC-Rio

65 Arquitetura Jadex © LES/PUC-Rio

66 Jadex - Ferramentas Todas do Jade Ferramenta de visualização BDI
Ferramenta Introspector Agente de Log (Logger Agent) © LES/PUC-Rio

67 Jadex – BDI Viewer Tool © LES/PUC-Rio

68 Jadex – Introspector Tool
© LES/PUC-Rio

69 Jadex Webbridge Como usar Jadex em uma aplicação Web?
Servlets, JSP, Jade, Jadex, Goals....??? © LES/PUC-Rio

70 Jadex Webbridge © LES/PUC-Rio

71 ESSMA Panacéia linguagens de modelagem e metodologias
Panacéia de plataformas e frameworks Como integrar??? © LES/PUC-Rio

72 AUML + Jadex Protocolos de interação orientados a objetivos
© LES/PUC-Rio

73 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 © LES/PUC-Rio

74 AUML + Jadex Protocolos de interação orientados a objetivos
© LES/PUC-Rio

75 © LES/PUC-Rio

76 © LES/PUC-Rio

77 O plano para o comprador
© LES/PUC-Rio

78 AUML + Jade bahaviors FSM: Finite State Machine
cpXML: conversation policy XML template of the conversation building block © LES/PUC-Rio

79 AUML -> FSM © LES/PUC-Rio

80 Plugin Eclipse © LES/PUC-Rio

81 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. M. Dinkloh and J. Nimis. A tool for integrated design and implementation of conversations in multiagent systems. In ProMAS Workshop, pages 187–200, 2004. © LES/PUC-Rio

82 Obrigada! Maíra Gatti 2007.2


Carregar ppt "JADE/JADEX Maíra Gatti 2007.2."

Apresentações semelhantes


Anúncios Google