jade - java agent development frameworkin1111/081/slides/jade.pdf · sociedades de agentes 4...
TRANSCRIPT
JADE - Java Agent DEvelopment Framework
Fernando, Ícaro e Thiago
CIn - UFPE
9 de abril de 2008
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 1 / 88
Roteiro1 Introdução
Plataforma de AgentesClasse Agent
2 Comportamentos3 Comunicação
Protocolos de InteraçãoSociedades de Agentes
4 Serviço de Descoberta5 Funcionalidades e Usos Avançados
Behaviours avançadosAplicações ExternasAgentes MóveisAgentes em Dispositivos MóveisJADE e JESSAgentes e OntologiasAgentes e Web Semântica
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 2 / 88
Seções1 Introdução
Plataforma de AgentesClasse Agent
2 Comportamentos3 Comunicação
Protocolos de InteraçãoSociedades de Agentes
4 Serviço de Descoberta5 Funcionalidades e Usos Avançados
Behaviours avançadosAplicações ExternasAgentes MóveisAgentes em Dispositivos MóveisJADE e JESSAgentes e OntologiasAgentes e Web Semântica
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 3 / 88
Histórico
1998Validação dos padrões FIPA:
FIPA: Foundation for Intelligent Physical Agents (www.fipa.org);
Telecom Itália;2000
Open Source sob a licença LGPL (Lesser General Public License);http://jade.tilab.com;
2003JADE Governing Board:
Grupo de empresas comprometidas com o desenvolvimento e apromoção de JADE;TILAB, Motorola, Whitestein Technologies AG, Profactor GmbH eFrance Telecom R&D.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 4 / 88
Introdução
Framework e Middleware para desenvolvimento de sistemasmulti-agentes;Compatível com os padrões FIPA para agentes inteligentes;Desenvolvido em JAVA.
ConsolidadoSuporte a sistemas distribuídosNúmero de bibliotecasMultiplataforma
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 5 / 88
Introdução II
JADE consiste em:Um ambiente para sistemas multi-agentes compatível com ospadrões FIPA;Bibliotecas Java que provêem uma série de funcionalidades paraSMA;Um conjunto de ferramentas gráficas:Facilita o monitoramento e administração dos agentes;Suporte a Agentes Móveis;Suporte a tecnoloias WEB, JSP, Web Service;Suporte a J2ME
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 6 / 88
O básico do JADE
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 7 / 88
Comparação com outros SMA - JASON
JASON : A Java-based AgentSpeak Interpreter Used With SaciFor Multi-agent Distribution Over the Net;Plataforma que implementa AgentSpeak(L), uma linguagemabstrata baseada na arquitetura BDI;Pontos positivos: Facilmente distribuído pela rede (pelo SACI),tratamento de falhas na execução de planos, troca de mensagensbaseadas em speech act, desenvolvimento de ambiente, internalactions pré-definidas e definição de novas internal actions pelousuário;Pontos negativos: Não existe um serviço de nomes e páginasamarelas, impossível a troca de papéis entre agentes,inadequado para sistemas multi-agentes abertos e poucaflexibilidade quanto à troca de mensagens.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 8 / 88
Comparação com outros SMA - JADEX
Arquitetura BDI(Believe, Desire, Intention) Crenças, Desejos eIntenções por Bratman (1987);Representação explicita de objetivo;Utiliza XML e JAVA;Conceitos de racionalidade: crenças, planos, objetivos...ADF - Agent Definition File, baseado em XML;
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 9 / 88
Funcionalidades/Pacotes
jade.core:Pacote com o núcleo do sistema;Agent, jade.core.behaviours;
jade.lang.acl:Processa a Agent Communication Language(ACL) de acordo comos padrões FIPA;
jade.content:Conjunto de classes que dão suporte ao uso de ontologias econtent-languages definidas pelo usuário;
jade.domain:Contém as classes que dão suporte à gerência dos agentesproposta pelos padrões FIPA (DF, AMS);jade.domain.FIPAAgentManagement.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 10 / 88
Funcionalidades/Pacotes
jade.gui:Conjunto de classes genéricas que auxiliam a criação de interfacespara agentes com GUI;
jade.mtp:Possui uma interface que todo protocolo de transporte demensagem deve implementar para estar integrado com JADE,possui duas implementações o HTTP e o IIOP;
jade.proto:Classes que modelam os protocolos de iteração padrãoespecificados pela FIPA, facilitando a extenção de protocolos pelousuário;
jade.wrapper:Contém uma coleção de wrappers que permitem o uso de JADEcomo uma biblioteca, onde aplicações externas podem acessaragentes e containers.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 11 / 88
Subseções1 Introdução
Plataforma de AgentesClasse Agent
2 Comportamentos3 Comunicação
Protocolos de InteraçãoSociedades de Agentes
4 Serviço de Descoberta5 Funcionalidades e Usos Avançados
Behaviours avançadosAplicações ExternasAgentes MóveisAgentes em Dispositivos MóveisJADE e JESSAgentes e OntologiasAgentes e Web Semântica
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 12 / 88
Plataforma do Agente
A plataforma pode ser distribuida entre vários hostsCada host contendo um container de agentes:
Provendo um ambiente completo para execução dos agentes;Permitindo que os agentes executem concorrentemente (umathread por agente);
O primeiro container a ser iniciado é o main containerAMS (Agent Management System);DF (Directory Facilitator);ACC (Agent Communication Channel);
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 13 / 88
Arquitetura
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 14 / 88
AMS (Agent Management System)
É o agente que supervisiona e controla toda a plataforma;Só existe um AMS por plataforma;Fornece serviço de páginas brancas:
Agentes registram com o AMS para receber um AID (AgentIdentification);
Controla o ciclo de vida dos agentes.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 15 / 88
Serviços
DF (Directory facilitator):Fornece serviço de páginas amarelas;Publica o serviço de outros agentes registrados na plataforma,facilitando a cooperação;
ACC (Agent Communication Channel):Também chamado de Message Transport System(MTP);Controla toda a troca de mensagens dentro da plataforma.Por default JADE carrega a implementação MTP com HTTP:http://ufpe_cin:7778/accIMTP:(Internal Message Transport Protocol): utiliza RMI.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 16 / 88
Plataforma JADE para agentes
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 17 / 88
Subseções1 Introdução
Plataforma de AgentesClasse Agent
2 Comportamentos3 Comunicação
Protocolos de InteraçãoSociedades de Agentes
4 Serviço de Descoberta5 Funcionalidades e Usos Avançados
Behaviours avançadosAplicações ExternasAgentes MóveisAgentes em Dispositivos MóveisJADE e JESSAgentes e OntologiasAgentes e Web Semântica
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 18 / 88
Criando um agente JADE
Um agente é criado extendendo-se a classe jade.core.Agent;Agent contém:
Funcionalidades para prover iterações básicas com a plataforma(registro,configuração ...);Métodos que implementam comportamentos básicos do agente(enviar/receber mensagens, usar protocolos padrões paraiterações);
Cada serviço provido por um agente deve ser implementado naforma de um ou mais behaviours que são executadosconcorrentemente.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 19 / 88
Agent Identifier - AID
Cada agente tem um AID único;AID é uma instância da classe jade.core.AID;O AID é criado ao se registrar o agente em um AMS;Um AID contém:
Um nome único para o agente no formato:nickname@platform-name;
Um conjunto de endereços, cada agente herda o endereço detransporte de sua Plataforma de Agente;Um conjunto de resolvers, por exemplo, serviços de páginasbrancas em que o agente está registrado.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 20 / 88
Ciclo de vida de um agente
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 21 / 88
Ciclo de Vida de um agente
Segundo a especificação do ciclo de vida de um agente propostopela FIPA, o mesmo pode estar em seis estados diferentes, sendoeles:Initiated
O objeto do agente foi construído, mas este não foi registrado noAMS portanto não tem nome nem endereço, e consequentementenão pode se comunicar com outros agentes;
ActiveO agente foi registrado no AMS e já tem acesso a todas asfuncionalidades de JADE;
SuspendedO agente está parado, nenhum behaviour está sendo executado.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 22 / 88
Ciclo de Vida de um agente
WaitingO agente está bloqueado (dormindo) e vai acordar quando algumacondição for satisfeita (tipicamente quando receber certamensagem);
DeletedO agente está definitivamente morto, finalizou sua execução e foiremovido do AMS;
TransitEstado em que o agente se encontra enquanto está migrando paraoutra localidade, o sistema guarda suas mensagens para depoisenviar para a nova localidade.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 23 / 88
Seções1 Introdução
Plataforma de AgentesClasse Agent
2 Comportamentos3 Comunicação
Protocolos de InteraçãoSociedades de Agentes
4 Serviço de Descoberta5 Funcionalidades e Usos Avançados
Behaviours avançadosAplicações ExternasAgentes MóveisAgentes em Dispositivos MóveisJADE e JESSAgentes e OntologiasAgentes e Web Semântica
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 24 / 88
O que é um Behaviour
Agentes operam independentemente e executam em paralelocom outros agentes;A maneira mais óbvia de implementar é usando uma Java Threadpara cada agente;Mas há a necessidade de um paralelismo interno, pois cadaagente pode ter mais de uma função;Para isso JADE introduziu o conceito de behaviour;Um behaviour é basicamente um event handler ;Em geral implementa os serviços que o agente provê.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 25 / 88
Implementando um Behaviour
Inicialmente é necessário criar uma classe que extenda a classejade.core.behaviours.Behaviour;Implementar nessas classes os métodos:
action() - define as operações que ocorrerão durante aexecução do behaviour;done() - informa se um behaviour completou sua execução;
Finalmente, incluir o behaviour em um agente:Instanciar a classe criada;Inclui-lo nas tarefas do agente através do métodoaddBehaviour().
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 26 / 88
Behaviours
Cada agente possui uma fila com todos os seus behaviours;A qualquer momento novos behaviours podem ser inseridosnessa fila;Na verdade eles não executam em paralelo:
round-robin non-preemptive;Evitar loops infinitos;e operações muito longas no método action().
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 27 / 88
Behaviours II
Ao fim da execução do action() o método done() é chamado,caso a resposta seja positiva o behaviour é removido da fila;Cada behaviour pode bloquear sua execução através do métodoblock():
Só bloqueia ao retornar do action();Volta a executar quando recebe uma mensagem;
Importante bloquear novamente caso a mensagem não seja deinteresse;
block(milissegundos) atrasa a próxima execução dobehaviour.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 28 / 88
Primitive Behaviours
CyclicBehaviourExecuta sempre, enquanto o agente estiver ativo;Seu método done() sempre retorna false;
OneShotBehaviourExecuta somente uma vez;Seu método done() sempre retorna true;
ReceiverBehaviourExecuta quando uma certa mensagem é recebida,Ou um emphtimeout expira.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 29 / 88
Primitive Behaviours
WakerBehaviourExecuta o código (apenas uma vez) depois de um timeout;O código do usuário fica no método handleElapsedTimeout();O timeout é passado no construtor;
TickerBehaviourBehaviour cíclico, que executa o código a cada intervalo de tempodefinido;O intervalo de tempo e passado no construtor;O código do usuário fica no método onTick().
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 30 / 88
Seções1 Introdução
Plataforma de AgentesClasse Agent
2 Comportamentos3 Comunicação
Protocolos de InteraçãoSociedades de Agentes
4 Serviço de Descoberta5 Funcionalidades e Usos Avançados
Behaviours avançadosAplicações ExternasAgentes MóveisAgentes em Dispositivos MóveisJADE e JESSAgentes e OntologiasAgentes e Web Semântica
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 31 / 88
Conceitos
Passagem de mensagem assíncrona;
Mailbox;Padrão FIPA-ACL (sender, receiver, performative:(REQUEST, INFORM), content, language, ontology, etc);Comunicação transparente em relação à localização do agente.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 32 / 88
Enviando mensagens
Preencher campos de ACLMessage e usar o método send() daclasse Agent!
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);msg.addReceiver(new AID("Peter", AID.ISLOCALNAME));msg.setLanguage("English");msg.setOntology("Weather-forecast-ontology");msg.setContent("Today it’s raining");this.send(msg);
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 33 / 88
Recebendo mensagens
Usar o método receive() da classe Agent!
ACLMessage msg = receive();if (msg != null) {
// Processa a mensagem}
blockingReceive() - supende os comportamentos !
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 34 / 88
Respondendo mensagens
Método createReply() para definir os campos de conversação(conversation-id, reply-with, in-reply-to)!
private class MyBehaviour extends CyclicBehaviour {public void action() {ACLMessage msg = myAgent.receive();if (msg != null) {String title = msg.getContent();ACLMessage reply = msg.createReply();// Processa a mensagem
}else{
block();}
}
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 35 / 88
MessageTemplate
Acesso à mensagens por casamento de padrões, em detrimentoao modo FIFO;Padrões elementares podem ser combinados com operadoresAND, OR e NOT;O usuário também pode implementar “casamentos” específicosusando a classe MatchExpression.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 36 / 88
Exemplo de MatchExpression
public Class MatchExp implements MatchExpression {List senders;myMatchExpression(List l){
senders = l;}public boolean match(ACLMessage msg){AID sender = msg.getSender();String name = sender.getName();Iterator i = senders.iterator();boolean out = false;while(i.hasNext() && !out){String tmp = ((AID)i.next()).getName();if(tmp.equalsIgnoreCase(name))out = true;
}return out;
}}
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 37 / 88
Exemplo de MatchTemplate
public class MatchExampleAgent extends Agent {protected void setup() {
// . . .ArrayList sender = . . . ;MatchExp me = new MatchExp(sender);MessageTemplate template = new MessageTemplate(me);MessageTemplate mt = MessageTemplate.and(template,
MessageTemplate.MatchPerformative(ACLMessage.REQUEST));WaitBehaviour behav = new WaitBehaviour(this,mt);addBehaviour(behav);
}}
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 38 / 88
Comunicação baseada em tópicos
Ao invés de mandar mensagens para um ou mais recebedores,manda-se a um tópico;Essas mensagens são entregues aos agentes que seinscreveram nesse tópico;Usado através da classejade.core.messaging.TopicManagementService, quedeve ser ativada nos contêineres da plataforma;A classe MatchTemplate tem uma método para tratar tópicos:MatchTopic().
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 39 / 88
Subseções1 Introdução
Plataforma de AgentesClasse Agent
2 Comportamentos3 Comunicação
Protocolos de InteraçãoSociedades de Agentes
4 Serviço de Descoberta5 Funcionalidades e Usos Avançados
Behaviours avançadosAplicações ExternasAgentes MóveisAgentes em Dispositivos MóveisJADE e JESSAgentes e OntologiasAgentes e Web Semântica
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 40 / 88
Protocolos - introdução
A FIPA especifica um conjunto de protocolos de interaçãopadrões, usados como templates para construir conversações;Papel Initiator x Papel Responder;Atuar significa implica em executar alguma tarefa e portanto asclasses de protocolo são comportamentos;Delegação de tarefas: um coordenador e atores para seguir aseqüência de mensagens -> FIPA-Contract-Net;Outros problemas como leilões, inscrição para notificações,negociações, etc -> jade.proto .
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 41 / 88
FIPA ContractNet
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 42 / 88
ContractNet no JADE
ContractNetInitiator: implementa o protocolo do ponto devista do agente iniciando-o e lida também com a espera derespostas;
Métodos para lidar com estados do protocolo que são chamadosquando são recebidas certos tipos de mensagem.
ContractNetResponder: ponto de vista dos agentes querespondem o CFP:
Pode-se estender sobrescrevendo-se os métodos prepareXX()para lidar com os estados do protocolo e com as respostas.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 43 / 88
Demais IP FIPA em JADE
FIPA-ProposeFIPA-QueryFIPA-Request
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 44 / 88
Subseções1 Introdução
Plataforma de AgentesClasse Agent
2 Comportamentos3 Comunicação
Protocolos de InteraçãoSociedades de Agentes
4 Serviço de Descoberta5 Funcionalidades e Usos Avançados
Behaviours avançadosAplicações ExternasAgentes MóveisAgentes em Dispositivos MóveisJADE e JESSAgentes e OntologiasAgentes e Web Semântica
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 45 / 88
Sociedades
Papéis, hierarquias, normas, testemunhos, sanções, etc;Propostas não visam aplicação a ambientes como JADE, aindatratam apenas de metodologias para modelagem;Implementar em JADE fica a cargo do programador;ASF (Agent Society Framework) (Silva et al., 2004) ;Governando SMA usando normas e sanções baseadas emtestemunho (Silva et al., 2007).
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 46 / 88
Seções1 Introdução
Plataforma de AgentesClasse Agent
2 Comportamentos3 Comunicação
Protocolos de InteraçãoSociedades de Agentes
4 Serviço de Descoberta5 Funcionalidades e Usos Avançados
Behaviours avançadosAplicações ExternasAgentes MóveisAgentes em Dispositivos MóveisJADE e JESSAgentes e OntologiasAgentes e Web Semântica
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 47 / 88
Páginas amarelas
Serviço para agentes publicarem descrições de um ou maisserviços que oferecem;Qualquer agente pode publicar serviços e buscar para descobrirserviços;FIPA: agente especializado chamado DF (Directory Facilitator);DF’s podem ser conjugados para fornecer um ponto único edistribuído para o catálogo.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 48 / 88
Interagindo com o DF: DFService
Publicação: descrição com AID, lista de serviços eopcionalmente, lista de linguagens e ontologias;DFAgentDescription dfd = new DFAgentDescription ( ) ;dfd .setName (this .getAID ( ) ) ;ServiceDescription sd = new ServiceDescription ( ) ;sd .setType ("Book-selling") ;sd .setName (this .getLocalName ( ) +"-Book-selling") ;dfd .addServices (sd ) ;DFService .register (this , dfd ) ;
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 49 / 88
Procurando serviços
Busca: Prover ao DF uma descrição em template. O resultado é alista de descrições que casa com o template provido.
Vector sellerAgents;DFAgentDescription template = new DFAgentDescription();ServiceDescription sd = new ServiceDescription();sd.setType("Book-selling");template.addServices(sd);DFAgentDescription[] result = DFService.search(myAgent,
template);sellerAgents.clear();for (int i = 0; i < result.length; ++i) {
sellerAgents.addElement(result[i].getName());}
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 50 / 88
Seções1 Introdução
Plataforma de AgentesClasse Agent
2 Comportamentos3 Comunicação
Protocolos de InteraçãoSociedades de Agentes
4 Serviço de Descoberta5 Funcionalidades e Usos Avançados
Behaviours avançadosAplicações ExternasAgentes MóveisAgentes em Dispositivos MóveisJADE e JESSAgentes e OntologiasAgentes e Web Semântica
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 51 / 88
Subseções1 Introdução
Plataforma de AgentesClasse Agent
2 Comportamentos3 Comunicação
Protocolos de InteraçãoSociedades de Agentes
4 Serviço de Descoberta5 Funcionalidades e Usos Avançados
Behaviours avançadosAplicações ExternasAgentes MóveisAgentes em Dispositivos MóveisJADE e JESSAgentes e OntologiasAgentes e Web Semântica
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 52 / 88
Behaviour Complexos
Tarefas Complexas;CompositeBehaviour: Classe Abstrata
getCurrent();scheduleFirst();scheduleNext();
Implementações:SequentialBehaviour;FSMBehaviour;ParallelBehaviour:
WHEN_ALL, WHEN_ANY.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 53 / 88
Diagrama de Behaviour
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 54 / 88
FSMBehaviour
Máquina de Estados;Tabela de Transição;Métodos:
registerState(Behaviour, String); Registrando umcomportamento como um estado com a label da String.registerTransition(String, String, Integer);Estados e o Integer da transição retornado por doEnd()registerFirstState() e registerLastState().
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 55 / 88
Implementação FSMBehaviour
FSMBehaviour sampleFSM = new FSMBehaviour(anAgent);sampleFSM.registerFirstState(new OneShotBehaviour(anAgent) {
public void action() { /* X */ }public int onEnd() { return (success ? 0 : 1); }
,"X");sampleFSM.registerState(new WakerBehaviour(anAgent, 2000) {public void action() { /* Y */ }
},"Z");sampleFSM.registerState(new TickerBehaviour(anAgent, 8000) {
public void action() { /* Z */ }}, "Y");
sampleFSM.registerTransition("X", "Y", 1);sampleFSM.registerTransition("X", "Z", 0);
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 56 / 88
DataStore e Threated Behaviour
DaraStore:Armazena dados para os comportamentosProblema de acessar dados de outros Comportamentos;Basicamente um Map, extends HashMap;getDataStore() e setDataStore();
Threated Behaviour:(LEMBRANDO!) Behaviours em JADE são não-preempitivos;Problema: Operação de bloqueio suspende todos oscomportamentos;Solução: usar um Wrapper;ThreadedBehaviourFactory; Coloca um Behaviour em umaThread dedicada.Coloca o comportamento dentro de uma thread;Atenção especial ao remover o comportamento, encerrarexplicitamento com a chamada de interrupt() na suaThread;
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 57 / 88
ThreadedBehaviourFactory
private ThreadedBehaviourFactory tbf = newThreadedBehaviourFactory();
protected void setup() {Behaviour bb = new MyBehaviour(this);addBehaviour(tbf.wrap(b));
}
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 58 / 88
Subseções1 Introdução
Plataforma de AgentesClasse Agent
2 Comportamentos3 Comunicação
Protocolos de InteraçãoSociedades de Agentes
4 Serviço de Descoberta5 Funcionalidades e Usos Avançados
Behaviours avançadosAplicações ExternasAgentes MóveisAgentes em Dispositivos MóveisJADE e JESSAgentes e OntologiasAgentes e Web Semântica
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 59 / 88
Iniciando JADE em uma aplicação externa
jade.core.Runtime; Possui dos métodos citados abaixo.Ambos requerem um objeto Profile como parametro.
createMainContainer(), createAgentContainer();Criam Containers e retornam ContainerController.Profile: setParameter(...); Opções da linha decomando em constantes da classe.jade.wrapper.ContainerController; Funcionalidades daplataforma, createNewAgent....
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 60 / 88
Exemplo
public void startJADE(String host, String port){Runtime rt = Runtime.instance();Profile p = new ProfileImpl();p.setParameter(Profile.MAIN_HOST, host);p.setParameter(Profile.MAIN_PORT, port);ContainerController cc = runtime.createAgentContainer(p);if(cc!=null){
AgentController ac = cc.createNewAgent("Thiago","br.ufpe.cin.Mestrando",null);
ac.start();}
}
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 61 / 88
Subseções1 Introdução
Plataforma de AgentesClasse Agent
2 Comportamentos3 Comunicação
Protocolos de InteraçãoSociedades de Agentes
4 Serviço de Descoberta5 Funcionalidades e Usos Avançados
Behaviours avançadosAplicações ExternasAgentes MóveisAgentes em Dispositivos MóveisJADE e JESSAgentes e OntologiasAgentes e Web Semântica
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 62 / 88
Agentes Móveis
Tem todas as características de um agente(autonômo, reativo,proativo, social...) além de estar dotado de mobilidade.Motivações: Assincronia e processamento independente,tolerância a falha.Agente Móvel: Código, estado e dados;Migração: Forte e Fraca;JADE: Agent Mobility Service (intra-plataforma);
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 63 / 88
Mobilidade no JADE
Agent:void doMove(Location destino);
Interface Location: class ContainerID, classPlataformID;
beforeMove(), afterMove(); Respectivamente, liberarrecursos, chamado no novo endereço antes do reinicio doscomportamentosACTIVE to TRANSIT; Mudança de estado,Atenção na serialização; atributos não serializaveis modificar paratransient evitando NotSerializableException.INTER-PLATFORM MOBILITY SERVICE; Especificada pelaFIPA, utiliza ACL e ontologias de mobilidade.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 64 / 88
Implementação de Agentes Móveis
String containerName = "cin-2";ContainerID destination = new ContainerID();destination.setName(containerName);myAgent.doMove(destination);AID remoteAMS = new AID("ams@remotePlatform:1099/JADE", AID.
ISGUID);remoteAMS.addAddresses("http://remotePlatformaddr:7778/acc");PlatformID destination = new PlatformID(remoteAMS);myAgent.doMove(destination);
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 65 / 88
Subseções1 Introdução
Plataforma de AgentesClasse Agent
2 Comportamentos3 Comunicação
Protocolos de InteraçãoSociedades de Agentes
4 Serviço de Descoberta5 Funcionalidades e Usos Avançados
Behaviours avançadosAplicações ExternasAgentes MóveisAgentes em Dispositivos MóveisJADE e JESSAgentes e OntologiasAgentes e Web Semântica
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 66 / 88
JADE LEAP
Motorola, Siemens, Ericsson e Telecom Itália;Transparente para desenvolvedor;Possível execução em Microsfot.NET frameworkLimitação dos dispositivosDistribuições:
J2SE;pJava;MIDP;
Internal MTP: protocolo ICP
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 67 / 88
Ambientes
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 68 / 88
Modo de execução SPLIT
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 69 / 88
JADE e Web Services
Web Services Integration Gateway (WSIG); Encapsula asfuncionalidades exigidas para integrar esses domíniosTransparência bidirecional;Futuro Web Services Semânticos;
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 70 / 88
Visões
No ponto vista dos agentes, Web Services são entidadescomputacionais que podem ser chamadas para executaroperações reativas, publicadas ou descobertas.Para usuários de Web Services, agentes são uma poderosamaneira indireta para abstrair os Web Services, para fins deredirecionamento, integração, agregação e administração.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 71 / 88
Tecnologia dos Web Services
WSDL(Web Service Descripti on Language);Forma padrão deexpressar a descrição dos serviços WEBUDDI(Universal Description, Discovery and Integration); Umdiretório services schema comumente usado para buscar eregistrar Web ServicesSOAP(Simple Object Access Protocol);Protocolo definido paratroca de mensagens contendo requisições e respostas de WebServices.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 72 / 88
Web Services Integration Gateway
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 73 / 88
Subseções1 Introdução
Plataforma de AgentesClasse Agent
2 Comportamentos3 Comunicação
Protocolos de InteraçãoSociedades de Agentes
4 Serviço de Descoberta5 Funcionalidades e Usos Avançados
Behaviours avançadosAplicações ExternasAgentes MóveisAgentes em Dispositivos MóveisJADE e JESSAgentes e OntologiasAgentes e Web Semântica
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 74 / 88
JESS - Java Expert System Shell
Trata-se de uma ferramenta escrita em JAVA que provê umalinguagem orientada a regras;Recomendada para implementar racionalidade em agentes JADE;Possível acessar objetos JAVA dentro da linguagem;Permite associar JAVA Beans a fatos.
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 75 / 88
Subseções1 Introdução
Plataforma de AgentesClasse Agent
2 Comportamentos3 Comunicação
Protocolos de InteraçãoSociedades de Agentes
4 Serviço de Descoberta5 Funcionalidades e Usos Avançados
Behaviours avançadosAplicações ExternasAgentes MóveisAgentes em Dispositivos MóveisJADE e JESSAgentes e OntologiasAgentes e Web Semântica
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 76 / 88
Ontologias em Jade
Para discussão sobre tópicos num domínio D usando umalinguagem L, uma ontologia provê um catálogo de tipos de coisasque se supõe existirem em D; onde os tipos são representadosem termos de conceitos, relações, e predicados de L (Devedzic,2006);Para interações complexas, deve-se definir um entendimento dossímbolos e conceitos (vocabulário do domínio) usados noconteúdo das mensagens;jade.content.onto.Ontology: schemas definindo aestrutura dos tipos de predicado (PredicateSchema), ações(AgentActionSchema) e conceitos relevantes ao domínio deinteresse (ConceptSchema) (Caire, 2002).
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 77 / 88
Definindo uma ontologia I
public class MusicShopOntology extends Ontology {public static final String ONTOLOGY_NAME = "Music-shop-ontology" ;/ / . . .public static final String CD = "CD" ;public static final String CD_NAME = "name" ;public static final String CD_TRACKS = "tracks" ;public static final String OWNS = "Owns" ;public static final String OWNS_OWNER = "owner" ;public static final String OWNS_ITEM = "item" ;/ / . . .private MusicShopOntology ( ) {
super (ONTOLOGY_NAME , BasicOntology .getInstance ( ) ) ;add (new ConceptSchema (CD ) , CD .class ) ;add (new PredicateSchema (OWNS ) , Owns .class ) ;ConceptSchema cs = (ConceptSchema ) getSchema (ITEM ) ;cs .add (ITEM_SERIAL , (PrimitiveSchema ) getSchema (BasicOntology .
INTEGER ) ,ObjectSchema .OPTIONAL ) ;cs = (ConceptSchema ) getSchema (CD ) ;cs .addSuperSchema ( (ConceptSchema ) getSchema (ITEM ) ) ;cs .add (CD_NAME , (PrimitiveSchema ) getSchema (BasicOntology .STRING ) ) ;cs .add (CD_TRACKS , (ConceptSchema ) getSchema (TRACK ) , 1 ,ObjectSchema .
UNLIMITED ) ;
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 78 / 88
Definindo uma ontologia II
PredicateSchema ps = (PredicateSchema ) getSchema (OWNS ) ;ps .add (OWNS_OWNER , (ConceptSchema ) getSchema (BasicOntology .AID ) ) ;ps .add (OWNS_ITEM , (ConceptSchema ) getSchema (ITEM ) ) ;
}}
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 79 / 88
Registrando uma ontologia
public class SellerAgent extends Agent {private Codec codec = new SLCodec();private Ontology ontology = MusicShopOntology.getInstance();// . . .protected void setup() {
// . . .getContentManager().registerLanguage(codec);getContentManager().registerOntology(ontology);// . . .
}// . . .
}
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 80 / 88
BeanGenerator
Desenvolver a classe para a ontologia e as classes representandoos predicados, conceitos e ações “na mão” consome tempo;Plug-in beangenerator: Ontologias usando Protégé mapeadaspara definições de classes para a ontologia, seus predicados,ações do agente e conceitos;
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 81 / 88
BeanGenerator - screenshot
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 82 / 88
Subseções1 Introdução
Plataforma de AgentesClasse Agent
2 Comportamentos3 Comunicação
Protocolos de InteraçãoSociedades de Agentes
4 Serviço de Descoberta5 Funcionalidades e Usos Avançados
Behaviours avançadosAplicações ExternasAgentes MóveisAgentes em Dispositivos MóveisJADE e JESSAgentes e OntologiasAgentes e Web Semântica
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 83 / 88
Web Semântica!
Figura: Camadas da Web Semântica (Activity, 2007).
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 84 / 88
SMA e Web Semântica: Propostas
Nuin: arquitetura para agentes em aplicações de Web Semântica,usando BDI e aproveitando a infra-estrutura da Web (Dickinsonand Wooldridge, 2003);SemantiCore: agentes lidando com ontologias e com a naturezadistribuída da Web, integrando com ferramentas Web (Blois et al.,2007);BeanGenerator: Usando ontologias em OWL para comunicação(van Aart et al., 2002);AgentOWL: Conectando Jade e Jena com OWL (Laclavik et al.,2006).
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 85 / 88
Outros tópicos
Metodologias: Analise e projeto voltado a JADE Nikraz et al.(2004), Analise com GAIA, projeto com JADE Moraitis et al.(2003)
Fernando, Ícaro e Thiago (CIn - UFPE) JADE - Java Agent DEvelopment Framework 9 de abril de 2008 86 / 88
Referências I
Activity, W. S. W. (2007). Semantic web layer cake.http://www.w3.org/2007/03/layerCake.png.
Bellifemine, F., Caire, G., Trucco, T., and Rimassa, G. (2007). Jade programmer’s guide.http://jade.tilab.com/doc/programmersguide.pdf.
Bellifemine, F., Poggi, A., and Rimassa, G. (2001). Developing multi-agent systems with jade. InATAL ’00: Proceedings of the 7th International Workshop on Intelligent Agents VII. AgentTheories Architectures and Languages, pages 89–103, London, UK. Springer-Verlag.
Blois, M., Escobar, M., and Choren, R. (2007). Using agents and ontologies for applicationdevelopment on the semantic web. Journal of the Brazilian Computer Society, 13:25–36.
Caire, G. (2002). JADE tutorial: Application-defined content languages and ontologies.http://sharon.cselt.it/projects/jade/doc/CLOntoSupport.pdf.
Devedzic, V. (2006). Semantic Web and Education (Integrated Series in Information Systems).Springer-Verlag New York, Inc., Secaucus, NJ, USA.
Dickinson, I. and Wooldridge, M. (2003). Towards practical reasoning agents for the semanticweb. In AAMAS ’03: Proceedings of the second international joint conference on Autonomousagents and multiagent systems, pages 827–834, New York, NY, USA. ACM.
Laclavik, M., Balogh, Z., Babik, M., and Hluchý, L. (2006). Agentowl: Semantic knowledge modeland agent architecture. Computers and Artificial Intelligence, 25(5).
Moraitis, P., Petraki, E., and Spanoudakis, N. (2003). Engineering jade agents with the gaiamethodology.
Referências II
Nikraz, M., Caire, G., and Bahri, P. A. (2004). A methodology for the analysis and design ofmulti-agent systems using jade.MagidNikraz1a,GiovanniCaireb,andParisaA.Bahria.
Silva, V. T., Cortés, M. I., and Lucena, C. J. P. d. (2004). An object-oriented framework forimplementing agent societies. MCC32/04.
Silva, V. T., Duran, F., Guedes, J., and Lucena, C. J. P. d. (2007). Governing multi-agent systems.Journal of the Brazilian Computer Society, 13(2):19–34.
van Aart, C., Pels, R., Caire, G., and Bergenti, F. (2002). Creating and using ontologies in agentcommunication. http://jade.tilab.com/papers/PaperCaireAart.pdf.