Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS

Post on 20-Jan-2016

26 views 0 download

description

Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS. Abordagens de programação EOOPS: Integração objetos-regras de produção. Exemplos Atuais de Aplicações Complexas. Recuperação de Informação na Internet Informação desorganizada e enorme Comércio Eletrônico - PowerPoint PPT Presentation

Transcript of Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS

Representando Conhecimento em uma Representando Conhecimento em uma Linguagem Orientada a Objetos: Linguagem Orientada a Objetos:

a Solução EOOPSa Solução EOOPS

Abordagens de programaçãoEOOPS: Integração objetos-regras de produção

1

Exemplos Atuais de Exemplos Atuais de Aplicações ComplexasAplicações ComplexasRecuperaçã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 comumPontos em comumAplicaçõ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, é Consequentemente, é preciso... 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 Como implementar os agentes?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-OrientedLanguage)

ReasoningMechanism

Como implementar os Como implementar os agentes?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

HostLanguage

Integração Objetos / Regras de Integração Objetos / Regras de produçãoprodução

Por que não ter o melhor dos mundos?

7

Como integrar dedução com Como integrar dedução com OO?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

ReasoningMechanism

OO Mechanisms

Como integrar dedução com Como integrar dedução com OO?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

ReasoningMechanism

Tempo de execução

Como integrar dedução em Como integrar dedução em OO?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

ReasoningMechanism

Translator

Como integrar dedução em Como integrar dedução em OO?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....

11

Extended Host

Language-- - - ------ - - ----- - - - - ---- - - ------ - - - -

Knowledge Base

Como integrar dedução com Como integrar dedução com OO?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

HostLanguage

HostLanguage

ReasoningMechanism

-- - - ------ - - ----- - - - - ---- - - ------ - - - -

Knowledge Base

EOOPSEOOPSEmbedded Object-Oriented Production SystemsEmbedded Object-Oriented Production Systems

13

Lembrete sobre sistemas de Lembrete sobre sistemas de produçãoproduçãoConjunto 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çãoRegras 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çãoRegras de Produção

Formalismo mais simples, procedimental e popularanimal(x)^estimação(x)^pequeno(x) => doméstico(x)

premissas conseqüenteBase de fatos e base de regrasanimal(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çãoSistemas de Produção

Fatos: x, yRegras: x & y => pEncadeamento 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 Lembrete sobre sistemas de produçãoprodução

18

Base de Regras

p1, p2, p3:Pai(p1,p2) Pai(p2,p3) Avo(p1,p3)

Base defatos

Pai(João, José)Pai(José, Marcos)

Motor de Inferência

Avo(João, Marcos)Avo(João, Marcos)

unificação

Lembrete sobre sistemas de Lembrete sobre sistemas de produçãoprodução

19

Base de FatosBase de Regras unificação

Conjunto de Conflito

resoluçãode 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/RegrasIntegração Objetos/RegrasMudanç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 pai

Pessoa Pessoa 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 Integração Objetos/Regras em EOOPS: característicasem EOOPS: característicasEficiê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 Uniformidade da IntegraçãoIntegraçã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 Uniformidade da IntegraçãoIntegraçãoDesvantagens: 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:Integração Objetos/Regras:Algumas PropostasAlgumas Propostas

24

CLIPS

RAL/C++

NéOpus

JESS

JEOPS

SistemaLing.Progr.

C++

C++

Smalltalk

Java

Java

Unif.Integr.

-

+/-

+

-

+

Serviços

-

+

-

+/-

+

Eficiência

+/-

+

+/-

+/-

+/-

Encad.Resol.

Conflitos

-

-

+

-

+/-

Regras CLIPSRegras CLIPSNem 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))

CLIPSCLIPSOutras caraterísticas

◦COOL (CLIPS Object-Oriented Language)

◦Foi uma linguagem utilizada bem difundida (> 5.000 usuários)

Aplicações◦medicina, multiagentes, helpdesk,

aplicações aeroespaciais, etc.Sites

◦http://herzberg.ca.sandia.gov/jess/◦http://www.ghg.net/clips/CLIPS.html

26

Regras RAL/C++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éOpusRegras NéOpusToda 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éOpusNé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

nomeidade

timePreferido(): TimetimePreferifo(t : Time)

time

Time

nome

nome(): Stringnome(n : String)

NéOpusNéOpuswww-poleia.lip6.fr/~fdp/www-poleia.lip6.fr/~fdp/NeOpus.htmlNeOpus.htmlOutras 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 Regras JESS (CLIPS para Java)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 JEOPS Java Embedded Object Java Embedded Object Production SystemProduction System

Made in Cin (1997/2-2000/1)

http://www.di.ufpe.br/~jeops/http://sourceforge.net/projects/jeops/

32

JEOPS - PrincípiosJEOPS - 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 - ArquiteturaJEOPS - Arquitetura

34

Geraentradas

Agente

Base deConhecimentos

Base deObjetos

Rete

Base Internade Regras

Conjunto de Conflito

Consulta

JoinNodeDecls 1 a 2

FilterNodeDecl 1

ClassFilterDecl 1

FilterNodeDecl 2

ClassFilterDecl 2

JoinNodeDecls 1 a 3

FilterNodeDecl 3

ClassFilterDecl 3

FinalNodeRegra n

JoinNodeDecl 1

JEOPS

flushassert run objects

-- - - ------ - - ----- - - - ----- - - ------ - - --

Knowledge Base

Assert = insere objetos na base de objetosObjects = recupera objetos da base de objetosFlush = limpa base de fatos

Regras JEOPSRegras JEOPS Rule ::= "rule" "{" <Rule Body> "}"

Rule Body ::= <Declarations> <Local Declarations>? <Conditions> <Actions>

Declarations ::= "declarations" (<class name> <ident> ("," <ident>)* )*

Local Declarations ::= "localdecl" (<class name> <ident> "=" <expression>)*

Conditions ::= "conditions" (<expression>)*

Actions ::= (Action)+

Action ::= "assert" "(" <expression> ")" | "retract" "(" <expression> ")" | "modified" "(" <expression> ")" | <block>

35

JEOPS - Exemplo de JEOPS - Exemplo de UtilizaçãoUtilização

Definição das classes◦Jogador, Time, Partida, ...

36

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 JEOPS - Exemplo de UtilizaçãoUtilizaçã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 JEOPS - Exemplo de UtilizaçãoUtilizaçã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 JEOPS - Outras CaracterísticasCaracterísticasPré-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 JEOPS - Outras CaracterísticasCaracterísticasResolução de conflitos

◦Mecanismo flexível de definição de políticas

Classes◦LRUConflictSet ◦MRUConflictSet ◦NaturalConflictSet ◦OneShotConflictSet ◦PriorityConflictSet

40

DroolsDroolsFaz parte do Jboss, um servidor de

aplicação open-source completamente escrito em Java

Segue o padrão JSR-94 de rule enginesProvê 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 ExpertDrools ExpertO Drools Expert é a engine de regras

componente da plataforma DroolsBaseado no algoritmo RETETotalmente 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 Exemplo no domínio dos veículosveí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 No Drools: Regra AutomóvelAutomó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:Encadeamento progressivo:Exemplo no domínio dos Exemplo no domínio dos veículosveículosFatos 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 No Drools: Regra AutomóvelAutomó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 Passos para o desenvolvimento de desenvolvimento de aplicaçõesaplicações

1. Definir as classes◦Atributos e métodos

2. Definir as regras◦Interação entre os objetos da base

3. Voltar ao passo 14. Escolher estratégia de resolução

de conflito 5. Deixar a base de conhecimentos

trabalhar...

47

Considerações Finais sobre a Considerações Finais sobre a Integração Objetos/Regras Integração Objetos/RegrasVantagens

◦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 Considerações Finais sobre a Integração Objetos/Regras Integração Objetos/RegrasDesvantagem: 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 Agentes x Base de Conhecimento?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 Considerações Finais sobre a Integração Objetos/Regras Integração Objetos/RegrasDesvantagem: modificação

◦Detecção da modificação de objetos devido ao encapsulamento

◦Modificação direta e transitiva....

51

ReferênciasReferê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 2000. 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