1 / 21

JEOPS Java Embedded Object Production System

JEOPS Java Embedded Object Production System. Allan Lima adsl@cin.ufpe.br Material disponível em http://www.cin.ufpe.br/~adsl/arquivos/jeops. Roteiro. O que é o JEOPS? Um pouco de história Configurando o Eclipse para usar o JEOPS Como o JEOPS funciona? Regras JEOPS

moral
Download Presentation

JEOPS Java Embedded Object Production System

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JEOPSJava Embedded Object Production System Allan Lima adsl@cin.ufpe.br Material disponível em http://www.cin.ufpe.br/~adsl/arquivos/jeops

  2. Roteiro • O que é o JEOPS? • Um pouco de história • Configurando o Eclipse para usar o JEOPS • Como o JEOPS funciona? • Regras JEOPS • Exemplo 1: Descobrindo ancestrais • Exemplo 2: Calculando os números de Fibonacci • Resolução de Conflitos • Exercícios

  3. Configurando o Eclipse • Baixe o JEOPS e o plugin para o Eclipse: • www.cin.ufpe.br/~adsl/arquivos/jeops • Descompacte o arquivo JEOPSsrc.zip • Baixe o Eclipse em: • www.eclipse.org • Descompacte o arquivo JEOclipse.zip na pasta eclipse • Abra o eclipse • File > Import > General > Existing Projects into Workspace • Selecione o diretório onde o código do JEOPS se encontra e clique em finish

  4. O que é o JEOPS? • JEOPS • Java Embedded Object Production System • É um motor de inferência para a linguagem de programação Java • Com ele podemos definir regras para serem executadas sobre objetos Java

  5. Um pouco de história • Idealizado em 1997 na, hoje extinta, cadeira de Inteligência Artificial Simbólica • Primeira versão chamada JEPS • Java Embedded Production System • Possuía diversos problemas e limitações • 1998 • Utilizado por alunos de mestrado • Correção de bugs e grande aumento de performance com o novo algoritmo de unificação • Mudança de nome para JEOPS • Problemas com resolução de conflitos

  6. Um pouco de história • 1999 • Personalização da resolução de conflitos • Refatoração de todo o código para o Inglês • Criação de um manual para o usuário • 2000~2001 • Sistema totalmente reescrito • Regras pré-compiladas • Parser otimizado para a total integração com Java • Maior facilidade para a personalização de conflitos • Melhor unificação entre regras e objetos

  7. Como o JEOPS funciona Compilação das Regras JEOPS Compiler Base de Regras (.java) Base de Regras (.rule) Compilação da Aplicação Base de Regras (.java) Java Compiler Byte Code + Aplicação Java JEOPS RE

  8. Como o JEOPS funciona Execução se Pai(a, b) então Filho(b, a) Filho(a, b) ??? Base de Regras Motor de Inferência Verdadeiro + Fatos Pai(a, b); Pai(b, c);

  9. Regras JEOPS • São organizadas em uma base de regras • Uma base de regra contem regras, mas também pode conter métodos e declarações de variáveis, como qualquer classe de Java. • As regras são descritas através de três campos • Declaração de variáveis • Condições • Ações

  10. Regras JEOPS • Declaração de variáveis • Variáveis que compõem a regra • Parâmetros para a avaliação da regra • Variáveis locais • Variáveis auxiliares,usadas para simplificar expressões complexas • Condições • Qualquer expressão booleana em Java • Não deve modificar o estado dos objetos • Ações • Qualquer expressão de Java

  11. Estrutura de uma Base de Regras package nomeDoPacote; public ruleBase NomeDaBaseDeRegras { rule NomeDaRegra { declarations // Declaração de variáveis, parâmetros da regra localdecl // Declaração de variáveis internas da regra conditions // Condições para a realização das ações actions // Ações que serão realizadas caso as condições sejam // satisfeitas } }

  12. Trabalhando com a Base de Regras • Inserindo objetos • insert(Object obj); • Removendo objetos: • retract(Object obj); • Informando modificações • modified(Object obj);

  13. Exemplo 1: Descobrindo ancestrais

  14. Exemplo 1: Descobrindo ancestrais

  15. Exemplo 2: Fibonacci publicclass Fibonacci { publicint n; // The order publicint value; public Fibonacci son1; public Fibonacci son2; ... }

  16. Exemplo 2: Fibonacci package fibonacci; public ruleBase FibonacciBase { rule BaseCase { // if n == 1 or n == 0, then the value is n. declarations Fibonacci f; conditions f.getN() <= 1; f.getValue() == -1; actions f.setValue(f.getN()); modified(f); // Yes, I modified f }

  17. Exemplo 2: Fibonacci rule GoDown { // if n >= 2, create two sons for the object declarations Fibonacci f; conditions f.getValue() == -1; f.getN() >= 2; f.getSon1() == null; actions Fibonacci f1 = new Fibonacci(f.getN() - 1); Fibonacci f2 = new Fibonacci(f.getN() - 2); f.setSon1(f1); f.setSon2(f2); insert(f1); // Let's tell our knowledge base insert(f2); // that these two sons exist. modified(f); }

  18. Exemplo 2: Fibonacci rule GoUp { // if both subproblems are solved, // so let's solve this one declarations Fibonacci f, f1, f2; conditions f1 == f.getSon1(); f2 == f.getSon2(); f.getValue() == -1; f.getN() >= 2; f1.getValue() != -1; f2.getValue() != -1; actions f.setValue(f1.getValue() + f2.getValue()); retract(f1); // I don't need retract(f2); // they anymore... modified(f); }

  19. Resolução de Conflitos • O JEOPS possui um mecanismo flexível para a resolução de conflitos • Podemos criar nosso próprio gerenciador de conflitos • Herdando da classe AbstractConflictSet • Ou usar as classes do projeto • DefaultConflictSet • Não há regras, se preocupa apenas com a eficiência • LRUConflictSet • Escolherá sempre a regra menos recentemente utilizada • MRUConflictSet • Escolherá a regra mais recentemente utilizada • NaturalConflictSet • Não permite que uma regra seja disparada mais de uma vez com os mesmos objetos (problemas com memória) • OneShotConflictSet • Não permite que uma regra seja disparada mais de uma vez, mesmo que com objetos distintos. • PriorityConflictSet • A ordem da definição das regras no arquivo define as suas prioridades.

  20. Exercícios • Modificar o exemplo da família, criando uma regra para descobrir os avós paternos • Implementar o calculo do fatorial de um número

  21. Como saber mais sobre JEOPS? • Site do Projeto • http://www.cin.ufpe.br/~jeops/ • CEOPS++ • Motor de inferência para C++ baseado no JEOPS • http://www.cin.ufpe.br/~tg/2006-1/psb.pdf • Linguagem orienta a agentes baseada na sintaxe no JEOPS • http://www.cin.ufpe.br/~nll/orientadaAgentes.html

More Related