+ All Categories
Home > Documents > JEOPS Java Embedded Object Production System

JEOPS Java Embedded Object Production System

Date post: 09-Jan-2016
Category:
Upload: moral
View: 49 times
Download: 1 times
Share this document with a friend
Description:
JEOPS Java Embedded Object Production System. Allan Lima [email protected] 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 - PowerPoint PPT Presentation
Popular Tags:
21
JEOPS Java Embedded Object Production System Allan Lima [email protected] Material disponível em http://www.cin.ufpe.br/~adsl/arquivos/jeops
Transcript
Page 1: JEOPS Java Embedded Object Production System

JEOPSJava Embedded Object Production System

Allan [email protected]

Material disponível emhttp://www.cin.ufpe.br/~adsl/arquivos/jeops

Page 2: JEOPS Java Embedded Object Production System

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

Page 3: JEOPS Java Embedded Object Production System

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

Page 4: JEOPS Java Embedded Object Production System

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

Page 5: JEOPS Java Embedded Object Production System

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

Page 6: JEOPS Java Embedded Object Production System

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

Page 7: JEOPS Java Embedded Object Production System

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

Page 8: JEOPS Java Embedded Object Production System

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

Page 9: JEOPS Java Embedded Object Production System

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

Page 10: JEOPS Java Embedded Object Production System

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

Page 11: JEOPS Java Embedded Object Production System

Estrutura de uma Base de Regraspackage 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 }

}

Page 12: JEOPS Java Embedded Object Production System

Trabalhando com a Base de Regras

Inserindo objetos insert(Object obj);

Removendo objetos: retract(Object obj);

Informando modificações modified(Object obj);

Page 13: JEOPS Java Embedded Object Production System

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

Page 14: JEOPS Java Embedded Object Production System

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

Page 15: JEOPS Java Embedded Object Production System

Exemplo 2: Fibonacci

public class Fibonacci {

public int n; // The order

public int value;

public Fibonacci son1;

public Fibonacci son2;

...

}

Page 16: JEOPS Java Embedded Object Production System

Exemplo 2: Fibonaccipackage 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 }

Page 17: JEOPS Java Embedded Object Production System

Exemplo 2: Fibonaccirule 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);}

Page 18: JEOPS Java Embedded Object Production System

Exemplo 2: Fibonaccirule 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);}

Page 19: JEOPS Java Embedded Object Production System

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.

Page 20: JEOPS Java Embedded Object Production System

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

Page 21: JEOPS Java Embedded Object Production System

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


Recommended