A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Jade e Jadex Equipe do Curso de ES para SMA

Apresentações semelhantes


Apresentação em tema: "Jade e Jadex Equipe do Curso de ES para SMA"— Transcrição da apresentação:

1 Jade e Jadex Equipe do Curso de ES para SMA
{lucena, furtado, choren,

2 Jade Java Agent Development Framework
Versão atual: 3.2 (26 Jul 2004)

3 Jade é um middleware para o desenvolvimento de sistemas multi-agentes
O que é Jade? Jade é um middleware para o desenvolvimento de sistemas multi-agentes Inclui Um ambiente de execução onde os agentes JADE "vivem" e que deve estar ativo em um host antes que um agente possa ser executado Uma biblioteca de classes que programadores podem usar para desenvolver agentes Um conjunto de ferramentas gráficas que permite a administração e o monitoramento das atividades dos agentes em execução Laboratório de Engenharia de Software (LES) – PUC-Rio

4 Contêiner e Plataforma
Instância de um ambiente Jade É onde os agentes executam Ao iniciar o Jade, um MainContainer é criado Plataforma Conjunto de contêineres ativos Laboratório de Engenharia de Software (LES) – PUC-Rio

5 Contêineres e Plataformas
Laboratório de Engenharia de Software (LES) – PUC-Rio

6 A Plataforma O Jade segue o modelo da FIPA (Foundation for Intelligent Physical Agents) Laboratório de Engenharia de Software (LES) – PUC-Rio

7 Agent Management System (AMS)
AMS e DF Agent Management System (AMS) Agente que exerce o controle sobre o acesso e o uso da plataforma Existe um único AMS por plataforma Mantém a lista de identificadores dos agentes (AID) que estão na plataforma Todo agente deve se registrar no AMS Directory Facilitator (DF) Oferecer o serviço de páginas amarelas na plataforma Laboratório de Engenharia de Software (LES) – PUC-Rio

8 Representa a classe base para a definição de agentes
A Classe Agent Representa a classe base para a definição de agentes Para o desenvolvedor, um agente Jade é uma instância de uma classe Java que estende a classe Agent Já oferece todas as interações básicas da plataforma (registro, configuração, etc...) Oferece um conjunto de métodos para a implementação do comportamento do agente Laboratório de Engenharia de Software (LES) – PUC-Rio

9 Modelo Computacional do Agente
Um agente é multi-tarefa, onde os serviços são executados concorrentemente Cada serviço de um agente deve ser implementado como um ou mais comportamtentos A classe Agent oferece um scheduler (não acessível ao programador) que gerencia automaticamente o agendamento dos comportamentos Laboratório de Engenharia de Software (LES) – PUC-Rio

10 O Ciclo de Vida de um Agente
Laboratório de Engenharia de Software (LES) – PUC-Rio

11 Ciclo de Vida de um Agente
Iniciado O objeto agente é criado, mas ainda não se registrou no AMS, i.e. não possui um identificador e não pode se comunicar com outros agentes Ativo O objeto agente está registrado no AMS, possui um identificador e pode executar seus serviços Suspenso O objeto agente está parado, i.e. sua thread interna está suspensa e o agente não está executando serviço algum Laboratório de Engenharia de Software (LES) – PUC-Rio

12 Ciclo de Vida de um Agente
Esperando O objeto agente está bloqueado, esperando por algum evento, i.e. sua thread interna está dormindo e será acordada quando uma condição se tornar verdadeira Removido O objeto agente está terminado, i.e. sua thread interna acabou sua execução e o agente não está mais registrado no AMS Em Trânsito Um agente móvel entra neste estado quando está migrando para um novo local (contêiner). O sistema continua a armazenar as mensagens enviadas a este agente, que lhe serão passadas quando ele estiver no novo local Laboratório de Engenharia de Software (LES) – PUC-Rio

13 Jade gerencia a criação de um novo agente com os seguintes passos
Criando um Agente Jade Jade gerencia a criação de um novo agente com os seguintes passos O construtor do agente é executado O agente recebe um identificador do MAS Ex: Entra no estado Ativo É executado o método setup() Método responsável por inicializar os comportamentos do agente Laboratório de Engenharia de Software (LES) – PUC-Rio

14 Um Exemplo package examples.hello; import jade.core.Agent;
public class HelloWorldAgent extends Agent { protected void setup() { // Mostra uma mensagem de Hello System.out.println("Hello World! Meu nome eh " + getAID().getName()); } prompt> set CLASSPATH=%CLASSPATH%;.;[CLASSPATH JADE JARS] prompt> java jade.Boot -gui Agente1:examples.hello.HelloWorldAgent Laboratório de Engenharia de Software (LES) – PUC-Rio

15 Um Exemplo Laboratório de Engenharia de Software (LES) – PUC-Rio

16 Destruindo um Agente Jade
Mesmo que não esteja fazendo coisa alguma, o agente continua executando Para terminar um agente, deve-se executar o método doDelete() que chama o método takeDown() Serve para remover todas as referências ao agente da plataforma Laboratório de Engenharia de Software (LES) – PUC-Rio

17 Um Exemplo package examples.hello; import jade.core.Agent;
public class HelloWorldAgent extends Agent { protected void setup() { // Mostra uma mensagem de Hello System.out.println("Hello World! Meu nome eh " + getAID().getName()); doDelete(); } protected void takeDown() { // Imprimindo uma mensagem de saida System.out.println("Agente " + getAID().getName() + " terminando."); Laboratório de Engenharia de Software (LES) – PUC-Rio

18 As Tarefas do Agente – Classe Behaviour
Todas as tarefas dos agentes são executadas por meio de "comportamentos" Um comportamento é um objeto da classe Behaviour O agente adiciona um comportamento com o método addBehaviour() Comportamentos podem ser adicionados a qualquer momento No método setup() Dentro de outros comportamentos Laboratório de Engenharia de Software (LES) – PUC-Rio

19 As Tarefas do Agente – Classe Behaviour
Método action() Método que define as operações que são executadas quando o comportamento está em execução Método done() Método que especifica se um comportamento foi completado e deve ser removido do pool de comportamentos que um agente está executando Laboratório de Engenharia de Software (LES) – PUC-Rio

20 O Esquema de um Comportamento
public class UmComportamento extends Behaviour { public void action() { while (true) { // Código do Comportamento } public boolean done() { return true; Laboratório de Engenharia de Software (LES) – PUC-Rio

21 Detalhes sobre a Execução de Comportamentos
Um agente pode executar diversos comportamentos concorrentemente O scheduling de comportamentos não é preemptivo Quando um comportamento está agendado para execução, o método action é chamado e executa até retornar Quem deve definir quando um agente deve passar da execução de um comportamento para outro é o desenvolvedor Laboratório de Engenharia de Software (LES) – PUC-Rio

22 A Execução de um Agente Laboratório de Engenharia de Software (LES) – PUC-Rio

23 A Hierarquia de Comportamentos
Comportamentos Simples Modelam os comportamentos atômicos OneShotBehaviour e CyclicBehaviour Comportamentos Compostos Modelam comportamentos que são compostos de outros comportamentos. Assim, as operações que devem ser executadas não estão definidas neste comportamento em si, mas nos comportamentos filhos que o compõem SequentialBehaviour, ParallelBehaviour e FSMBehaviour Laboratório de Engenharia de Software (LES) – PUC-Rio

24 A Hierarquia de Comportamentos
Laboratório de Engenharia de Software (LES) – PUC-Rio

25 Comportamentos Simples
OneShotBehaviour Modela comportamentos que só devem executar uma vez e que não podem ser bloqueados (parar o comportamento até que algum evento ocorra) CyclicBehaviour Modela comportamentos atômicos que devem ser executados eternamente Laboratório de Engenharia de Software (LES) – PUC-Rio

26 Comportamentos Compostos
SequentialBehaviour Executa seus sub-comportamentos seqüencialmente e termina quando todos estes estiverem terminados ParallelBehaviour Executa seus sub-comportamentos concorrentemente e termina quando uma condição particular sobre o conjunto de sub-comportamentos é alcançada FSMBehaviour Executa seus sub-comportamentos como uma Máquina de Estados Finita (FSM). Quando uma tarefa acaba, sua saída é usada para se calcular a transição para a próxima tarefa. O comportamento termina quando uma tarefa final é executada Laboratório de Engenharia de Software (LES) – PUC-Rio

27 Esquemas de Comportamentos Simples
// OneShotBehaviour public class MyOneShotBehaviour extends OneShotBehaviour { public void action() { // Executar a operação X } // CyclicBehaviour public class MyCyclicBehaviour extends CyclicBehaviour { // Executar a operação Y Laboratório de Engenharia de Software (LES) – PUC-Rio

28 Esquema Genérico de Comportamento
public class MyTwoStepBehaviour extends Behaviour { private int step = 0; public void action() { switch (step) { case 0: // Executar a operação X step++; break; case 1: // Executar a operação Y } public boolean done() { return step == 2; Laboratório de Engenharia de Software (LES) – PUC-Rio

29 Comportamentos Especiais
WakerBehaviour Comportamento que espera um determinado período de tempo (em ms) para efetivamente executar a tarefa TickerBehaviour Comportamento que executa uma tarefa periodicamente em intervalos de tempo constantes (em ms). Este comportamento nunca acaba Laboratório de Engenharia de Software (LES) – PUC-Rio

30 WakerBehaviour public class MyAgent extends Agent {
protected void setup() { System.out.println("Adicionando waker behaviour"); addBehaviour(new WakerBehaviour(this, 10000) { protected void handleElapsedTimeout() { // Executa a operação X } } ); A operação X é executada 10 segundo depois de imprimir "Adicionando waker behaviour" Laboratório de Engenharia de Software (LES) – PUC-Rio

31 TickerBehaviour public class MyAgent extends Agent {
protected void setup() { addBehaviour(new TickerBehaviour(this, 10000) { protected void onTick() { // Executar a operação Y } } ); A operação Y é executada periodicamente a cada 10 segundos Laboratório de Engenharia de Software (LES) – PUC-Rio

32 A Comunicação entre Agentes
A troca de mensagens é assíncrona e usa a FIPA ACL (Agent Communication Language) Laboratório de Engenharia de Software (LES) – PUC-Rio

33 A Linguagem ACL Campos principais
Sender: o agente que envia a mensagem Receivers: lista de agentes destino da mensagem Performative: ato de fala que indica o que o agente que envia a mensagem espera com ela Content: o real conteúdo da mensagem Language: sintaxe usada para expressar o conteúdo Ontology: denota a semântica dos itens do conteúdo Outros campos de controle de convesação como: conversation-id, reply-with, in-reply-to, reply-by Laboratório de Engenharia de Software (LES) – PUC-Rio

34 A Linguagem ACL - Exemplo
Início da mensagem Tipo de ato de comunicação (Performativa) Controle de conversação ( inform :sender agent1 :receiver hpl-auction-server :content (price (bid good02) 150) :in-reply-to round-4 :reply-with bid04 :language FIPA SL :ontology hpl-auction ) Mensagem ACL Conteúdo da mensagem Laboratório de Engenharia de Software (LES) – PUC-Rio

35 A Linguagem ACL – Performativas
INFORM “A porta está aberta” QUERY “A porta está aberta?” CFP “Alguém quer abrir a porta?” REQUEST “Abra a porta para mim” AGREE “OK, vou abrir a porta para você” REFUSE “Eu não vou abrir a porta” FAILURE “Eu não consigo abrir a porta” Laboratório de Engenharia de Software (LES) – PUC-Rio

36 A Linguagem ACL – Performativas
PROPOSE “Eu posso abrir a porta para você, pelo seguinte preço” SUBSCRIBE “Quero ser avisado quando a porta for aberta” NOT-UNDERSTOOD “Porta? Que porta?” Laboratório de Engenharia de Software (LES) – PUC-Rio

37 Enviando Mensagens Deve-se criar e montar um objeto ACLMessage e chamar o método send() do agente ACLMessage msg = new ACLMessage( ACLMessage.INFORM ); msg.addReceiver( new AID( "Agente2", AID.ISLOCALNAME ) ); msg.setLanguage( "English" ); msg.setOntology( "Weather-forecast-ontology" ); msg.setContent( "Today it’s raining" ); send(msg); Laboratório de Engenharia de Software (LES) – PUC-Rio

38 Recebendo Mensagens Para se receber uma mensagem usa-se o método receive(), que recupera a primeira mensagem da fila de mensagens do agente Este método remove a mensagem da pilha, ou retorna null caso esteja vazia ACLMessage msg = receive(); if (msg != null) { // Processar a mensagem } Laboratório de Engenharia de Software (LES) – PUC-Rio

39 Bloqueando um Agente à espera de uma Mensagem
O scheduler de ações do Jade não pára a execução de uma ação caso não haja mensagens para um agente Para parar a execução de uma ação à espera de uma mensagem, deve-se usar o método block() public void action() { ACLMessage msg = myAgent.receive(); if (msg != null) { // Mensagem recebida - processá-la ... } else block(); Laboratório de Engenharia de Software (LES) – PUC-Rio

40 Selecionando um Tipo de Mensagem da Fila
Pode-se selecionar um tipo de mensagem da fila usando um MessageTemplate public void action() { MessageTemplate mt; mt = MessageTemplate.MatchPerformative(ACLMessage.CFP); ACLMessage msg = myAgent.receive(mt); if (msg != null) { // Mensagem do tipo CFP recebida - processá-la ... } else block(); Laboratório de Engenharia de Software (LES) – PUC-Rio

41 O Serviço de Páginas Amarelas – Agente DF
Todo agente deve registrar seu serviço no DF Só existe um DF em cada plataforma Jade Laboratório de Engenharia de Software (LES) – PUC-Rio

42 Registrando um Serviço no DF
Deve-se criar um objeto ServiceDescription e chamar o método register() de um DF (usualmente no método setup() do agente) protected void setup() { ... // Registrar um agente vendedor de livros no DF DFAgentDescription dfd = new DFAgentDescription(); dfd.setName(getAID()); ServiceDescription sd = new ServiceDescription(); sd.setType("book-selling"); sd.setName("JADE-book-trading"); dfd.addServices(sd); try { DFService.register(this, dfd); } catch (FIPAException fe) { fe.printStackTrace(); } } Laboratório de Engenharia de Software (LES) – PUC-Rio

43 Removendo um Serviço do DF
Chamar o método deregister() do DF (usualmente no método takeDown() do agente) protected void takeDown() { // Saindo do DF try { DFService.deregister(this); } catch (FIPAException fe) { fe.printStackTrace(); // Mostrando uma mensagem de saída System.out.println("Agente vendedor " + getAID().getName() + " terminando"); Laboratório de Engenharia de Software (LES) – PUC-Rio

44 Procurando por Serviços no DF
Criar um objeto DFAgentDescription e chamar o método search() do DF protected void setup() { ... // Criando um TickerBehaviour para procurar agentes vendedores a cada minuto addBehaviour(new TickerBehaviour(this, 60000) { protected void onTick() { // Atualizando a lista de agentes vendedores DFAgentDescription template = new DFAgentDescription(); ServiceDescription sd = new ServiceDescription(); sd.setType("book-selling"); template.addServices(sd); try { DFAgentDescription[] result = DFService.search(myAgent, template); sellerAgents = new AID[result.length]; for (int i = 0; i < result.length; ++i) sellerAgents[i] = result.getName(); } catch (FIPAException fe) { fe.printStackTrace(); } } ); Laboratório de Engenharia de Software (LES) – PUC-Rio

45 Jade é um framework de desenvolvimento de sistemas multi-agentes
Concluindo... Jade é um framework de desenvolvimento de sistemas multi-agentes Implementa o modelo de infraestrutura FIPA com registro, páginas amarelas e mecanismo de envio de mensagens Uso de AMS, DF e de FIPA ACL Ciclo de vida de um agente setup(), addBehaviour(), takeDown() Abordagem orientada a tarefas: o comportamento dos agentes é decomposto em pedaços menores (Behaviour) que são adicionados ao agente quando necessário Laboratório de Engenharia de Software (LES) – PUC-Rio

46 Laboratório de Engenharia de Software (LES) – PUC-Rio

47 Jadex Versão atual: 0.92 (09 Mai 2004)
Versão atual: 0.92 (09 Mai 2004)

48 O que é Jadex? Jadex é um framework que oferece suporte ao modelo BDI (Beliefs – Desires – Intentions) sobre a plataforma JADE Inclui Laboratório de Engenharia de Software (LES) – PUC-Rio

49 Teoria sobre o raciocínio humano
O Modelo BDI Teoria sobre o raciocínio humano As causas para as ações humanas são os desejos, ignorando outras facetas como p. ex. as emoções No caso de agentes, é composto por Belief Desire Plan Intention Laboratório de Engenharia de Software (LES) – PUC-Rio

50 O Modelo BDI Crença (Belief) Desejo (Desire) Plano (Plan)
Informação que um agente possui sobre o seu ambiente e sobre seu estado interno Desejo (Desire) Objetivo do agente que guia a escolha de ações Plano (Plan) Meio pelo qual os agentes alcançam os objetivos. Pode não ser uma seqüência de ações simples (i.e. pode incluir sub-objetivos) Intenção (Intention) Ato de se comprometer a alcançar um determinado objetivo por meio de um plano Laboratório de Engenharia de Software (LES) – PUC-Rio

51 Algoritmo BDI Initialize-state(); repeat
options := option-generator(event-queue); selected-options := deliberate(options); update-intentions(selected-options); execute(); get-new-external-events(); drop-successful-attitudes(); drop-impossible-attitudes(); end repeat A. Rao and M. Georgeff. BDI Agents: from theory to practice. In V. Lesser (ed.) Proceedings of the First International Conference on Multi-Agent Systems (ICMAS’95), pp. 312–319. The MIT Press: Cambridge, MA, USA, 1995. Laboratório de Engenharia de Software (LES) – PUC-Rio

52 O Modelo Jadex Laboratório de Engenharia de Software (LES) – PUC-Rio

53 Descrito através de um arquivo XML Contém
Agente Jadex Descrito através de um arquivo XML Contém Nome Estado inicial Beliefs Goals Biblioteca de planos Expressões para especificar determinadas propriedades do agente Laboratório de Engenharia de Software (LES) – PUC-Rio

54 Um Exemplo Laboratório de Engenharia de Software (LES) – PUC-Rio

55 Arquivo de definição (ADF – agent definition file) escrito em XML
Definindo um Agente Arquivo de definição (ADF – agent definition file) escrito em XML <agent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://jadex.sourceforge.net/jadex.xsd" name="ta" class="jadex.runtime.JadeWrapperAgent" package="jadex.examples.tutorial"> </agent> prompt> set CLASSPATH=%CLASSPATH%;.;[CLASSPATH JADE JARS]; [CLASSPATH jadex.jar] prompt> java jade.Boot rma:jadex.tools.rma.rma Laboratório de Engenharia de Software (LES) – PUC-Rio

56 Um Exemplo Laboratório de Engenharia de Software (LES) – PUC-Rio

57 Devem estender uma das classes ThreadedPlan ou NonThreadedPlan
Planos Devem estender uma das classes ThreadedPlan ou NonThreadedPlan Deve implementar o método body() Deve-se colocar a referência à classe do plano no arquivo ADF (incluindo o import para o pacote da classe) Plano pode ser Ativo: sempre em execução Passivo: instanciado a cada evento Laboratório de Engenharia de Software (LES) – PUC-Rio

58 Um Exemplo <agent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://jadex.sourceforge.net/jadex.xsd" name="ta" class="jadex.runtime.JadeWrapperAgent" package="jadex.examples"> <imports> <import>jadex.ex.*</import> </imports> <plans> <plan name="traduz" instant="true"> <constructor> new EnglishPortugueseTranslationPlanP1() </constructor> <waitqueuefilter> EnglishPortugueseTranslationPlanP1.getEventFilter() </waitqueuefilter> </plan> </plans> </agent> Laboratório de Engenharia de Software (LES) – PUC-Rio

59 Um Exemplo package jadex.ex; import jadex.runtime.*;
import jade.lang.acl.*; import jadex.*; import java.util.*; public class EnglishPortugueseTranslationPlanP1 extends ThreadedPlan { private Hashtable palavras; public EnglishPortugueseTranslationPlanP1() { this.palavras = new Hashtable(); palavras.put("chair", "cadeira"); palavras.put("table", "mesa"); palavras.put("book", "livro"); System.out.println("Criado: " + this); } Laboratório de Engenharia de Software (LES) – PUC-Rio

60 Um Exemplo public void body() { while (true) {
REvent event = waitFor(getEventFilter()); String conteudo = ((RMessageEvent)event).getContent().toString(); if (palavras.get(conteudo) != null) { String traducao = palavras.get(conteudo).toString(); System.out.println(conteudo + " em portugues eh " + traducao); } else System.out.println("Nao conheco a palavra " + conteudo + "."); public static IFilter getEventFilter() { MessageTemplate mt; mt = MessageTemplate.MatchPerformative(ACLMessage.REQUEST); MessageFilter mfilter = new MessageFilter(mt); return mfilter; Laboratório de Engenharia de Software (LES) – PUC-Rio

61 Um Exemplo Laboratório de Engenharia de Software (LES) – PUC-Rio

62 Representa o conhecimento dos agentes sobre o ambiente
A BeliefBase Representa o conhecimento dos agentes sobre o ambiente Deve estar declarado no arquivo ADF Pode-se consultar, adicionar e remover objetos da BeliefBase dinamicamente Um exemplo Indicação no arquivo ADF Inserção de dados na BeliefBase Consulta a dados na BeliefBase Laboratório de Engenharia de Software (LES) – PUC-Rio

63 Um Exemplo <agent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://jadex.sourceforge.net/jadex.xsd" name="ta3" class="jadex.runtime.JadeWrapperAgent" package="jadex.examples"> <imports> <import>jadex.ex.*</import> <import>java.util.*</import> </imports> <plans> <plan name="traduz"> <constructor>new EnglishPortugueseTranslationPlanP4()</constructor> <filter>EnglishPortugueseTranslationPlanP4.getEventFilter()</filter> </plan> <plan name="mantemDicionario"> <constructor>new EnglishPortugueseTranslationPlanP3()</constructor> <filter>EnglishPortugueseTranslationPlanP3.getEventFilter()</filter> </plans> <beliefs> <belief name="dicionario" class="Hashtable"> <fact>new Hashtable()</fact> </belief> </beliefs> </agent> Laboratório de Engenharia de Software (LES) – PUC-Rio

64 Um Exemplo // PLANO DE TRADUÇÃO package jadex.ex;
import jadex.runtime.*; import jade.lang.acl.*; import jadex.*; import java.util.*; public class EnglishPortugueseTranslationPlanP4 extends ThreadedPlan { public EnglishPortugueseTranslationPlanP4() { System.out.println("Criado plano P4: " + this); } public void body() { REvent event = getInitialEvent(); String conteudo = ((RMessageEvent)event).getContent().toString(); Hashtable dicionario = (Hashtable)getBeliefbase().getFact("dicionario"); Laboratório de Engenharia de Software (LES) – PUC-Rio

65 Um Exemplo // CONTINUAÇÃO DO PLANO DE TRADUÇÃO
if (dicionario.get(conteudo) != null) { String traducao = dicionario.get(conteudo).toString(); System.out.println("Traduzindo: " + conteudo + " em portugues eh " + traducao); } else System.out.println("Nao conheco a palavra " + conteudo + "."); public static IFilter getEventFilter() { MessageTemplate mt; mt = MessageTemplate.MatchPerformative(ACLMessage.REQUEST); MessageFilter mfilter = new MessageFilter(mt); return mfilter; Laboratório de Engenharia de Software (LES) – PUC-Rio

66 Um Exemplo // PLANO DE MANUTENÇÃO DO BELIEFBASE package jadex.ex;
import jadex.runtime.*; import jade.lang.acl.*; import jadex.*; import java.util.*; public class EnglishPortugueseTranslationPlanP3 extends ThreadedPlan { public EnglishPortugueseTranslationPlanP3() { System.out.println("Criado plano P3: " + this); } public void body() { REvent event = getInitialEvent(); String conteudo = ((RMessageEvent)event).getContent().toString(); Hashtable dicionario = (Hashtable)getBeliefbase().getFact("dicionario"); StringTokenizer st = new StringTokenizer(conteudo, " "); Laboratório de Engenharia de Software (LES) – PUC-Rio

67 Um Exemplo // CONTINUAÇÃO DO PLANO DE MANUTENÇÃO DO BELIEFBASE
if (st.countTokens() == 4) { st.nextToken(); st.nextToken(); String palavraIngles = st.nextToken(); String palavraPortugues = st.nextToken(); if (!dicionario.containsKey(palavraIngles)) dicionario.put(palavraIngles, palavraPortugues); } // Código para imprimir a Hashtable na tela (removido daqui) public static IFilter getEventFilter() { MessageTemplate mt = new MessageTemplate(new MatchStartContentLiteral("adicione ingles_portugues")); MessageFilter mfilter = new MessageFilter(mt); return mfilter; Laboratório de Engenharia de Software (LES) – PUC-Rio

68 Jadex oferece suporte ainda a
Outras Features Jadex oferece suporte ainda a Capabilities Goals Events Laboratório de Engenharia de Software (LES) – PUC-Rio

69 Jadex é um framework de desenvolvimento de sistemas multi-agentes
Concluindo... Jadex é um framework de desenvolvimento de sistemas multi-agentes Implementa o modelo BDI Planos Beliefs Objetivos É feito sobre o Jade Laboratório de Engenharia de Software (LES) – PUC-Rio

70 Dúvidas? Laboratório de Engenharia de Software (LES) – PUC-Rio

71 Laboratório de Engenharia de Software (LES) – PUC-Rio


Carregar ppt "Jade e Jadex Equipe do Curso de ES para SMA"

Apresentações semelhantes


Anúncios Google