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

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

JEOPS Java Embedded Object Production System

Apresentações semelhantes


Apresentação em tema: "JEOPS Java Embedded Object Production System"— 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 Compilação das Regras JEOPS Compiler
Base de Regras (.rule) Base de Regras (.java) Compilação da Aplicação Base de Regras (.java) Java Compiler Byte Code + Aplicação Java JEOPS RE

8 se Pai(a, b) então Filho(b, a)
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 Condições Ações
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 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 CEOPS++ Motor de inferência para C++ baseado no JEOPS Linguagem orienta a agentes baseada na sintaxe no JEOPS


Carregar ppt "JEOPS Java Embedded Object Production System"

Apresentações semelhantes


Anúncios Google