JADE The Java Agent DEvelopment Framework Ismnia Galvo















































- Slides: 47

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 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 - Ferramentas gráficas - Como implementar um SMA?

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

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) ¡ ¡ ¡ 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 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 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 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 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 interação

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 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: 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 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 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 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 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. 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 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() 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

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

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 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 @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 %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

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