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
Top Related