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

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

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

Page 1: 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

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

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

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

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

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

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

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

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

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

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

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

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

EOOPSEOOPSEmbedded Object-Oriented Production SystemsEmbedded Object-Oriented Production Systems

13

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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