Programao de Agentes em uma Linguagem Orientada a
- Slides: 58
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 1
Exemplos Atuais de Aplicações Complexas n Recuperação de Informação na Internet • Informação desorganizada e enorme n Comércio Eletrônico • Vários sites, produtos, preços, prazos, etc. n Jogos Eletrônicos • Realismo e oponentes competitivos 2
Pontos em comum n Aplicações 3 M • Muito grande (muitas linhas de código) • Muita gente • Muitos e variados serviços (componentes) n 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 n Serviços não-IA • BD, GUI, WWW, Mobilidade, . . . 3
Consequentemente, é preciso. . . n Engenharia de Software • Metodologia, gerência e qualidade de software n Material humano qualificado • Cada vez mais escasso n 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 agentes? n “Linguagens de IA” • Orientadas a agentes (ex. Agent 0, Placa, 3 APL) • 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 AIOL - Poucos componentes a (AI-Oriented reutilizar Language) Reasoning Mechanism 5
Como implementar os agentes? n 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) Host AI-Oriented Language 6
Integração Objetos / Regras de produção Por que não ter o melhor dos mundos? 7
Como integrar dedução com OO? n OO dentro de IA • ex. Obj. Log (fim dos anos 80), LIFE, . . + trata herança mais facilmente - mesmos problemas de integração com outros sistemas e de pouca reutilização AIOL Reasoning Mechanism OO Mechanisms 8
Como integrar dedução com OO? n IA e OO cooperando • ex. Jasper, Java. Log, Inter. Prolog (fim anos 90) + técnica promissora mas. . . - requer dupla habilidade de programação - pode não ser eficiente ou viável Tempo de execução AI AIOL Host Language Reasoning Mechanism 9
Como integrar dedução em OO? n IA dentro de OO • Abordagem 1: Tradução • ex. Prolog Café , j. Prolog, Minerva and Jinni • “Caixa preta” • Muito bom mas ainda requer dupla habilidade Host Language Translator AI-Oriented Language Reasoning Mechanism 10
Como integrar dedução em OO? n IA dentro de OO • Abordagem 2: Novas Agent-Oriented (Hybrid) Programming Languages • Primitivas redefinidas/extendidas!!! • ex. Jack e Agent. Java - excelentes (caixa branca) mas ainda incipientes. . Extended Host Language Knowledge Base -- - - ---- - - ----- - - 11
Como integrar dedução com OO? n IA dentro de OO • Abordagem 3: API • ex. CLIPS, NéOpus, RAL/C++ (meados anos 80) • Implementação mais usada: EOOPS • Embedded Object-Oriented Production Systems • Linguagem OO + Sistema de Produção 12
EOOPS Embedded Object-Oriented Production Systems 13
Lembrete sobre sistemas de produção n Conjunto de • Base de regras de produção • Memória de trabalho (base de fatos) • Conjunto de conflitos (das regras disparáveis) n 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
Lembrete sobre sistemas de produção Base de Regras Base de fatos Motor de Inferência unificação Pai(João, José) Pai(José, Marcos) p 1, p 2, p 3: Pai(p 1, p 2) Pai(p 2, p 3) Avo(p 1, p 3) Avo(João, Marcos) 15
Lembrete sobre sistemas de produção Base de Regras unificação Base de Fatos Conjunto de Conflito resolução de conflitos Ciclo Regra execução Novos Fatos Obs: para não ter de re-testar a cada ciclo, só testa os fatos modificados (retirados, adicionados) 16
Integração Objetos/Regras n Mudança filosófica • Fatos: string => Objetos • Predicados: string => métodos objetos • Casamento estrutural => Casamento comportamental (pertinência a classes + veracidade dos predicados) p 1, p 2, p 3: Pai(p 1, p 2) Pai(p 2, p 3) Avo(p 1, p 3) Pai(João, José) Pai(José, Marcos) Nome: Marcos Pessoa pai Nome: José Pessoa pai Nome: João Pessoa Regra Avo Para todo objeto p 1, p 2 e p 3 da classe Pessoa, SE p 1. eh. Pai(p 2); p 2. eh. Pai(p 3); ENTÃO 17
Integração Objetos/Regras em EOOPS: características n Eficiência • RETE? n Expressividade • ordem lógica (0, 0+, 1) implementada? n Encadeamentos • Progressivo e/ou regressivo? n Estratégias de Controle • Flexível? Declarativa? n Uniformidade da integração 18
Uniformidade da Integração n Aspectos • Sintático: como aparentam as regras? • Semântico: quão respeitados são os conceitos da linguagem OO? n Vantagens • Facilidade de uso • Engenharia de Software: reutilização, modularidade, extensibilidade, . . . 19
Uniformidade da Integração n 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)? 20
Integração Objetos/Regras: Algumas Propostas Sistema Ling. Progr. CLIPS C++ - - +/- - RAL/C++ +/- + + - +/- + NéOpus Smalltalk Unif. Resol. Serviços Eficiência Encad. Integr. Conflitos JESS Java - +/- - JEOPS Java + + +/- 21
Regras CLIPS n Nem todos objetos são utilizados (defclass Pessoa (is-a USER) (role concrete) (pattern-match reactive) (slot nome (create-accessor read-write)) (slot pai (create-accessor read-write))) n As regras tem sintaxe própria (lisp-like) (defrule Regra. Avo "O pai do pai de alguém é seu avô” ? a <- (object (is-a Pessoa) (nome ? nome. Avo)) ? p <- (object (is-a Pessoa) (nome ? nome. Pai) (pai ? a)) (object (is-a Pessoa) (nome ? nome. Neto) (pai ? p)) => (printout t ? nome. Avo “ é avô de ” ? nome. Neto crlf) ) 22
CLIPS n Outras caraterísticas • COOL (CLIPS Object-Oriented Language) • Foi uma linguagem utilizada bem difundida (> 5. 000 usuários) n Aplicações • medicina, multiagentes, helpdesk, aplicações aeroespaciais, etc. n Sites • http: //herzberg. ca. sandia. gov/jess/ • http: //www. ghg. net/clips/CLIPS. html 23
Regras RAL/C++ n Utiliza classes C++, se indicado class Pessoa { public: char nome[20]; Pessoa pai; . . . } wmedef Pessoa. MT: Pessoa {} n Sintaxe um pouco mais próxima à de C++ Regra. Avo { // O pai do pai de alguém é seu avô Avo (Pessoa. MT nome: : Nome. Avo) Pai (Pessoa. MT nome: : Nome. Pai pai==Avo) Neto (Pessoa. MT nome: : nome. Neto pai==Pai) --> printf(“%s é avô de %sn”, Nome. Avo, Nome. Neto); ) 24
Regras NéOpus n Toda classe Smalltalk Object subclass: #Pessoa instance. Variable. Names: ‘nome pai’! n Regras com sintaxe de Smalltalk Regra. Avo “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. ! 25
NéOpus n Vira. Casaca | Pessoa p| (p time. Preferido) nome = “Santa Cruz”. Actions | Time bom | bom : = Time new. Pessoa bom nome: “Sport”. nome p time. Preferido: bom. idade P modified. time. Preferido(): Time time. Preferifo(t : Time) time Time nome(): String nome(n : String) 26
NéOpus www-poleia. lip 6. fr/~fdp/Ne. Opus. html n Outras características • Bases de regra são representadas por classes abstratas (herança!) • Controle declarativo (via Metabase) n Aplicações • controle de aparelhos respiratórios, prova de teoremas, transformação de modelo de dados, análise de harmônicas, Actalk, . . . n Infelizmente. . . • Small. Talk dançou! 27
Regras JESS (CLIPS para Java) n Pode usar classes Java, com restrições class Pessoa { private String nome; private Pessoa pai; . . . } (defclass Pessoa) n Regras com sintaxe própria (lisp-like) (defrule Regra. Avo "O pai do pai de alguém é seu avô” ? a <- (Pessoa (nome ? nome. Avo)) ? p <- (Pessoa (nome ? nome. Pai) (pai ? a)) ? n <- (Pessoa (nome ? nome. Neto) (pai ? p)) => (printout t ? nome. Avo “ é avô de ” ? nome. Neto crlf) ) 28
JEOPS Java Embedded Object Production System Made in Cin (1997/2 -2000/1) http: //www. di. ufpe. br/~jeops/ http: //sourceforge. net/projects/jeops/ 29
JEOPS - Princípios n Java • 1001 serviços n Uniformidade total de integração • Reutilização de componentes • Engenharia de Software n Facilidade de uso • Fachada única de acesso 30
JEOPS - Arquitetura Agente assert run objects flush JEOPS Rete Knowledge Base -- - - ---- - - -- Gera entradas Conjunto de Conflito Consulta Base Interna de Regras Base de Objetos Base de Conhecimentos Assert = insere objetos na base de objetos Objects = recupera objetos da base de objetos Flush = limpa base de fatos 31
JEOPS Compilation. Environment Rule Base JEOPS Rule Base (. rules) Rule Pre-Compiler (. java) Esquema de Compilação • Mais simples de implentar • Mais rápido de executar JEOPS Engine Application JAVA (. java) Compiler Byte. Codes (. class) JAVA JEOPS Runtime. Environment JEOPS Inference Engine 32
Regras JEOPS n Rule : : = "rule" "{" <Rule Body> "}" n Rule Body : : = <Declarations> <Local Declarations>? <Conditions> <Actions> n Declarations : : = "declarations" (<class name> <ident> (", " <ident>)* )* n Local Declarations : : = "localdecl" (<class name> <ident> "=" <expression>)* n Conditions : : = "conditions" (<expression>)* n Actions : : = (Action)+ n Action : : = "assert" "(" <expression> ")" | "retract" "(" <expression> ")" | "modified" "(" <expression> ")" | <block> 33
JEOPS - Exemplo de Utilização n Definição das classes • Jogador, Time, Partida, . . . class Jogador { private Time time; private int habilidade; . . . } class Partida { private int etapa; private int tempo; . . . } class Time { private Jogador[] jogs; . . . } class Goleiro extends Jogador {. . . } class Atacante extends Jogador {. . . } class Meia extends Jogador {. . . } 34
JEOPS - Exemplo de Utilização n Criação das regras rule Retranca { declarations Partida p; Jogador a; localdecl Time meu. Time = a. get. Time(); conditions p. get. Etapa() == 2; // Estamos no segundo tempo, . . . p. get. Placar(meu. Time) >= p. get. Placar. Adversario(meu. Time); meu. Time. get. Categoria() < //. . . e eu sou ruim p. get. Time. Adversario(meu. Time). get. Categoria(); actions a. va. Para. Defesa(); // Então bola pro mato. . . modified(a); } 35
JEOPS - Exemplo de Utilização n Criação dos objetos Regras. Futebol base = new Regras. Futebol(); 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)); n Execução do motor de inferência base. run(); 36
JEOPS - Outras Características n Pré-compilação de regras • Regras convertidas em classes Java • comando: • java jeops. compiler. Main nome_do_arquivo. rules n Rete • Algoritmo eficiente de unificação n Aplicações • Administração de rede, Jogos interativos (Net. Maze, Enigmas, Guararapes), Recuperação de Informação, Geração de variações fonéticas 37
JEOPS - Outras Características n Resolução de conflitos • Mecanismo flexível de definição de políticas n Classes • • • LRUConflict. Set MRUConflict. Set Natural. Conflict. Set One. Shot. Conflict. Set Priority. Conflict. Set 38
Agentes x Base de Conhecimento? n 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”) n 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} 39
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. Deixar a base de conhecimentos trabalhar. . . 5. Escolher estratégia de resolução de conflito 40
Estudo de Caso com o JEOPS: Definindo estratégias de combate 41
JEOPS - Estudo de Caso n 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 42
JEOPS - Estudo de Caso n Pensando nas classes. . . Jogador - nome: String - pais: String Cidade - nome: String - dono: Jogador - local: Localizacao Unid. Combate - nome: String - dono: Jogador - movim: int - local: Localizacao - linha: int - coluna: int dist(l: Localizacao): int ataca(e: Unid. Combate) anda(l: Localizacao) 43
JEOPS - Estudo de Caso n Pensando nas regras. . . rule defende. Cidade { // Se houver algum inimigo por perto, declarations // é melhor atacá-lo primeiro Jogador eu; Cidade cid; Unid. Combate exerc. Adv; . . . Mas eu preciso usar o meu melhor soldado para atacar o inimigo!!! - Quem é este soldado? 44
JEOPS - Estudo de Caso n Jogador - nome: String - pais: String Repensando nas classes. . . Cidade - nome: String - dono: Jogador - local: Localizacao melhor. Unidade(): Unid. Combate - nome: String - dono: Jogador - movim: int - local: Localizacao - linha: int - coluna: int dist(l: Localizacao): int ataca(e: Unid. Combate) anda(l: Localizacao) 45
JEOPS - Estudo de Caso n Repensando nas regras. . . rule defende. Cidade { // Se houver algum inimigo por perto, declarations // é melhor atacá-lo primeiro Jogador eu; Cidade cid; Unid. Combate exerc. Adv; preconditions eu. get. Nome(). equals(“Carlos”); cid. melhor. Unidade() != null; // Ou eu estaria perdido! cid. get. Dono() == eu; exerc. Adv. get. Dono() != eu; // Ele realmente é meu adversário? cid. get. Local(). dist(exerc. Adv. get. Local()) <= exerc. Adv. get. Movim(); actions cid. melhor. Unidade(). ataca(exerc. Adv); } 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. . . 46
JEOPS - Estudo de Caso n Repensando nas classes. . . Jogador - nome: String - pais: String em. Paz(j: Jogador): bool Cidade - nome: String - dono: Jogador - local: Localizacao Unid. Combate - nome: String - dono: Jogador - movim: int - local: Localizacao melhor. Unidade(): Unid. Combate ataca(e: Unid. Combate) pode. Ser. Alcançada anda(l: Localizacao) (u: Unid. Combate): boolean Localizacao - linha: int - coluna: int dist(l: Localizacao): int 47
JEOPS - Estudo de Caso n Repensando nas regras. . . rule defende. Cidade { // Se houver algum inimigo por perto, declarations // é melhor atacá-lo primeiro Jogador eu; Cidade cid; Unid. Combate exerc. Adv; preconditions eu. get. Nome(). equals(“Carlos”); cid. melhor. Unidade() != null; // Ou eu estaria perdido! cid. get. Dono() == eu; exerc. Adv. get. Dono() != eu; // Ele realmente é meu adversário? cid. pode. Ser. Alcançada(exerc. Adv); !eu. em. Paz(exerc. Adv. get. Dono()); actions cid. melhor. Unidade(). ataca(exerc. Adv); } 48
JEOPS - Estudo de Caso n E se a cidade estiver desprotegida? • Mais uma regra para tratar deste caso! rule defende. Cidade 2 { declarations Jogador eu; Cidade cid; Unid. Combate exerc. Adv, meu. Exerc; preconditions eu. get. Nome(). equals(“Carlos”); cid. melhor. Unidade() == null; // Problemas a vista!!! cid. get. Dono() == eu; meu. Exerc. get. Dono() == eu; exerc. Adv. get. Dono() != eu; // Ele realmente é meu adversário? cid. pode. Ser. Alcançada(exerc. Adv); cid. pode. Ser. Alcançada(meu. Exerc); actions meu. Exerc. anda(cid. get. Local()); // Corra para proteger a cidade! } 49
JEOPS - Estudo de Caso n Já sei me defender. . . quero agora ampliar meus domínios. . . rule ataca. Cidade { // Se eu estiver perto de uma cidade inimiga, declarations // devo atacá-la!!! Jogador eu; Cidade cid; Unid. Combate meu. Exerc; preconditions eu. get. Nome(). equals(“Carlos”); cid. get. Dono() != eu; meu. Exerc. get. Dono() == eu; meu. Exerc. get. Ataque() >= 3; // Não vou atacar com qualquer um cid. pode. Ser. Alcançada(meu. Exerc); !eu. em. Paz(cid. get. Dono()); actions meu. Exerc. ataca(cid. get. Local()); } 50
JEOPS - Estudo de Caso n Repensando nas classes. . . Jogador - nome: String - pais: String em. Paz(j: Jogador): bool Cidade Unid. Combate - nome: String - dono: Jogador - local: Localizacao - nome: String - dono: Jogador - movim: int - local: Localizacao melhor. Unidade(): Unid. Combate - ataque: int - defesa: int Localizacao - linha: int - coluna: int dist(l: Localizacao): int ataca(e: Unid. Combate) anda(l: Localizacao) 51
JEOPS - Estudo de Caso n Ou ainda eu posso criar uma nova cidade. . . rule cria. Cidade { A decisão de criar uma cidade declarations pode requerer uma base de Jogador eu; conhecimento à parte Settler meu. Exerc; preconditions eu. get. Nome(). equals(“Carlos”); meu. Exerc. get. Dono() == eu; meu. Exerc. get. Local(). ha. Oceano. Por. Perto(); meu. Exerc. get. Local(). ha. Comida. Por. Perto(); !meu. Exerc. get. Local(). ha. Cidade. Por. Perto(); actions Cidade nova = new Cidade(eu); retract(meu. Exerc); assert(nova); } 52
JEOPS - Estudo de Caso n Repensando nas classes. . . Localizacao - linha: int - coluna: int dist(l: Localizacao): int ha. Comida. Perto() : boolean ha. Cidade. Perto() : boolean ha. Oceano. Perto() : boolean 53
JEOPS - Estudo de Caso n Colocando tudo para funcionar. . . Civ 2. java: public static void main(String[] args) { Knowledge. Base kb = new Knowledge. Base(“regrasciv. rules”); Jogador eu; kb. insert(eu = new Jogador(“Carlos”, “Brasil”)); kb. insert(new Settler(eu, Localizacao. get. Random())); . . . kb. run(); } 54
Considerações Finais sobre a Integração Objetos/Regras n Vantagens • Reutilização, modularidade, legibilidade, extensibilidade, . . . • Separação clara entre ontologia e regras (IA) • Facilidade de aprendizado (disponibilidade de gente) 55
Considerações Finais sobre a Integração Objetos/Regras n 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? 56
Considerações Finais sobre a Integração Objetos/Regras n Desvantagem: modificação • Detecção da modificação de objetos devido ao encapsulamento • Modificação direta e transitiva. . 57
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 objectoriented 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 J 2 ME-based Inference Engine in Handheld Devices: The KEOPS Study Case. In Proceedings of 1 st Workshop on Ubiquitous Agents on Embedded, Wearable, and Mobile Devices. In AAMAS’ 02, Bologna. 58
- Apreciação e réplica 7 ano
- Introduccion ala programacion orientada a objetos
- Liderança orientada para tarefas
- Hcop
- Flujos y archivos en programacion orientada a objetos
- Sobrecarga de operadores
- Distribución orientada al proceso
- Caracteristicas del lenguaje
- Programación orientada a objetos ventajas y desventajas
- Modelos alternativos de evaluación
- Base de datos orientada a objetos
- Programacion funcional vs orientada a objetos
- Agentes honoríficos
- Agentes do intemperismo
- Agentes depresores de la actividad de agua
- Agentes de socialización
- Jarabe magistral
- Quienes son los agentes superavitarios
- Agentes quimicos
- Agente reflejo simple
- Agentes da romanização
- Agentes cognitivos
- Tabla de comisiones agentes de seguros
- Agentes de socialización
- Bacteriolitico
- Cuales son los agentes economicos
- El suelo como agente generador del suelo
- Tipos de mutaciones genicas
- Calor seco flameado
- Agentes surfactantes
- Mutagenos quimicos
- 3 agentes economicos
- Agentes modeladores do relevo
- Agente
- Agentes economicos
- Tautomeria genetica
- Ana lilia laureano cruces
- Um arquiteto decidiu construir uma maquete
- Um escoteiro usa uma lupa
- Era uma estrela tão alta era uma estrela tão fria
- Uma uma
- Era uma vez uma ilha onde moravam todos os sentimentos
- Enem uma empresa de transporte precisa efetuar
- O capim elefante é uma designação
- Atitude é uma pequena coisa que faz uma grande diferença
- Uma onda possui uma frequencia angular de 110 rad/s
- Densa
- Abo
- Enem 2011 uma equipe de cientistas
- Uma bola sera retirada de uma sacola contendo 5
- Era uma vez uma sementinha
- Era uma vez uma menina chamada
- Vou te contar uma história de uma jovem chamada maria
- Raiz fasciculada e aprumada
- Concava e convexa
- Uma flecha lançada uma palavra dita
- O numero de fichas de certa urna
- Era uma vez uma ilha onde moravam todos os sentimentos
- Uma galinha