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

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

JEOPS Java Embedded Object Production System Allan Lima Material disponível em

Apresentações semelhantes


Apresentação em tema: "JEOPS Java Embedded Object Production System Allan Lima Material disponível em"— Transcrição da apresentação:

1 JEOPS Java Embedded Object Production System Allan Lima Material disponível em

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: Descompacte o arquivo JEOPSsrc.zip  Baixe o Eclipse em:  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 Base de Regras (.rule) JEOPS Compiler Base de Regras (.java) Compilação das Regras Aplicação Java Java Compiler Byte Code Compilação da Aplicação Base de Regras (.java) + JEOPS RE

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

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 public class Pessoa { private String nome; private Pessoa pai, mae; public String getNome() {... } public class Objetivo { private boolean ativo; private Pessoa alvo; public Objetivo(Pessoa p) {... }

14 Exemplo 1: Descobrindo ancestrais ruleBase Familia { rule encontraAncestrais { declarations Pessoa p; Objetivo o; localdecl Pessoa pai = p.getPai(); Pessoa mae = p.getMae(); conditions p == o.getAlvo(); o.isAtivo(); actions o.desativa(); System.out.println(pai.getNome() + “ e ” + mae.getNome() + “ são ancestrais”); insert(new Objetivo(pai)); insert(new Objetivo(mae)); }

15 Exemplo 2: Fibonacci public class Fibonacci { public int n; // The order public int 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 1.Modificar o exemplo da família, criando uma regra para descobrir os avós paternos 2.Implementar o calculo do fatorial de um número

21 Como saber mais sobre JEOPS?  Site do Projeto  CEOPS++ Motor de inferência para C++ baseado no JEOPS   Linguagem orienta a agentes baseada na sintaxe no JEOPS es.html es.html


Carregar ppt "JEOPS Java Embedded Object Production System Allan Lima Material disponível em"

Apresentações semelhantes


Anúncios Google