Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS Abordagens de programação EOOPS: Integração objetos-regras de produção.

Slides:



Advertisements
Apresentações semelhantes
Lógica de Predicados e Representação de Conhecimento
Advertisements

Projeto – Parte II - Exemplos de Diagrama de Colaboração
Viviane Torres da Silva
Sistemas especialistas
Paulo Marques Hernâni Pedroso
Raphael Gatti Thomás Bryan
Professor Roberto Petry
ANÁLISE DE SOFTWARES APLICÁVEIS A UNIDADES E SERVIÇOS DE INFORMAÇÃO
Modelos no Domínio do Tempo de Sistemas LTI Contínuos
Orientação a Objetos: Encapsulamento e Classificação
Resolução.
Agentes Baseados em Regras de Produção
Abordagens de programação EOOPS: Integração objetos-regras de produção
Desenvolvimento Orientado a Agentes
Programação em lógica e lógica
April 05 Prof. Ismael H. F. Santos - 1 Módulo II XML Processing: XSLT, SAX e DOM Prof. Ismael H F Santos.
INTRODUÇÃO À PROGRAMAÇÃO
Curso Sistemas de Informação Disciplina: Arquitetura de Software
ANÁLISE E PROJETO ORIENTADA A OBJETOS UFRJ/IM/DCC Lab PSI mai/1999.
Luiz A. M. Palazzo Pelotas, maio de 2010
Francesca Volcan Pio Maiara Heil Cancian Ricardo Bedin França
Aula 3 Evolução da Principais Linguagens
Aula 8 Orientação à Objetos
Aula 10 Manipulação de Exceções
1 MAC 413/5715 – Seminário Prof. Fabio Kon Self: The Power of Simplicity David Ungar and Randall B. Smith OOPSLA 1987 Cristina Fang Eduardo Miyoshi Kasa.
Sistemas Baseados em Regras de Produção
Como Desenvolver Sistemas de Informação
Gerenciamento do Escopo
Classes e objetos Modelagem
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação Orientada a Objetos
Inteligência Artificial
TÉCNICAS DE PROGRAMAÇÃO II
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Engenharia de Requisitos
José Roberto Blaschek Gerência do Escopo José Roberto Blaschek.
Frameworks - Introdução
PROGRAMAÇÃO I UNIDADE 1.
Sistemas de Produção Fatos: x, y Regras: x & y => p
Aluno: Mário Monteiro Orientador: Sérgio Soares 1.
Object Oriented Software Construction (MEYER, Bertrand)
Resolução de problemas por meio de busca
Desenvolvimento de Sistemas Orientados a Aspectos
Programação Orientada à Objetos
Daniel de Souza Martins Prof. Dr. Patrícia
Linguagens lógicas 2013 – Luiz Mauricio Nascimento Silva
Estudo dos Conceitos e Paradigmas de Programação
DI UFPE Semântica de Java Towards na Operational Semantics and Proof of Type Soundness for Java Sophia Drossopoulou e Susan Eisenbach Imperial College.
Agentes Baseados em Regras de Produção
Regras de Produção: o Motor de Inferência JESS
Agentes Cognitivos Adaptativos Aula: Sistemas Baseados em Regras de Produção Flávia Barros 1.
1.
Projeto de Banco de Dados
Sistemas Especialistas
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Sistemas Inteligentes
Sistemas Inteligentes Sistemas Baseados em Regras de Produção
Sistemas Baseados em Conhecimento
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
Reasoning Forward and Backward Chaining
Lógica para Computação Prof. Celso Antônio Alves Kaestner, Dr. Eng. celsokaestner (at) utfpr (dot) edu (dot) br.
INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha
Linguagem Orientada a Agentes Allan Lima, Bruno Edson, Nancy Lyra.
Integração de Ferramentas CASE
Introdução a Programação Orientada a Objetos
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
1 Programação de Agentes em uma Linguagem Orientada a Objetos: a Solução EOOPS Abordagens de programação EOOPS: Integração objetos-regras de produção JEOPS.
Sistemas Baseados em Conhecimento Prof. Cláudio M. N. A. Pereira.
Módulo II Capítulo 1: Orientação a Objetos
1 Programação de Agentes em uma Linguagem Orientada a Objetos: a Solução EOOPS Abordagens de programação EOOPS: Integração objetos-regras de produção Exemplo:
Transcrição da apresentação:

Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS Abordagens de programação EOOPS: Integração objetos-regras de produção 1

Exemplos Atuais de Aplicações Complexas Recuperação de Informação na Internet ◦ Informação desorganizada e enorme Comércio Eletrônico ◦ Vários sites, produtos, preços, prazos, etc. Jogos Eletrônicos ◦ Realismo e oponentes competitivos 2

Pontos em comum Aplicações 3M ◦ Muito grande (muitas linhas de código) ◦ Muita gente ◦ Muitos e variados serviços (componentes) Serviços IA (dedução, indução, comunicação,...) ◦ Modelo das preferências do usuário, coordenação de ações, comportamento dirigido a objetivos,... tudo encapsulado no conceito de agente Serviços não-IA ◦ BD, GUI, WWW, Mobilidade,... 3

Consequentemente, é preciso... Engenharia de Software ◦ Metodologia, gerência e qualidade de software Material humano qualificado ◦ Cada vez mais escasso Reutilização e integração de componentes (serviços) ◦ Não “reinventar a roda” ◦ Questão: como integrar e facilitar reutilização? 4

Como implementar os agentes? “Linguagens de IA” ◦ Orientadas a agentes (ex. Agent0, Placa, 3APL) ◦ Programação em lógica (prolog) + Oferecem os serviços básicos dos agentes + Coesão - Sistemas desenvolvidos não são facilmente integráveis -Poucos componentes a reutilizar e pouca gente -Metodologia? 5 AIOL (AI-Oriented Language) Reasoning Mechanism

Como implementar os agentes? Linguagens orientadas a objetos ◦ Java, C++,... + Facilitam a reutilização e integração de serviços + Engenharia de software + Mão de obra disponível - Não oferecem de antemão as funcionalidades dos agentes (raciocínio) 6 AI-Oriented Language Host Language

Integração Objetos / Regras de produção Por que não ter o melhor dos mundos? 7

Como integrar dedução com OO? OO dentro de IA ◦ ex. ObjLog (fim dos anos 80), LIFE, trata herança mais facilmente - mesmos problemas de integração com outros sistemas e de pouca reutilização 8 AIOL Reasoning Mechanism OO Mechanisms

Como integrar dedução com OO? IA e OO cooperando ◦ ex. Jasper, JavaLog, InterProlog (fim anos 90) + técnica promissora mas... - requer dupla habilidade de programação - pode não ser eficiente ou viável 9 Host Language Host Language AI AIOL Reasoning Mechanism Tempo de execução

Como integrar dedução em OO? IA dentro de OO ◦ Abordagem 1: Tradução  ex. Prolog Café, jProlog, Minerva and Jinni  “Caixa preta” ◦ Muito bom mas ainda requer dupla habilidade 10 Host Language AI-Oriented Language AI-Oriented Language Reasoning Mechanism Translator

Como integrar dedução em OO? IA dentro de OO ◦ Abordagem 2: Novas Agent-Oriented (Hybrid) Programming Languages  Primitivas redefinidas/extendidas!!!  ex. Jack e AgentJava - excelentes (caixa branca) mas ainda incipientes Extended Host Language Knowledge Base

Como integrar dedução com OO? IA dentro de OO ◦ Abordagem 3: API  ex. CLIPS, NéOpus, RAL/C++ (meados dos anos 80) ◦ Implementação mais usada: EOOPS  Embedded Object-Oriented Production Systems  Linguagem OO + Sistema de Produção 12

EOOPS Embedded Object-Oriented Production Systems 13

Lembrete sobre sistemas de produção Conjunto de ◦ Base de regras de produção ◦ Base de fatos ◦ Conjunto de conflitos (das regras disparáveis) Passos (encadeamento progressivo) ◦ Unificação da condições com os fatos ◦ Resolução de conflitos entre regras ativas ◦ Execução das ações da regra 14

Regras de Produção Representam conhecimento com pares condição-ação ◦ Se condição (ou premissa ou antecedente) ocorre então ação (resultado, conclusão ou conseqüente) deverá ocorrer. Regras de produção produzem novos fatos a partir dos fatos e regras da BC. ◦ Esses novos fatos passam a fazer parte da BC

Regras de Produção Formalismo mais simples, procedimental e popular animal(x)^estimação(x)^pequeno(x) => doméstico(x) premissas conseqüente Base de fatos e base de regras animal(Rex),estimação(Rex),pequeno(Rex) Mecanismo de inferência: São produzidos novos fatos instanciando fatos existentes nas regras (encadeamento para a frente) Estratégia de controle: resolução de conflito

Sistemas de Produção Fatos: x, y Regras: x & y => p Encadeamento para a frente (Forward chaining) ◦ Dados x e y, derive então p Encadeamento para trás (Backward chaining) ◦ p é verdade? Então verificarei x e y. ◦ Prolog

Lembrete sobre sistemas de produção 18 Base de Regras  p1, p2, p3: Pai(p1,p2)  Pai(p2,p3)  Avo(p1,p3) Base de fatos Pai(João, José) Pai(José, Marcos) Motor de Inferência Avo(João, Marcos) unificação

Lembrete sobre sistemas de produção 19 Base de FatosBase de Regras unificação Conjunto de Conflito resolução de conflitos Regra Novos Fatos execução Ciclo Obs: para não ter de re-testar a cada ciclo, só testa os fatos modificados (retirados, adicionados)

Integração Objetos/Regras Mudança filosófica ◦ Fatos: string => Objetos ◦ Predicados: string => métodos dos objetos ◦ Casamento estrutural => Casamento comportamental (pertinência a classes + veracidade dos predicados) Nome: Marcos Nome: José Nome: João pai Pessoa Pai(João, José) Pai(José, Marcos)  p1, p2, p3: Pai(p1,p2)  Pai(p2,p3)  Avo(p1,p3) Regra Avo Para todo objeto p1, p2 e p3 da classe Pessoa, SE p1.ehPai(p2); p2.ehPai(p3); ENTÃO

Integração Objetos/Regras em EOOPS: características Eficiência ◦ RETE? Expressividade ◦ ordem lógica (0, 0+, 1) implementada? Encadeamentos ◦ Progressivo e/ou regressivo? Estratégias de Controle ◦ Flexível? Declarativa? Uniformidade da integração 21

Uniformidade da Integração Aspectos ◦ Sintático: como aparentam as regras? ◦ Semântico: quão respeitados são os conceitos da linguagem OO? Vantagens ◦ Facilidade de uso ◦ Engenharia de Software: reutilização, modularidade, extensibilidade,... 22

Uniformidade da Integração Desvantagens: modified problem ◦ Encapsulamento não permite ao motor de inferência “ver” as mudanças em um objeto (fato) ◦ ex. como saber se um objeto Pessoa passou a ter avô sem precisar perguntá-lo (de novo)? 23

Integração Objetos/Regras: Algumas Propostas 24 CLIPS RAL/C++ NéOpus JESS JEOPS Sistema Ling. Progr. C++ Smalltalk Java Unif. Integr. - +/ Serviços /- + Eficiência +/- + Encad. Resol. Conflitos /-

Regras CLIPS Nem todos objetos são utilizados As regras tem sintaxe própria (lisp-like) 25 (defclass Pessoa (is-a USER) (role concrete) (pattern-match reactive) (slot nome (create-accessor read-write)) (slot pai (create-accessor read-write))) (defrule RegraAvo "O pai do pai de alguém é seu avô” ?a <- (object (is-a Pessoa) (nome ?nomeAvo)) ?p <- (object (is-a Pessoa) (nome ?nomePai) (pai ?a)) (object (is-a Pessoa) (nome ?nomeNeto) (pai ?p)) => (printout t ?nomeAvo “ é avô de ” ?nomeNeto crlf) )

CLIPS Outras caraterísticas ◦ COOL (CLIPS Object-Oriented Language) ◦ Foi uma linguagem utilizada bem difundida (> usuários) Aplicações ◦ medicina, multiagentes, helpdesk, aplicações aeroespaciais, etc. Sites ◦ ◦ 26

Regras RAL/C++ Utiliza classes C++, se indicado Sintaxe um pouco mais próxima à de C++ 27 RegraAvo { // O pai do pai de alguém é seu avô Avo (PessoaMT nome::NomeAvo) Pai (PessoaMT nome::NomePai pai==Avo) Neto (PessoaMT nome::nomeNeto pai==Pai) --> printf(“%s é avô de %s\n”, NomeAvo, NomeNeto); ) class Pessoa { public: char nome[20]; Pessoa pai;... } wmedef PessoaMT:Pessoa {}

Regras NéOpus Toda classe Smalltalk Regras com sintaxe de Smalltalk 28 RegraAvo “O pai do pai de alguém é seu avô” | Pessoa a p n | a = p pai. p = n pai. actions Transcript show: a nome, ‘ é avô de ’, n nome, cr.! Object subclass: #Pessoa instanceVariableNames: ‘nome pai’!

NéOpus ViraCasaca | Pessoa p| (p timePreferido) nome = “Santa Cruz”. Actions | Time bom | bom := Time new. bom nome: “Sport”. p timePreferido: bom. P modified. 29 Pessoa nome idade timePreferido(): Time timePreferifo(t : Time) time Time nome nome(): String nome(n : String)

NéOpus www-poleia.lip6.fr/~fdp/NeOpus.html Outras características ◦ Bases de regra são representadas por classes abstratas (herança!) ◦ Controle declarativo (via Metabase) Aplicações ◦ controle de aparelhos respiratórios, prova de teoremas, transformação de modelo de dados, análise de harmônicas, Actalk,... Infelizmente... ◦ SmallTalk dançou! 30

Regras JESS (CLIPS para Java) Pode usar classes Java, com restrições Regras com sintaxe própria (lisp-like) 31 (defrule RegraAvo "O pai do pai de alguém é seu avô” ?a <- (Pessoa (nome ?nomeAvo)) ?p <- (Pessoa (nome ?nomePai) (pai ?a)) ?n <- (Pessoa (nome ?nomeNeto) (pai ?p)) => (printout t ?nomeAvo “ é avô de ” ?nomeNeto crlf) ) class Pessoa { private String nome; private Pessoa pai;... } (defclass Pessoa Pessoa)

JEOPS Java Embedded Object Production System Made in Cin (1997/2-2000/1)

JEOPS - Princípios Java ◦ 1001 serviços Uniformidade total de integração ◦ Reutilização de componentes ◦ Engenharia de Software Facilidade de uso ◦ Fachada única de acesso 33

JEOPS - Arquitetura 34 Gera entradas Agente Base de Conhecimentos Base de Objetos Rete Base Interna de Regras Conjunto de Conflito Consulta JEOPS flush assert runobjects Knowledge Base Assert = insere objetos na base de objetos Objects = recupera objetos da base de objetos Flush = limpa base de fatos

Regras JEOPS n Rule ::= "rule" "{" "}" n Rule Body ::= ? n Declarations ::= "declarations" ( ("," )* )* n Local Declarations ::= "localdecl" ( "=" )* n Conditions ::= "conditions" ( )* n Actions ::= (Action)+ n Action ::= "assert" "(" ")" | "retract" "(" ")" | "modified" "(" ")" | 35

JEOPS - Exemplo de Utilização Definição das classes ◦ Jogador, Time, Partida, class Time { private Jogador[] jogs;... } class Partida { private int etapa; private int tempo;... } class Jogador { private Time time; private int habilidade;... } class Goleiro extends Jogador {... } class Meia extends Jogador {... } class Atacante extends Jogador {... }

JEOPS - Exemplo de Utilização Criação das regras 37 rule Retranca { declarations Partida p; Jogador a; localdecl Time meuTime = a.getTime(); conditions p.getEtapa() == 2; // Estamos no segundo tempo,... p.getPlacar(meuTime) >= p.getPlacarAdversario(meuTime); meuTime.getCategoria() < //... e eu sou ruim p.getTimeAdversario(meuTime).getCategoria(); actions a.vaParaDefesa(); // Então bola pro mato... modified(a); }

JEOPS - Exemplo de Utilização Criação dos objetos Execução do motor de inferência 38 RegrasFutebol base = new RegrasFutebol(); Time camaroes = new Time(“Camaroes”); base.assert(camaroes); base.assert(new Atacante(camaroes, “MBoma”)); base.assert(new Lateral(camaroes, “Mila”)); base.assert(new Meia(camaroes, “Nkekessi”)); base.assert(new Goleiro(camaroes, “Silva”));... base.assert(new Partida(brasil, camaroes)); base.run();

JEOPS - Outras Características Pré-compilação de regras ◦ Regras convertidas em classes Java ◦ comando:  java jeops.compiler.Main nome_do_arquivo.rules Rete ◦ Algoritmo eficiente de unificação Aplicações ◦ Administração de rede, Jogos interativos (NetMaze, Enigmas, Guararapes), Recuperação de Informação, Geração de variações fonéticas 39

JEOPS - Outras Características Resolução de conflitos ◦ Mecanismo flexível de definição de políticas Classes ◦ LRUConflictSet ◦ MRUConflictSet ◦ NaturalConflictSet ◦ OneShotConflictSet ◦ PriorityConflictSet 40

Drools Faz parte do Jboss, um servidor de aplicação open-source completamente escrito em Java Segue o padrão JSR-94 de rule engines Provê uma plataforma integrada para incluir lógica de negócio em um sistema ◦ Um novo conceito: Blip (Business Logic Integration Platform) ◦ Integra regras, eventos e raciocínio temporal

Drools Expert O Drools Expert é a engine de regras componente da plataforma Drools Baseado no algoritmo RETE Totalmente integrável com Java ◦ Integração transparente através de um plug-in do eclipse ◦ Pode ler classes Java nas condições das regras; ◦ Pode chamar métodos de java na ação das regras;

43 Exemplo no domínio dos veículos Fatos iniciais: num-rodas=4, motor=sim, num- portas=3, tamanho=médio Fase de “casamento” ◦ Automóvel: Se num-rodas=4 E motor=sim Então veículoTipo=automóvel

No Drools: Regra Automóvel rule "Automovel" when v : Veiculo (num_rodas == 4, motor == true, tipo != ETipoVeiculo.Automovel) then v.setTipo(ETipoVeiculo.Automovel); update(v) end

45 Encadeamento progressivo: Exemplo no domínio dos veículos Fatos na MT: ◦ num-rodas=4; motor=sim; num-portas=3; tamanho=médio ◦ veículoTipo=automóvel ◦ MiniVan: Se veículoTipo=automóvel E tamanho=médio E num-portas=3 Então veículo=MiniVan

No Drools: Regra Automóvel rule “Minivan" when v : Veiculo (num_portas == 3, tamanho == Etamanho.Medio, tipo == ETipoVeiculo.Automovel) then v.setConceito(“Minivan”); update(v); end

Passos para o desenvolvimento de aplicações 1. Definir as classes ◦ Atributos e métodos 2. Definir as regras ◦ Interação entre os objetos da base 3. Voltar ao passo 1 4. Escolher estratégia de resolução de conflito 5. Deixar a base de conhecimentos trabalhar... 47

Considerações Finais sobre a Integração Objetos/Regras Vantagens ◦ Reutilização, modularidade, legibilidade, extensibilidade,... ◦ Separação clara entre ontologia e regras (IA) ◦ Facilidade de aprendizado (disponibilidade de gente) 48

Considerações Finais sobre a Integração Objetos/Regras Desvantagem: falta de metodologia ◦ O que vai para as regras e o que vai para os objetos?  Dica: procedimentos, conhecimento consolidado, cálculos eficientes, serviços diversos (ex. BD, WWW),... => métodos ◦ Executa logo?  Parte ação das regras: agenda ou executa? ◦ Agente dentro e fora da KB? 49

Agentes x Base de Conhecimento? Agentes estão dentro da base de objetos ◦ Por exemplo jogadores estão dentro de uma base sobre jogar futebol...  É como se fosse uma agente externo (a base do agente “técnico”) Cada agente tem sua BC (atributo) ◦ Ciclo { ◦ Percepções => base de objetos (da BC) ◦ Run BC ◦ Recupera da BC ações a serem executadas ◦ Executa ações} 50

Considerações Finais sobre a Integração Objetos/Regras Desvantagem: modificação ◦ Detecção da modificação de objetos devido ao encapsulamento ◦ Modificação direta e transitiva

Referências ◦ Masini et al - Object Oriented Languages (Cap 9) ◦ Proceedings of the OOPSLA’94 - workshop on Embedded Object- Oriented Production Systems ◦ Pachet F. - On the embeddability of production rules in object-oriented languages - Journal of Object-Oriented Programming, vol 8, No. 4 ◦ Jennings, Sycara & Wooldridge (1998), Roadmap on Agents Research and Development. Autonomous Agents and Amulti-Agent Systems, 1 ◦ Figueira Filho, C. & Ramalho, G. (2000). Jeops – the java Embedded Object Production System. IBERAMIA-SBIA LNAI 1952, Berlin: Springer- Verlag ◦ Albuquerque, R., Guedes, P., Figueira Filho, C., Robin, J. & Ramalho, G. (2002) Embedding J2ME-based Inference Engine in Handheld Devices: The KEOPS Study Case. In Proceedings of 1st Workshop on Ubiquitous Agents on Embedded, Wearable, and Mobile Devices. In AAMAS’02, Bologna. 52