Upload
internet
View
102
Download
0
Embed Size (px)
Citation preview
JADEThe Java Agent DEvelopment Framework
Ismênia Galvão Lourenço da [email protected]
PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CENTRO DE INFORMÁTICA
UNIVERSIDADE FEDERAL DE PERNAMBUCO
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 2
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
Desvendando JADE...
- O que é JADE?
- Principais características de JADE
- Ferramentas gráficas
- Como implementar um SMA?
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 4
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 5
JADE
Principais características
Lida com os aspectos que não fazem parte do agente em si, tais como: Transporte de mensagens, codificação, parsing, ciclo de vida do
agente, páginas brancas, páginas amarelas, ...
Provê ferramentas de suporte 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 6
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 7
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 8
JADE
Remote Monitoring Agent (RMA) 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
Ferramentas gráficasSniffer AgentDummy
AgentIntrospector Agent
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 9
JADE
Sniffer Agent É 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.
Ferramentas gráficas
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 10
JADE
Introspector Agent É 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.
Ferramentas gráficas
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 11
JADE
Dummy Agent É 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.
Ferramentas gráficas
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 12
JADE
Directory Facilitator (DF) 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.
Ferramentas gráficas
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 13
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 14
JADE
Agentes
Um agente em JADE é uma instância da classe Agent
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, ...)
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 15
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 16
JADE
Agentes
A classe Agent representa os estados do agente através de constantes: AP_INITIATED
AP_ACTIVE
AP_SUSPENDED
AP_WAITING
AP_DELETED
AP_TRANSIT
AP_COPY
AP_GONE
MÉTODOS
ESTADOS
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 17
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 18
JADE
Agentes
Um AID (Agent Identifier) é constituído por: 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)
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 19
JADE
Agentes
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 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ão-preemptivo.
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 20
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 21
JADE
Mensagens ACL
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;
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.
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 22
JADE
Mensagens ACL QUERY-IF :sender solicitador@G6C15:1099/JADE :receiver CSELT@G6C15:1099/JADE :protocol fipa-query :conversation_id C2471722_1067382505429 :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"
:number 0 :city Recife))
(COMPANY :name CSELT :address (ADDRESS
:street "Via Reiss Romoli"
:number 274 :city Turin))))
PERFORMATIVA
ENDEREÇAMENTO
COMUNICAÇÃO
MENSAGEM
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 23
JADE
Comportamentos
Behaviour
Simple Behaviour CompositeBehaviour
OneShotBehaviour CyclicBehaviourSequentialBehaviour
ParallelBehaviour
FSMtBehaviour
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 24
JADE
Comportamentos
Behaviour
Modela uma tarefa genérica
SimpleBehaviour
Modela uma tarefa simples (que não tem sub-tarefas)
OnShotBehaviour Modela uma tarefa atômica (seu método done() retorna true)
CyclicBehaviour Modela uma tarefa cíclica (seu método done() retorna false)
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 25
JADE
Comportamentos
CompositeBehaviour Modela uma tarefa complexa (realizada através da composição de outras
tarefas)
SequentialBehaviour Modela uma tarefa na qual suas sub-tarefas são seqüenciais
ParallelBehaviour Modela uma tarefa na qual suas sub-tarefas são concorrentes
FSMBehaviour Modela uma tarefa na qual suas sub-tarefas correspondem as atividades
realizadas em estados de uma Máquina de Estados Finitos
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 26
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 27
JADE
Protocolos de interação
FIPA-Contract-Net ContractNetInintiator
ContractNetResponder
Estados genéricos para protocolos de interação HandlerSelector
MsgReceiver
Utilizando JADE
- Informações gerais
- Instalação & Execução
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 29
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 De acordo com a licença LGPL
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 30
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
http://www.cin.ufpe.br/~igls/aula_jade.zipSalvar aula_jade.zipDescompactar em c:\temp
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 31
JADE
Instalação de JADE
Configuração do ambiente de execução: configurarJADE.bat@set path=%path%;p:\jdk1.4.0\bin
@set path=%path%;C:\temp\jade
@set classpath=%classpath%.;p:\jdk1.4.0\lib\tools.jar
@set classpath=%classpath%.;p:\jdk1.4.0\lib\tools.jar
@set classpath=%classpath%.;p:\jdk1.4.0\jre\lib\rt.jar
@set classpath=%classpath%.;c:\temp\jade\lib\jadeTools.jar
@set classpath=%classpath%.;c:\temp\jade\lib\jade.jar
@set classpath=%classpath%.;c:\temp\jade\lib\Base64.jar
@set classpath=%classpath%.;c:\temp\jade\lib\iiop.jar
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 32
JADE
Execução de JADE
Compilação: compilarJADE.bat
Execução: executarJADE.bat
javac %1 %2 %3 %4 %5 %6 %7 %8 %9
java jade.Boot -gui %1 %2 %3 %4 %5 %6 %7 %8 %9
Exemplos
- Party
- Ontology
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 34
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 35
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;
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;
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 36
JADE
Party
Funcionamento 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.
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 37
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 38
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 39
JADE
Party
Interface
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 40
JADE
Ontology
Descrição 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
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 41
JADE
Ontology
Ontologia: Conceitos
PERSON
COMPANY
ADDRESS
Predicados WORKS-FOR
Ações ENGAGE
Proposições ENGAGEMENT-ERROR
PERSON-TOO-OLD
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 42
JADE
Ontology
Agentes 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.
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 43
JADE
Ontology
Agentes 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).
29.10.2003 Tópicos Avançados em Inteligência Artificial Simbólica 44
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 45
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 46
JADE
Ontology
Interface
This is the EngagerAgent representing the company CSELTENTER the local name of the Engager agent --> CSELTENTER details of the company where people will be engaged Company name --> CSELT Company address Street ------> Via Reiss Romoli Number ------> 274 City ------> TurinENTER 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 47
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 48
JADE
Links Java Agent DEvelopment Framework
http://jade.cselt.it/
API de JADE
http://jade.cselt.it/doc/api/index.html
Documentação on-line de JADE
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