1 Programação de Agentes em uma Linguagem Orientada a Objetos: a Solução EOOPS Abordagens de...
-
Upload
lidia-martinho-affonso -
Category
Documents
-
view
219 -
download
0
Transcript of 1 Programação de Agentes em uma Linguagem Orientada a Objetos: a Solução EOOPS Abordagens de...
![Page 1: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/1.jpg)
1
Programação de Agentes em uma Linguagem Orientada a Objetos:
a Solução EOOPS
Abordagens de programaçãoEOOPS: Integração objetos-regras de produção
JEOPS
![Page 2: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/2.jpg)
2
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
![Page 3: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/3.jpg)
3
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, ...
![Page 4: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/4.jpg)
4
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?
![Page 5: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/5.jpg)
5
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?
AIOL (AI-OrientedLanguage)
ReasoningMechanism
![Page 6: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/6.jpg)
6
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)
AI-Oriented Language
HostLanguage
![Page 7: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/7.jpg)
7
Integração Objetos / Regras de produção
Por que não ter o melhor dos mundos?
![Page 8: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/8.jpg)
8
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
AIOL
ReasoningMechanism
OO Mechanisms
![Page 9: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/9.jpg)
9
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
Host Language
Host Language
AI AIOL
ReasoningMechanism
Tempo de execução
![Page 10: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/10.jpg)
10
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
Host Language AI-Oriented
LanguageAI-Oriented Language
ReasoningMechanism
Translator
![Page 11: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/11.jpg)
11
Extended HostLanguage -- - - ----
-- - - ----- - - - - ---- - - ------ - - - -
Knowledge Base
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....
![Page 12: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/12.jpg)
12
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
HostLanguage
HostLanguage
ReasoningMechanism
-- - - ------ - - ----- - - - - ---- - - ------ - - - -
Knowledge Base
![Page 13: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/13.jpg)
13
EOOPSEmbedded Object-Oriented Production Systems
![Page 14: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/14.jpg)
14
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
![Page 15: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/15.jpg)
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
![Page 16: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/16.jpg)
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
![Page 17: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/17.jpg)
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
![Page 18: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/18.jpg)
18
Lembrete sobre sistemas de produção
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: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/19.jpg)
19
Lembrete sobre sistemas de produção
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: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/20.jpg)
Mudança filosófica • Fatos: string => Objetos• Predicados: string => métodos dos objetos• Casamento estrutural => Casamento comportamental
(pertinência a classes + veracidade dos predicados)
Integração Objetos/Regras
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: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/21.jpg)
21
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
![Page 22: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/22.jpg)
22
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, ...
Uniformidade da Integração
![Page 23: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/23.jpg)
23
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)?
![Page 24: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/24.jpg)
24
Integração Objetos/Regras:Algumas Propostas
CLIPS
RAL/C++
NéOpus
JESS
JEOPS
Sistema Ling.Progr.
C++
C++
Smalltalk
Java
Java
Unif.Integr.
-
+/-
+
-
+
Serviços
-
+
-
+/-
+
Eficiência
+/-
+
+/-
+/-
+/-
Encad. Resol.Conflitos
-
-
+
-
+/-
![Page 25: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/25.jpg)
25
Regras CLIPS
Nem todos objetos são utilizados
As regras tem sintaxe própria (lisp-like)
(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: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/26.jpg)
26
CLIPS
Outras 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
![Page 27: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/27.jpg)
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);)
Regras RAL/C++ Utiliza classes C++, se indicado
Sintaxe um pouco mais próxima à de C++
class Pessoa { public: char nome[20]; Pessoa pai; ...}wmedef PessoaMT:Pessoa {}
![Page 28: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/28.jpg)
28
Regras NéOpus
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.!
Toda classe Smalltalk
Regras com sintaxe de Smalltalk
Object subclass: #Pessoa instanceVariableNames: ‘nome pai’!
![Page 29: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/29.jpg)
29
ViraCasaca | Pessoa p| (p timePreferido) nome = “Santa Cruz”.Actions | Time bom | bom := Time new. bom nome: “Sport”. p timePreferido: bom. P modified.
NéOpus
Pessoanomeidade
timePreferido(): TimetimePreferifo(t : Time)
time
Timenome
nome(): Stringnome(n : String)
![Page 30: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/30.jpg)
30
NéOpuswww-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!
![Page 31: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/31.jpg)
31
Pode usar classes Java, com restrições
Regras com sintaxe própria (lisp-like)
Regras JESS (CLIPS para Java)
(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: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/32.jpg)
32
JEOPS Java Embedded Object Production System
Made in Cin (1997/2-2000/1)http://www.di.ufpe.br/~jeops/http://sourceforge.net/projects/jeops/
![Page 33: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/33.jpg)
33
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
![Page 34: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/34.jpg)
34
JEOPS - Arquitetura
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: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/35.jpg)
35
Esquemade Compilação
JEOPSCompilation Environment
JEOPSCompilation Environment
JEOPSEngine
JEOPSRule Pre -Compiler
Rule Base(.rules)
Rule Base(.java)
Application(.java)
JAVACompiler
ByteCodes(.class)
JEOPSRuntime Environment
JEOPSRuntime Environment
JEOPSInference Engine
JEOPSCompilation Environment
JEOPSCompilation Environment
JEOPSEngine
JEOPSRule Pre -Compiler
Rule Base(.rules)
Rule Base(.java)
Application(.java)
JAVACompiler
ByteCodes(.class)
JEOPSRuntime Environment
JAVARuntime Environment
JEOPSInference Engine
• Mais simples de implementar
• Mais rápido de executar
![Page 36: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/36.jpg)
36
Regras 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>
![Page 37: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/37.jpg)
37
Definição das classes• Jogador, Time, Partida, ...
JEOPS - Exemplo de Utilização
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 38: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/38.jpg)
38
Criação das regras
JEOPS - Exemplo de Utilização
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 39: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/39.jpg)
39
Criação dos objetos
Execução do motor de inferência
JEOPS - Exemplo de Utilização
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 40: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/40.jpg)
40
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
![Page 41: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/41.jpg)
41
JEOPS - Outras Características
Resolução de conflitos• Mecanismo flexível de definição de políticas
Classes• LRUConflictSet • MRUConflictSet • NaturalConflictSet • OneShotConflictSet • PriorityConflictSet
![Page 42: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/42.jpg)
42
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...
![Page 43: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/43.jpg)
43
Estudo de Caso com o JEOPS:Definindo estratégias de combate
![Page 44: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/44.jpg)
44
JEOPS - Estudo de Caso
O ambiente:• Vários jogadores, cada um
com sua civilização• Cada civilização é composta
por várias cidades, localizadas em diversos pontos do mapa
• Cada civilização tem um exército que pode ser usado para conquistar novas cidades ou defender as suas próprias cidades
![Page 45: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/45.jpg)
JEOPS - Estudo de Caso
Pensando nas classes...
Jogador
- nome: String- pais: String
Cidade
- nome: String- dono: Jogador- local: Localizacao
UnidCombate
- nome: String- dono: Jogador- movim: int- local: Localizacaoataca(e: UnidCombate)anda(l: Localizacao)
Localizacao
- linha: int- coluna: int
dist(l:Localizacao): int
![Page 46: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/46.jpg)
JEOPS - Estudo de Caso
Pensando nas regras...
rule defendeCidade { // Se houver algum inimigo por perto da declarations //minha cidade, é melhor atacá-lo primeiro Jogador eu; Cidade cid; UnidCombate exercAdv; .....
Mas eu preciso usar o meu melhor soldado para atacar o inimigo!!! - Quem é este soldado?
![Page 47: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/47.jpg)
Jogador
- nome: String- pais: String
Cidade
- nome: String- dono: Jogador- local: Localizacao
UnidCombate
- nome: String- dono: Jogador- movim: int- local: Localizacaoataca(e:UnidCombate)anda(l:Localizacao)
Localizacao
- linha: int- coluna: int
dist(l:Localizacao): intmelhorUnidade(): UnidCombate
JEOPS - Estudo de Caso
Repensando nas classes...
![Page 48: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/48.jpg)
rule defendeCidade { // Se houver algum inimigo por perto, declarations // é melhor atacá-lo primeiro Jogador eu; Cidade cid; UnidCombate exercAdv; preconditions eu.getNome().equals(“Carlos”); cid.melhorUnidade() != null; // Ou eu estaria perdido! cid.getDono() == eu; exercAdv.getDono() != eu; // Ele realmente é meu adversário? cid.getLocal().dist(exercAdv.getLocal()) <= exercAdv.getMovim(); actions cid.melhorUnidade().ataca(exercAdv);}
Mas se eu estiver em tratado de paz com o meu adversário? Devo atacá-lo?Além disso, vamos tornar o código mais legível...
JEOPS - Estudo de Caso Repensando nas regras...
![Page 49: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/49.jpg)
Jogador
- nome: String- pais: String
emPaz(j:Jogador):bool
Cidade
- nome: String- dono: Jogador- local: Localizacao
UnidCombate
- nome: String- dono: Jogador- movim: int- local: Localizacaoataca(e:UnidCombate)anda(l:Localizacao)
Localizacao
- linha: int- coluna: int
dist(l:Localizacao): intmelhorUnidade(): UnidCombatepodeSerAlcançada (u:UnidCombate): boolean
JEOPS - Estudo de Caso
Repensando nas classes...
![Page 50: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/50.jpg)
rule defendeCidade { // Se houver algum inimigo por perto, declarations // é melhor atacá-lo primeiro Jogador eu; Cidade cid; UnidCombate exercAdv; preconditions eu.getNome().equals(“Carlos”); cid.melhorUnidade() != null; // Ou eu estaria perdido! cid.getDono() == eu; exercAdv.getDono() != eu; // Ele realmente é meu adversário? cid.podeSerAlcançada(exercAdv); !eu.emPaz(exercAdv.getDono()); actions cid.melhorUnidade().ataca(exercAdv);}
JEOPS - Estudo de Caso
Repensando nas regras...
![Page 51: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/51.jpg)
JEOPS - Estudo de Caso E se a cidade estiver desprotegida?
• Mais uma regra para tratar deste caso!
rule defendeCidade2 { declarations Jogador eu; Cidade cid; UnidCombate exercAdv, meuExerc; preconditions eu.getNome().equals(“Carlos”); cid.melhorUnidade() == null; // Problemas a vista!!! cid.getDono() == eu; meuExerc.getDono() == eu; exercAdv.getDono() != eu; // Ele realmente é meu adversário? cid.podeSerAlcançada(exercAdv); cid.podeSerAlcançada(meuExerc); actions meuExerc.anda(cid.getLocal()); // Corra para proteger a cidade!}
![Page 52: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/52.jpg)
JEOPS - Estudo de Caso
Já sei me defender... quero agora ampliar meus domínios...
rule atacaCidade { // Se eu estiver perto de uma cidade inimiga, declarations // devo atacá-la!!! Jogador eu; Cidade cid; UnidCombate meuExerc; preconditions eu.getNome().equals(“Carlos”); cid.getDono() != eu; meuExerc.getDono() == eu; meuExerc.getAtaque() >= 3; // Não vou atacar com qualquer um cid.podeSerAlcançada(meuExerc); !eu.emPaz(cid.getDono()); actions meuExerc.ataca(cid.getLocal());}
![Page 53: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/53.jpg)
Jogador
- nome: String- pais: String
emPaz(j:Jogador):bool
Cidade
- nome: String- dono: Jogador- local: Localizacao
UnidCombate
- nome: String- dono: Jogador- movim: int- local: Localizacao- ataque: int- defesa: intataca(e:UnidCombate)anda(l:Localizacao)
Localizacao
- linha: int- coluna: int
dist(l:Localizacao): intmelhorUnidade(): UnidCombate
JEOPS - Estudo de Caso
Repensando nas classes...
![Page 54: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/54.jpg)
JEOPS - Estudo de Caso
Ou ainda eu posso criar uma nova cidade...rule criaCidade { declarations Jogador eu; Settler meuExerc; preconditions eu.getNome().equals(“Carlos”); meuExerc.getDono() == eu; meuExerc.getLocal().haOceanoPorPerto(); meuExerc.getLocal().haComidaPorPerto(); !meuExerc.getLocal().haCidadePorPerto(); actions Cidade nova = new Cidade(eu); retract(meuExerc); assert(nova); }
A decisão de criar uma cidade pode requerer uma base de conhecimento à parte
![Page 55: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/55.jpg)
Localizacao
- linha: int- coluna: int
dist(l:Localizacao): inthaComidaPerto() : booleanhaCidadePerto() : booleanhaOceanoPerto() : boolean
JEOPS - Estudo de Caso
Repensando nas classes...
![Page 56: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/56.jpg)
JEOPS - Estudo de Caso
Colocando tudo para funcionar...
Civ2.java:
public static void main(String[] args) {
KnowledgeBase kb = new KnowledgeBase(“regrasciv.rules”);
Jogador eu;
kb.insert(eu = new Jogador(“Carlos”, “Brasil”));
kb.insert(new Settler(eu, Localizacao.getRandom()));
...
kb.run();
}
![Page 57: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/57.jpg)
57
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)
![Page 58: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/58.jpg)
58
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?
Considerações Finais sobre a Integração Objetos/Regras
![Page 59: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/59.jpg)
59
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}
![Page 60: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/60.jpg)
60
Desvantagem: modificação • Detecção da modificação de objetos devido ao
encapsulamento• Modificação direta e transitiva....
Considerações Finais sobre a Integração Objetos/Regras
![Page 61: 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.](https://reader035.fdocumentos.tips/reader035/viewer/2022062411/570638541a28abb8238fa73e/html5/thumbnails/61.jpg)
61
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 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.