JADE The Java Agent DEvelopment Framework Ismnia Galvo

  • Slides: 47
Download presentation
JADE The Java Agent DEvelopment Framework Ismênia Galvão Lourenço da Silva igls@cin. ufpe. br

JADE The Java Agent DEvelopment Framework Ismênia Galvão Lourenço da Silva igls@cin. ufpe. br Rodrigo Barros de V. Lima rbvl@cin. ufpe. br PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO CENTRO DE INFORMÁTICA UNIVERSIDADE FEDERAL DE PERNAMBUCO

JADE Roteiro n n n Desvendando JADE ¡ O que é JADE? ¡ Principais

JADE Roteiro n n n Desvendando JADE ¡ O que é JADE? ¡ Principais características ¡ Ferramentas gráficas de JADE Como implementar os conceitos de SMA? ¡ Agentes ¡ Mensagens ACL ¡ Comportamentos ¡ Protocolos de interação Utilizando JADE ¡ Informações gerais ¡ Instalação & Execução 08/03/2021 2

Desvendando JADE. . . - O que é JADE? - Principais características de JADE

Desvendando JADE. . . - O que é JADE? - Principais características de JADE - Ferramentas gráficas - Como implementar um SMA?

JADE O que é JADE? n Pode ser visto como um middle-ware de agentes

JADE O que é JADE? n Pode ser visto como um middle-ware de agentes que implementa uma plataforma distribuída e um framework de desenvolvimento para SMA n Desenvolvido pelo CSELT e Univ. Parma n Completamente implementado em Java n Obedece às especificações da FIPA - Foundation for Intelligent Physical Agents (1997 / 2000) n Composto por: ¡ Ambiente de execução onde os agentes residem ¡ Biblioteca de classes para a criação de agentes ¡ Pacote de ferramentas gráficas de suporte 08/03/2021 4

JADE Principais características n Lida com os aspectos que não fazem parte do agente

JADE Principais características n Lida com os aspectos que não fazem parte do agente em si, tais como: ¡ n Provê ferramentas de suporte ¡ n Transporte de mensagens, codificação, parsing, ciclo de vida do agente, páginas brancas, páginas amarelas, . . . Remote Monitoring Agent, Dummy Agent, Sniffer Agent, . . . Foi projetado para dar suporte a escalabilidade de SMA 08/03/2021 5

JADE Principais características n n É baseado no conceito de container ¡ Um container

JADE Principais características n n É baseado no conceito de container ¡ Um container = instância do ambiente de execução JADE ¡ Diferentes containers na mesma plataforma (1 JVM por container) ¡ Diferentes agentes no mesmo container ¡ Cada agente tem sua própria thread de execução Uma Plataforma é composta por um conjunto de containers ativos Cada plataforma possui, obrigatoriamente, um 08/03/2021 Main Container n 6

JADE O Main Container n Possui a habilidade de aceitar registros de outros containers

JADE O Main Container n Possui a habilidade de aceitar registros de outros containers n Possui dois agentes especiais: ¡ Agent Management System n ¡ Directory Facilitator n 08/03/2021 Serviço de nomes, “autoridade da plataforma” Serviço de páginas amarelas 7

Containers e Plataformas JADE 08/03/2021 JADE 8

Containers e Plataformas JADE 08/03/2021 JADE 8

JADE Ferramentas gráficas n Remote Monitoring Agent (RMA) n Sniffer Agent n Introspector Agent

JADE Ferramentas gráficas n Remote Monitoring Agent (RMA) n Sniffer Agent n Introspector Agent n Dummy Agent n Directory Facilitator (DF) 08/03/2021 9

JADE Ferramentas gráficas Sniffer Dummy Introspector Agent n Remote Monitoring Agent (RMA) ¡ ¡

JADE Ferramentas gráficas Sniffer Dummy Introspector Agent n Remote Monitoring Agent (RMA) ¡ ¡ ¡ 08/03/2021 Funciona como uma console gráfica para gerenciamento e controle da plataforma; É usada para monitorar e administrar o status de todos os componentes da plataforma distribuída, incluindo agentes e containers; Serve para controlar o ciclo de vida dos agentes, conexões com plataformas remotas e a instalação de protocolos de transporte de mensagens 10

JADE Ferramentas gráficas n Sniffer Agent ¡ ¡ ¡ 08/03/2021 É usado para interceptar

JADE Ferramentas gráficas n Sniffer Agent ¡ ¡ ¡ 08/03/2021 É usado para interceptar as mensagens ACL e exibir a conversação através de uma notação similar ao diagrama de seqüência da UML; Útil para depuração de conversação entre agentes; Permite que as conversações sejam salvas ou carregadas em arquivos. 11

JADE Ferramentas gráficas n Introspector Agent ¡ ¡ 08/03/2021 É usado para monitorar o

JADE Ferramentas gráficas n Introspector Agent ¡ ¡ 08/03/2021 É usado para monitorar o ciclo de vida de um agente, suas mensagens ACL trocadas e seus comportamentos em execução. Permite controlar a execução de um agente. 12

JADE Ferramentas gráficas n Dummy Agent ¡ ¡ 08/03/2021 É uma ferramenta utilizada para

JADE Ferramentas gráficas n Dummy Agent ¡ ¡ 08/03/2021 É uma ferramenta utilizada para compor e enviar mensagens ACL para outros agentes, bem como para exibir as mensagens recebidas; Permite que as mensagens sejam salvas ou carregadas em arquivos. 13

JADE Ferramentas gráficas n Directory Facilitator (DF) ¡ ¡ ¡ 08/03/2021 Representa o FIPA

JADE Ferramentas gráficas n Directory Facilitator (DF) ¡ ¡ ¡ 08/03/2021 Representa o FIPA DF, o componente de páginas amarelas do sistema; Permite registrar / de-registrar / modificar / buscar agentes e serviços; Permite criar confederações de DF e realizar propagação de busca através de domínios e subdomínios. 14

Como implementar um SMA? - Agentes - Mensagens ACL - Comportamentos - Protocolos de

Como implementar um SMA? - Agentes - Mensagens ACL - Comportamentos - Protocolos de interação

JADE Agentes n Um agente em JADE é uma instância da classe Agent n

JADE Agentes n Um agente em JADE é uma instância da classe Agent n Heranças da classe Agent: ¡ Características para realizar as interações básicas com a plataforma de agentes (registro, configuração, gerenciamento remoto, . . . ); ¡ O conjunto básico de métodos que podem ser chamados para implementar o comportamento personalizado do agente (enviar/receber mensagens, usar protocolos de interação, . . . ) 08/03/2021 16

JADE Agentes n Cada serviço/funcionalidade de um agente deve ser implementado como um ou

JADE Agentes n Cada serviço/funcionalidade de um agente deve ser implementado como um ou mais comportamentos n Os comportamentos de JADE modelam arquiteturas reativas n A abstração de comportamento do modelo do agente de JADE permite a integração de softwares externos para enriquecer a arquitetura do agente n Ex: agentes reativos-deliberativos com JADE e JESS 08/03/2021 17

JADE Agentes n A classe Agent representa os estados do agente através de constantes:

JADE Agentes n A classe Agent representa os estados do agente através de constantes: ESTADOS ¡ AP_INITIATED ¡ AP_ACTIVE ¡ AP_SUSPENDED ¡ AP_WAITING ¡ AP_DELETED ¡ AP_TRANSIT ¡ AP_COPY ¡ AP_GONE 08/03/2021 MÉTODOS 18

JADE Agentes n Como JADE controla a criação de um novo agente? 1. O

JADE Agentes n Como JADE controla a criação de um novo agente? 1. O construtor do agente é executado 2. Um AID (Agent Identifier) é atribuído ao agente 3. O agente é registrado no AMS (Agent Management System - páginas brancas) 4. O agente é colocado no estado AP_ACTIVE 5. O método setup() é executado 08/03/2021 19

JADE Agentes n Um AID (Agent Identifier) é constituído por: ¡ ¡ ¡ 08/03/2021

JADE Agentes n Um AID (Agent Identifier) é constituído por: ¡ ¡ ¡ 08/03/2021 Um nome globalmente único: n <localname>@<hostname>: <port>/JADE n Ex: ams@G 6 C 15: 1099/JADE Um conjunto de endereços de agentes n Endereços das plataformas em que o agente reside n Utilizados apenas quando agentes desejam se comunicar com agentes em outras plataformas Agentes também possuem um “apelido” 20

JADE Agentes n Agentes também possuem “apelidos” ¡ n Ex. : ams Através do

JADE Agentes n Agentes também possuem “apelidos” ¡ n Ex. : ams Através do apelido o AID de um agente pode ser obtido da seguinte forma: String nickname = “Peter”; AID id = new AID(nickname, AID. ISLOCALNAME); 08/03/2021 21

JADE Agentes n O método setup() ¡ Deve ser implementado para inicialização de um

JADE Agentes n O método setup() ¡ Deve ser implementado para inicialização de um agente; ¡ Deve adicionar pelo menos um comportamento para o agente através do método add. Behaviour(); ¡ Ao final da execução do método setup(), JADE executa automaticamente os comportamentos, a partir do que foi declarado primeiro, usando um escalonamento circular não-preemptivo. ¡ Deve incluir apenas operações de inicialização dos agentes 08/03/2021 n Serviços são disponibilizados através de Behaviours 22

Ex: Criação de um agente simples JADE import jade. core. Agent; public class Agente.

Ex: Criação de um agente simples JADE import jade. core. Agent; public class Agente. Simples extends Agent { protected void setup() { System. out. println(“Ola ! Agente ” + get. AID(). get. Name() + “ está pronto!”); } } 08/03/2021 23

JADE Comportamentos n A(s) tarefa(s) do agente devem ser criadas como subclasses da classe

JADE Comportamentos n A(s) tarefa(s) do agente devem ser criadas como subclasses da classe Behaviour n Para executar um comportamento basta adicionálo a lista de comportamentos do agente através do método add. Behaviour() n Todo comportamento tem acesso ao agente ao qual está associado através da propriedade my. Agent n Comportamentos podem ser adicionados a qualquer momento: ¡ Quando o agente for inicializado (método setup()) ¡ A partir de outros comportamentos 08/03/2021 24

JADE Comportamentos n Cada classe que estende Behaviour deve implementar os métodos: ¡ action()

JADE Comportamentos n Cada classe que estende Behaviour deve implementar os métodos: ¡ action() n ¡ done() n n Define a tarefa a ser executada Especifica se o comportamento foi completado e deve ser removido da lista de comportamentos Um agente pode executar vários comportamentos concorrentemente ¡ 08/03/2021 Cuidado: execução não-preemptiva, método action() é executado até que o mesmo retorne ! 25

Ciclo de execução de um agente 08/03/2021 JADE 26

Ciclo de execução de um agente 08/03/2021 JADE 26

JADE Comportamentos Behaviour Simple Behaviour One. Shot. Behaviour Cyclic. Behaviour Composite. Behaviour Sequential. Behaviour

JADE Comportamentos Behaviour Simple Behaviour One. Shot. Behaviour Cyclic. Behaviour Composite. Behaviour Sequential. Behaviour FSMt. Behaviour Parallel. Behaviour 08/03/2021 27

JADE Comportamentos n Behaviour ¡ n Simple. Behaviour ¡ n Modela uma tarefa simples

JADE Comportamentos n Behaviour ¡ n Simple. Behaviour ¡ n Modela uma tarefa simples (que não tem sub-tarefas) One. Shot. Behaviour ¡ n Modela uma tarefa genérica Modela uma tarefa atômica (seu método done() retorna true) Cyclic. Behaviour ¡ 08/03/2021 Modela uma tarefa cíclica (seu método done() retorna false) 28

JADE Comportamentos n Composite. Behaviour ¡ n Sequential. Behaviour ¡ n Modela uma tarefa

JADE Comportamentos n Composite. Behaviour ¡ n Sequential. Behaviour ¡ n Modela uma tarefa na qual suas sub-tarefas são seqüenciais Parallel. Behaviour ¡ n Modela uma tarefa complexa (realizada através da composição de outras tarefas) Modela uma tarefa na qual suas sub-tarefas são concorrentes FSMBehaviour ¡ 08/03/2021 Modela uma tarefa na qual suas sub-tarefas correspondem as atividades realizadas em estados de uma Máquina de Estados Finitos 29

Ex. : Criando comportamentos JADE public class First. Behaviour extends Behaviour { int step

Ex. : Criando comportamentos JADE public class First. Behaviour extends Behaviour { int step = 0; public void action() switch (step) { case 0: // Executa ação 0 step++; break; case 1: // Executa ação 1 step++; break; } public void done() { return step == 3; } } 08/03/2021 30

JADE Mensagens ACL n Em JADE os agentes se comunicam através de passagem assíncrona

JADE Mensagens ACL n Em JADE os agentes se comunicam através de passagem assíncrona de mensagens ACL n A classe ACLMessage representa as mensagens de acordo com as especificações da FIPA (fipa 000061) n Todos os parâmetros são pares palavra-chave: valor n Os valores dos parâmetros podem ser inseridos através dos métodos set() e podem ser lidos através de métodos get() n As performativas da FIPA são identificadas por constantes. 08/03/2021 31

JADE Mensagens ACL n Sub-sistema de comunicação de JADE ¡ Todo agente tem uma

JADE Mensagens ACL n Sub-sistema de comunicação de JADE ¡ Todo agente tem uma fila privada de mensagens ACL criada e preenchida pelo subsistema de comunicação de JADE ¡ O agente é informado sempre que uma mensagem é adicionada a sua lista de mensagens ¡ Cabe ao programador como se dará o tratamento dessas mensagens ¡ Se uma mensagem é enviada e o sub-sistema não consegue encontrar o destinatário, ele a envia para ser gerenciada pelo AMS 08/03/2021 32

Ex: Criando/Enviando mensagens JADE public void action() { ACLMessage msg = new ACLMessage(ACLMessage. INFORM);

Ex: Criando/Enviando mensagens JADE public void action() { ACLMessage msg = new ACLMessage(ACLMessage. INFORM); msg. add. Receiver(new AID(“Peter”, AID. ISLOCALNAME); msg. set. Language(“English”); msg. set. Ontology(“Weather-forecast-ontology”); msg. set. Content(“Today is rainning!”) // Método da classe Agent para enviar mensagens send(msg); } 08/03/2021 33

JADE Mensagens ACL PERFORMATIVAQUERY-IF : sender solicitador@G 6 C 15: 1099/JADE ENDEREÇAMENTO: receiver CSELT@G

JADE Mensagens ACL PERFORMATIVAQUERY-IF : sender solicitador@G 6 C 15: 1099/JADE ENDEREÇAMENTO: receiver CSELT@G 6 C 15: 1099/JADE : protocol fipa-query : conversation_id C 2471722_1067382505429 COMUNICAÇÃO : reply_with : reply_by : language fipa-sl 0 : ontology employment-ontology : content ((WORKS-FOR (PERSON : name "Ismenia Galvao" : age 24 : address (ADDRESS : street "Rua Principal" MENSAGEM : number 0 : city Recife)) (COMPANY : name CSELT : address (ADDRESS : street "Via Reiss Romoli" : number 274 : city Turin)))) 08/03/2021 34

Ex. : Recebendo mensagens JADE // Estrutura básica para recebimento de mensagens public void

Ex. : Recebendo mensagens JADE // Estrutura básica para recebimento de mensagens public void action() { //Classe para criar templates de mensagens Message. Template mt = message. Template. Match. Performative(ACLMessage. CFP); ACLMessage msg = my. Agent. receive(mt); if (msg != null) { // Tratamento da mensagem } else { block(); } } 08/03/2021 35

JADE Protocolos de interação n A FIPA especifica um conjunto de protocolos de interação

JADE Protocolos de interação n A FIPA especifica um conjunto de protocolos de interação padronizados n JADE distingue os papéis de Initiator e Responder para cada conversação entre agentes n Achieve. RE (Achieve Rational Effect) ¡ Achieve. REInitiator ¡ Simple. Achieve. REInitiator ¡ Achieve. REResponder ¡ Simple. Achieve. REResponder 08/03/2021 36

JADE Protocolos de interação n n FIPA-Contract-Net ¡ Contract. Net. Inintiator ¡ Contract. Net.

JADE Protocolos de interação n n FIPA-Contract-Net ¡ Contract. Net. Inintiator ¡ Contract. Net. Responder Estados genéricos para protocolos de interação ¡ Handler. Selector ¡ Msg. Receiver 08/03/2021 37

Utilizando JADE - Informações gerais - Instalação & Execução

Utilizando JADE - Informações gerais - Instalação & Execução

JADE Informações gerais n n Versões ¡ Versão atual de JADE: 3. 0 b

JADE Informações gerais n n Versões ¡ Versão atual de JADE: 3. 0 b 1 (19. 03) ¡ Todos os arquivos. jar foram gerados com o JDK 1. 2 Requisitos de software ¡ n JDK 1. 2 Run Time ou posterior Distribuição do software ¡ 08/03/2021 De acordo com a licença LGPL 39

JADE Instalação de JADE n Download de arquivos: ¡ Mapear unidade de rede \cin

JADE Instalação de JADE n Download de arquivos: ¡ Mapear unidade de rede \cin 04appsfipa Copiar o diretório JADE OU ¡ http: //jade. cselt. it/license. htm OU ¡ 08/03/2021 http: //www. cin. ufpe. br/~rbvl/jade/aula_jade. zip Salvar aula_jade. zip Descompactar em c: temp 40

JADE Instalação de JADE n Configuração do ambiente de execução: ¡ configurar. JADE. bat

JADE Instalação de JADE n Configuração do ambiente de execução: ¡ configurar. JADE. bat @set @set @set 08/03/2021 path=%path%; p: jdk 1. 4. 0bin path=%path%; C: tempjade classpath=%classpath%. ; p: jdk 1. 4. 0libtools. jar classpath=%classpath%. ; p: jdk 1. 4. 0jrelibrt. jar classpath=%classpath%. ; c: tempjadelibjade. Tools. jar classpath=%classpath%. ; c: tempjadelibjade. jar classpath=%classpath%. ; c: tempjadelibBase 64. jar classpath=%classpath%. ; c: tempjadelibiiop. jar 41

JADE Execução de JADE n Compilação: ¡ compilar. JADE. bat javac n %1 %2

JADE Execução de JADE n Compilação: ¡ compilar. JADE. bat javac n %1 %2 %3 %4 %5 %6 %7 %8 %9 Execução: ¡ executar. JADE. bat java jade. Boot -gui %1 %2 %3 %4 %5 %6 %7 %8 %9 08/03/2021 42

Exemplos - Compra/Venda de Livros

Exemplos - Compra/Venda de Livros

JADE Compra/Venda de Livros n Agentes compradores enviam mensagens CFP solicitando a compra de

JADE Compra/Venda de Livros n Agentes compradores enviam mensagens CFP solicitando a compra de algum livro n Agentes vendedores informam a disponibilidade do livro e o seu valor de venda em caso esteja disponível n Agentes compradores escolhem a melhor oferta e informam o agente vendedor que fez a oferta n Baixar os arquivos de: ¡ 08/03/2021 http: //www. cin. ufpe. br/~rbvl/jade/ex_jade. zip Descompactar em c: temp 44

JADE Compra/Venda de Livros n No prompt digitar executar. JADE n No RMA expandir

JADE Compra/Venda de Livros n No prompt digitar executar. JADE n No RMA expandir as pastas até a pasta Main. Container tornar-se visível n Inicializar o agente Sniffer. Agent n Clicar no botão “Start New Agent” ¡ Informar o Agent Name, Class Name (Book. Buyer. Agent ou Book. Seller. Agent) e os Arguments (nome_livro ou nome_livro preço) No agente Sniffer clicar com o botão direito sobre os agentes criados e selecionar “Do sniff this agent(s)” 08/03/2021 45 n

JADE Por que JADE? n Não há necessidade de implementar a plataforma de agentes.

JADE Por que JADE? n Não há necessidade de implementar a plataforma de agentes. . . n Não há necessidade de implementar as funcionalidades e a ontologia de gerenciamento de agentes. . . n Não há necessidade de implementar o transporte e parsing de mensagens. . . n Os protocolos de interação podem ser estendidos. . . n Segue as especificações da FIPA ! 08/03/2021 46

JADE Links n Java Agent DEvelopment Framework ¡ n API de JADE ¡ n

JADE Links n Java Agent DEvelopment Framework ¡ n API de JADE ¡ n http: //jade. cselt. it/doc/api/index. html Documentação on-line de JADE ¡ n http: //jade. cselt. it/doc/index. html Outros tutoriais de JADE ¡ http: //agents. felk. cvut. cz/teaching/ui 2/JADE_tutorial. htm ¡ http: //www. soe. ucsc. edu/research/agents/borcon/index. html ¡ http: //www. ryerson. ca/~dgrimsha/courses/cps 720/JADEAdmin/ja de. Start. html ¡ http: //www. ryerson. ca/~dgrimsha/courses/cps 720_02/course. Topi cs. html ¡ http: //www. etse. urv. es/recerca/banzai/toni/MAS/material. html 08/03/2021 47