JADE The Java Agent DEvelopment Framework Ismênia Galvão Lourenço da Silva [email protected] PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO CENTRO DE INFORMÁTICA UNIVERSIDADE FEDERAL DE PERNAMBUCO JADE Roteiro Desvendando JADE O que é JADE? Principais características Ferramentas gráficas de JADE Como implementar os conceitos de SMA? Utilizando JADE Informações gerais Instalação & Execução Exemplos Links 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 2 Desvendando JADE... - O que é JADE? - Principais características de JADE - Ferramentas gráficas - Como implementar um SMA? JADE O que é JADE? JADE é um framework para desenvolvimento de SMA Desenvolvido pelo CSELT e Univ. Parma Completamente implementado em Java Obedece às especificações da FIPA - Foundation for Intelligent Physical Agents (1997 / 2000) Pode ser visto como um middle-ware de agentes que implementa uma plataforma distribuída e um framework de desenvolvimento. 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 4 JADE Principais características Lida com os aspectos que não fazem parte do agente em si, tais como: Provê ferramentas de suporte 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 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 5 JADE Principais características É baseado no conceito de container Um container = processo Diferentes containers na mesma plataforma (1 JVM por container) Diferentes agentes no mesmo container (ambiente multi-threaded pre-emptivo escalonado pela JVM) Cada agente tem sua própria thread de execução Cada agente pode ter diferentes comportamentos 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 6 JADE Ferramentas gráficas Remote Monitoring Agent (RMA) Sniffer Agent Introspector Agent Dummy Agent Directory Facilitator (DF) 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 7 JADE Ferramentas gráficas SnifferDummy Agent Introspector Agent Agent Remote Monitoring Agent (RMA) 29.10.2003 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 Tópicos Avançados em Inteligência Artificial Simbólica 8 JADE Ferramentas gráficas Sniffer Agent 29.10.2003 É 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. Tópicos Avançados em Inteligência Artificial Simbólica 9 JADE Ferramentas gráficas Introspector Agent 29.10.2003 É 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. Tópicos Avançados em Inteligência Artificial Simbólica 10 JADE Ferramentas gráficas Dummy Agent 29.10.2003 É 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. Tópicos Avançados em Inteligência Artificial Simbólica 11 JADE Ferramentas gráficas Directory Facilitator (DF) 29.10.2003 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 sub-domínios. Tópicos Avançados em Inteligência Artificial Simbólica 12 JADE Como implementar um SMA? Agentes Mensagens ACL Comportamentos Protocolos de interação 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 13 JADE Agentes Um agente em JADE é uma instância da classe Agent Heranças da classe Agent: 29.10.2003 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, ...) Tópicos Avançados em Inteligência Artificial Simbólica 14 JADE Agentes Cada serviço/funcionalidade de um agente deve ser implementado como um ou mais comportamentos Os comportamentos de JADE modelam arquiteturas reativas A abstração de comportamento do modelo do agente de JADE permite a integração de softwares externos para enriquecer a arquitetura do agente Ex: agentes reativos-deliberativos com JADE e JESS 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 15 JADE Agentes A classe Agent representa os estados do agente através de constantes: AP_INITIATED ESTADOS AP_ACTIVE MÉTODOS AP_SUSPENDED AP_WAITING AP_DELETED AP_TRANSIT AP_COPY AP_GONE 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 16 JADE Agentes 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; 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 17 JADE Agentes Um AID (Agent Identifier) é constituído por: 29.10.2003 Um nome globalmente único: <localname>@<hostname>:<port>/JADE Ex: ams@G6C15:1099/JADE Um conjunto de endereços de agentes, uma vez que cada agente herda os endereços de transporte de sua plataforma de origem; Um conjunto de solucionadores (páginas brancas nas quais o agente é registrado) Tópicos Avançados em Inteligência Artificial Simbólica 18 JADE Agentes O método setup() 29.10.2003 Deve ser implementado para inicialização de um agente; Deve adicionar pelo menos um comportamento para o agente através do método addBehaviour(); Ao final da execução do método setup(), JADE executa automaticamente os comportamentos, a partir do que foi primeiramente declarado, usando um escalonamento circular nãopreemptivo. Tópicos Avançados em Inteligência Artificial Simbólica 19 JADE Mensagens ACL Em JADE os agentes se comunicam através de passagem assíncrona de mensagens ACL; A classe ACLMessage representa as mensagens de acordo com as especificações da FIPA (fipa000061); Todos os parâmetros são pares palavra-chave: valor Os valores dos parâmetros podem ser inseridos através dos métodos set() e podem ser lidos através de métodos get() As performativas da FIPA são identificadas por constantes. 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 20 JADE Mensagens ACL Sub-sistema de comunicação de JADE 29.10.2003 Todo agente tem uma fila privada de mensagens ACL criada e preenchida pelo subsistema de comunicação de JADE; Foi projetado como um camaleão para alcançar um menor custo de passagem de mensagens; Se uma mensagem é enviada e o sub-sistema não consegue encontrar o destinatário, ele a envia para ser gerenciada pelo AMS. Tópicos Avançados em Inteligência Artificial Simbólica 21 JADE Mensagens ACL QUERY-IF :sender solicitador@G6C15:1099/JADE ENDEREÇAMENTO :receiver CSELT@G6C15:1099/JADE :protocol fipa-query :conversation_id C2471722_1067382505429 COMUNICAÇÃO :reply_with :reply_by :language fipa-sl0 :ontology employment-ontology :content ((WORKS-FOR (PERSON :name "Ismenia Galvao" :age 24 :address (ADDRESS :street "Rua dos Bobos" MENSAGEM :number 0 :city Recife)) (COMPANY :name CSELT :address (ADDRESS :street "Via Reiss Romoli" :number 274 :city Turin)))) PERFORMATIVA 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 22 JADE Comportamentos Behaviour Simple Behaviour OneShotBehaviour CompositeBehaviour CyclicBehaviour SequentialBehaviour FSMtBehaviour ParallelBehaviour 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 23 JADE Comportamentos Behaviour SimpleBehaviour Modela uma tarefa simples (que não tem sub-tarefas) OnShotBehaviour Modela uma tarefa genérica Modela uma tarefa atômica (seu método done() retorna true) CyclicBehaviour 29.10.2003 Modela uma tarefa cíclica (seu método done() retorna false) Tópicos Avançados em Inteligência Artificial Simbólica 24 JADE Comportamentos CompositeBehaviour SequentialBehaviour Modela uma tarefa na qual suas sub-tarefas são seqüenciais ParallelBehaviour 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 29.10.2003 Modela uma tarefa na qual suas sub-tarefas correspondem as atividades realizadas em estados de uma Máquina de Estados Finitos Tópicos Avançados em Inteligência Artificial Simbólica 25 JADE Protocolos de interação A FIPA especifica um conjunto de protocolos de interação padronizados JADE distingue os papéis de Initiator e Responder para cada conversação entre agentes AchieveRE (Achieve Rational Effect) AchieveREInitiator SimpleAchieveREInitiator AchieveREResponder SimpleAchieveREResponder 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 26 JADE Protocolos de interação FIPA-Contract-Net ContractNetInintiator ContractNetResponder Estados genéricos para protocolos de interação HandlerSelector MsgReceiver 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 27 Utilizando JADE - Informações gerais - Instalação & Execução JADE Informações gerais Versões Versão atual de JADE: 3.0b1 (19.03.03) Todos os arquivos .jar foram gerados com o JDK 1.2 Requisitos de software JDK 1.2 Run Time ou posterior Distribuição do software 29.10.2003 De acordo com a licença LGPL Tópicos Avançados em Inteligência Artificial Simbólica 29 JADE Instalação de JADE Download de arquivos: Mapear unidade de rede \\cin04\apps\fipa Copiar o diretório JADE OU http://jade.cselt.it/license.htm OU 29.10.2003 http://www.cin.ufpe.br/~igls/aula_jade.zip Salvar aula_jade.zip Descompactar em c:\temp Tópicos Avançados em Inteligência Artificial Simbólica 30 JADE Instalação de JADE Configuração do ambiente de execução: configurarJADE.bat @set @set @set @set @set @set @set @set @set 29.10.2003 path=%path%;p:\jdk1.4.0\bin path=%path%;C:\temp\jade classpath=%classpath%.;p:\jdk1.4.0\lib\tools.jar classpath=%classpath%.;p:\jdk1.4.0\lib\tools.jar classpath=%classpath%.;p:\jdk1.4.0\jre\lib\rt.jar classpath=%classpath%.;c:\temp\jade\lib\jadeTools.jar classpath=%classpath%.;c:\temp\jade\lib\jade.jar classpath=%classpath%.;c:\temp\jade\lib\Base64.jar classpath=%classpath%.;c:\temp\jade\lib\iiop.jar Tópicos Avançados em Inteligência Artificial Simbólica 31 JADE Execução de JADE Compilação: compilarJADE.bat javac %1 %2 %3 %4 %5 %6 %7 %8 %9 Execução: executarJADE.bat java jade.Boot -gui %1 %2 %3 %4 %5 %6 %7 %8 %9 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 32 Exemplos - Party - Ontology JADE Party Descrição do problema Demonstra um SMA simples no qual um anfitrião inicia uma festa e chama um número de convidados; O fluxo de mensagens é bem elevado Agentes O HostAgent representa o anfitrião da festa O GuestAgent representa o convidado da festa 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 34 JADE Party Funcionamento O usuário seleciona o número de convidados (0 a 1000); Quando a festa começa, o anfitrião cria os agentes convidados; 29.10.2003 Cada convidado se registra no DF e envia uma mensagem para o anfitrião avisando que chegou; Quando todos os convidados tiverem chegado, o anfitrião seleciona um deles aleatoriamente e conta uma fofoca; Em seguida, o anfitrião seleciona dois convidados aleatoriamente e os apresenta; Tópicos Avançados em Inteligência Artificial Simbólica 35 JADE Party Funcionamento 29.10.2003 A partir daí, cada convidado que foi apresentado a alguém pede ao anfitrião para apresentá-lo a outro (aleatoriamente); Se o convidado souber da fofoca, ele conta para o outro; Quando um convidado escuta a fofoca pela primeira vez, ele avisa ao anfitrião que já está sabendo; Quando todos os convidados souberem da fofoca, a festa acaba e os convidados vão embora. Tópicos Avançados em Inteligência Artificial Simbólica 36 JADE Party Como executar: 1. compilarJADE examples/party/*.java 2. executarJADE HOST:examples.party.HostAgent() 3. Executar o agente Sniffer e marcar DF e HOST 4. Executar o agente Introspector e marcar HOST 5. Configurar na interface do Party Host Agent, o número de agentes visitantes (no máximo 100...) 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 37 JADE Party Como executar: 6. Iniciar Party Host Agent clicando o botão Start 7. Observar as mensagens no Sniffer 8. Observar as mensagens e comportamentos no Introspector 9. Observar a ferramenta RMA 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 38 JADE Party Interface 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 39 JADE Ontology Descrição 29.10.2003 Demonstra como usar o suporte a ontologias de JADE; Define uma ontologia simples que inclui conceitos relacionados ao emprego de pessoas em uma companhia; Para cada papel ontológico há uma classe definida; A classe EmploymentOntology cria um objeto ontologia e adiciona a ele os papéis Pacotes: examples.ontology examples.ontology.employment Tópicos Avançados em Inteligência Artificial Simbólica 40 JADE Ontology Ontologia: Conceitos PERSON COMPANY ADDRESS Predicados 29.10.2003 Ações ENGAGE Proposições ENGAGEMENT-ERROR PERSON-TOO-OLD WORKS-FOR Tópicos Avançados em Inteligência Artificial Simbólica 41 JADE Ontology Agentes 29.10.2003 RequesterAgent Solicita ao EngagerAgent a contratação de pessoas; Tem um comportamento cíclico para receber do usuário os dados das pessoas; Usa o protocolo fipa-query para perguntar ao EngagerAgent se determinada pessoa já trabalha na companhia; Usa o protocolo fipa-request para solicitar o emprego para alguém; Cada um dos protocolos é implementado utilizando-se um SimpleArchieveREInitiator como sub-comportamento. Tópicos Avançados em Inteligência Artificial Simbólica 42 JADE Ontology Agentes 29.10.2003 EngagerAgent Realiza a contratação de pessoas numa companhia; Possui dois comportamentos cíclicos SimpleAchieveREResponder; Um é usado para manipular questionamentos sobre se uma pessoa trabalha numa companhia, de acordo com o fipa-query; O outro é usado para manipular requisições de contratação, seguindo o protocolo fipa-request; A companhia que contrata as pessoas é fixa (CSELT, Via Reiss Romoli 274, Turin). Tópicos Avançados em Inteligência Artificial Simbólica 43 JADE Ontology Como executar: 1. compilarJADE examples/ontology/employment/*.java 2. compilarJADE examples/ontology/*.java 3. executarJADE CSELT:examples.ontology.EngagerAgent() SOLICITANTE:examples.ontology.RequesterAgent() 4. Executar o agente Sniffer e marcar CSELT e SOLICITANTE 5. Executar o agente Introspector e marcar CSELT e SOLICITANTE 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 44 JADE Ontology Como executar: 6. Preencher os dados na linha de comando CSELT CSELT Via Reiss Romoli 274 Turin 7. Observar as mensagens no Sniffer 8. Observar as mensagens e comportamentos no Introspector 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 45 JADE Ontology Interface This is the EngagerAgent representing the company CSELT ENTER the local name of the Engager agent --> CSELT ENTER details of the company where people will be engaged Company name --> CSELT Company address Street ------> Via Reiss Romoli Number ------> 274 City ------> Turin ENTER details of person to engage Person name --> Ismenia Galvao Person age ---> 24 Person address Street -----> Rua dos Bobos Number -----> 0 City -----> Recife 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 46 JADE Por que JADE? Não há necessidade de implementar a plataforma de agentes ... Não há necessidade de implementar as funcionalidades e a ontologia de gerenciamento de agentes ... Não há necessidade de implementar o transporte e parsing de mensagens ... Os protocolos de interação podem ser estendidos ... Segue as especificações da FIPA ! 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 47 JADE Links Java Agent DEvelopment Framework API de JADE http://jade.cselt.it/doc/api/index.html Documentação on-line de JADE http://jade.cselt.it/ http://jade.cselt.it/doc/index.html Outros tutoriais de JADE http://agents.felk.cvut.cz/teaching/ui2/JADE_tutorial.htm http://www.soe.ucsc.edu/research/agents/borcon/index.html http://www.ryerson.ca/~dgrimsha/courses/cps720/JADEAdmin/jadeStart.html http://www.ryerson.ca/~dgrimsha/courses/cps720_02/courseTopics.html http://www.etse.urv.es/recerca/banzai/toni/MAS/material.html 29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 48