representando conhecimento em uma linguagem orientada a objetos: a solução eoops
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 PresentationTRANSCRIPT
![Page 1: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/1.jpg)
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
![Page 2: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/2.jpg)
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
![Page 3: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/3.jpg)
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
![Page 4: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/4.jpg)
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
![Page 5: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/5.jpg)
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
![Page 6: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/6.jpg)
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
![Page 7: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/7.jpg)
Integração Objetos / Regras de Integração Objetos / Regras de produçãoprodução
Por que não ter o melhor dos mundos?
7
![Page 8: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/8.jpg)
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
![Page 9: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/9.jpg)
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
![Page 10: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/10.jpg)
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
![Page 11: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/11.jpg)
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
![Page 12: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/12.jpg)
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
![Page 13: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/13.jpg)
EOOPSEOOPSEmbedded Object-Oriented Production SystemsEmbedded Object-Oriented Production Systems
13
![Page 14: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/14.jpg)
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
![Page 15: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/15.jpg)
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
![Page 16: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/16.jpg)
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
![Page 17: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/17.jpg)
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
![Page 18: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/18.jpg)
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
![Page 19: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/19.jpg)
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)
![Page 20: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/20.jpg)
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
![Page 21: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/21.jpg)
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
![Page 22: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/22.jpg)
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
![Page 23: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/23.jpg)
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
![Page 24: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/24.jpg)
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
-
-
+
-
+/-
![Page 25: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/25.jpg)
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))
![Page 26: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/26.jpg)
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
![Page 27: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/27.jpg)
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 {}
![Page 28: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/28.jpg)
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’!
![Page 29: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/29.jpg)
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)
![Page 30: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/30.jpg)
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
![Page 31: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/31.jpg)
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)
![Page 32: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/32.jpg)
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
![Page 33: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/33.jpg)
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
![Page 34: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/34.jpg)
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
![Page 35: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/35.jpg)
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
![Page 36: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/36.jpg)
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 {
...}
![Page 37: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/37.jpg)
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);
}
![Page 38: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/38.jpg)
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();
![Page 39: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/39.jpg)
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
![Page 40: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/40.jpg)
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
![Page 41: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/41.jpg)
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
![Page 42: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/42.jpg)
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;
![Page 43: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/43.jpg)
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
![Page 44: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/44.jpg)
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
![Page 45: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/45.jpg)
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
![Page 46: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/46.jpg)
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
![Page 47: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/47.jpg)
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
![Page 48: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/48.jpg)
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
![Page 49: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/49.jpg)
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
![Page 50: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/50.jpg)
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
![Page 51: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/51.jpg)
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
![Page 52: Representando Conhecimento em uma Linguagem Orientada a Objetos: a Solução EOOPS](https://reader035.vdocuments.mx/reader035/viewer/2022062500/56814f80550346895dbd32f6/html5/thumbnails/52.jpg)
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