JEOPS Java Embedded Object Production System

Slides:



Advertisements
Apresentações semelhantes
Exemplo de Projeto Vamos criar agora um projeto exemplo para verificar as condições de crédito de um conjunto de indivíduos; Nosso primeiro conjunto de.
Advertisements

Programação Orientada a Objetos*
Introdução à Programação Engenharia da Computação
gerador de código intermediário
Avaliador de Expressões
Programação em Java Prof. Maurício Braga
Prof. Thiago Pereira Rique
Iniciação ao Java – Márcio F. Campos
Programação Básica em Java
Programação Concorrente
Wagner Santos C. de Jesus
Jess – the Rule Engine for the Java™ Platform
Francesca Volcan Pio Maiara Heil Cancian Ricardo Bedin França
Tecnologia para Web JavaScript
Introdução a Linguagem JAVA
Documentando con Javadoc
Métodos Programação II 1 Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre Elementos de Classe, class wrappers.
Clique para editar o estilo do subtítulo mestre Desenvolvimento web com Java JAVA 5 – Declarações e Controles de Acesso.
Clique para editar o estilo do subtítulo mestre Desenvolvimento web com Java JAVA 5 – Declarações e Controles de Acesso.
CRIANDO OBJETOS EM JAVA
JAVA: Conceitos Iniciais
Concorrência em Java Threads em Java.
Unidade I: “Dê um mergulho rápido”
DEFINIÇÃO DE TIPOS – LF3 PLP – Apresentação 2. Equipe Felype Santiago Maria Carolina Paola Rodrigues Rodrigo Cardoso.
JAVA Linguagem Ambiente de Desenvolvimento
Programação I Aula 2 (Métodos)
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Flora-2 Aula de Laboratório Arquivo do Exemplo  Baixar os arquivos “safari.flr” de ~apln/aulamci em um diretório acessível pelo unix (subpasta no diretório.
CEOPS++ Integração entre Objetos e Regras de Produção em C++ Aluno:Pablo de Santana Barbosa Orientador: Geber Lisboa Ramalho.
Semântica de Linguagens de Programação
SableCC José Francisco Pereira Equipe de Monitores
Um Framework Para Testes
Equipe: Fernando Calheiros Flavia Leite Eduardo Wagner
Linguagem Orientada a Agentes Allan Lima, Bruno Edson, Nancy Lyra.
Sistemas Especialistas
Augusto Sampaio e Paulo Borba Gustavo Pinto Marcelo Queiroz
Os métodos equals() e hashCode()
Adriano Melo sistemas inteligentes
1 JavaCC Prof. Alexandre Monteiro Baseado em material cedido pelo Prof. Euclides Arcoverde Recife.
Orientação a Objetos e Java Graduação em Ciência da Computação
Aula prática 1 Aula de Apresentação Monitoria
Programação Orientada a Objetos Curso de Engenharia da Computação Parte 03 – Conceitos Básicos III Prof. Fabricio Mota Oliveira
Paradigma funcional.
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
Wagner Santos C. de Jesus
Analise Semântica aula-10-analise-semântica.pdf.
Aula prática 14 Orientação a Objetos – C++ Parte 2
Implementação Orientada a Objetos – Aula 03
Implementação MVC Pedro Antonino.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Java Kickstart, day 2 Semelhanças com linguagem C.
Análise Léxica Prof. Alexandre Monteiro
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
Monitoria IP ~if669 Garbage Collection e pacotes.
® Tópicos Avançados em Linguagens Computacionais – IF724 Aula Prática – FSharp (F#) Leandro Mitsuo Rodrigo Lumack Professor:
Back-End Compilação aula-11-back-end.pdf.
Linguagens de Programação II
Linguagem Orientada a Agentes Allan Lima, Bruno Edson, Nancy Lyra.
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)
Gerador de Tabela-Verdade
Construtores e Destrutores
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
OO com Java Luiz Carlos d´Oleron Roteiro de aula.
OCLE Object Constraint Language Environment Fábio Moura CIn-UFPE.
Raniere ferreira do prado
Estrutura de Dados Prof. André Cypriano M. Costa
Transcrição da apresentação:

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 Exemplo 1: Descobrindo ancestrais Exemplo 2: Calculando os números de Fibonacci Resolução de Conflitos Exercícios

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

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

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

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

+ 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

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);

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

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

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 }

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

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) {

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)); }

Exemplo 2: Fibonacci public class Fibonacci { public int n; // The order public int value; public Fibonacci son1; public Fibonacci son2; ... }

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 }

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); }

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); }

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.

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

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