Programação Orientada a Agentes Franklin Souza Ramalho ([email protected]) Roteiro AOP definição ambientes linguagens Comunicação entre Agentes Conceitos Básicos KSE Mundo do Wumpus Questões Referências Características Programas são formados por vários agentes que compartilham informações por meios de mensagens Características de Agentes: Autonomia e adaptabilidade Cooperação (Comunicação) Estados Mentais (Crenças, capacidades, escolhas) Comparação entre OOP e AOP AOP pode ser visto como uma especialização do OOP Comparações: Unidade Basica Estados Computação Tipos Mensagens Restrições OOP AOP Objetos Objetos Mensagens Não-Estruturado Nenhuma Agentes Estados Mentais Mensagens e outros Atos de Fala Honestidade, consistência,etc Aplicações de AOP Agentes na Internet Assistentes pessoais Negociadores Jogos Simulação de sistemas Ambientes de Programação de Agentes Objetivos: Duas Visões Definição dos Estados Mentais Primitivas de Comunicação Fornecer linguagens especializadas para agentes Auxiliar linguagens pré-existentes para programação de agentes Exemplos: Aglets, Agent0, etc. Linguagens de Programação de Agentes Representam: Ações do Agente Estados Mentais Tempo Oferecem primitivas de comunicação. Exemplo: Agentk Tipos de Expressões: xt Ba(x)t OBLa,b(x)t CANa(x)t Comunicações: Expressões KQML Comunicação entre Agentes Comunicação Objetivos: Troca de informações Coordenação Atos de Fala Informar Consultar Responder Requisitar algo Comprometer-se Agradecer Compartilhar Tipos de Agentes: Facilitadores Agentes simplificam a troca de informações Tarefas: Roteamento Registro de nomes Monitoramento, etc. Facilitadores Broker-one(ask(x)) Advertise(ask(X)) F Tell(X) Ask(X) Tell(X) A B Tipos de Comunicação entre Agentes Comunicação Telepática Comunicaçào com uma Linguagem Formal Comunicação Telepática Comunicação direta via interface TELL AND ASK. Ex : 1 O agente A pode comunicar a proposição P ao agente B com TELL (KBA, “P”). 2 O agente A pode consultar a base de conhecimento do agente B com um ASK (KBB, “Q”) Comunicação Telepática Comunicação com Tell and Ask Percepções Agente A Ações Percepções Agente B Ações Comunicação Telepática Desvantagens : Dados dois agentes A e B que se comunicam : A e B podem usar o mesmo simbolo com significados diferentes; A e B podem usar simbolos diferentes para devotar a mesma coisa; A e B precisam usar a mesma linguagem interna; Sabotagem Comunicação com Linguagem Formal Um agente A se comunica com um agente B através de uma linguagem externa. Comunicação com Linguagem Formal Ling. Formal Agente A Percepçôes Agente B Ações Percepçôes Ações Comunicação com Linguagem Formal Desvantagens A linguagem de representação externa traz com ela problemas de geração e análise; Falta de uma linguagem padrão; Pode ocorrer uma interpretação errada por parte de agentes em relação à mensagem de outro agente. •Vários consórcios : •Knowledge Sharing Effort (KSE) Knowledge Sharing Effort (KSE) O KSE é organizado em três grupos de trabalho : Interlingua Group - tradução. resultado : Linguagem KIF. SRKB (Shared, Reuasable Knowledge Bases) Group compartilhamento e reusabilidade. resultado : Construção de Ontologias Comuns. External Interfaces Group - comunicação SBC - SBC ou SBC - SNBC. resultado : Linguagem KQML. KIF - Knowledge Interchange Format Linguagem padrão de representação interna para comunicação entre agentes. Versão pré-fixada do cálculo de primeira ordem, com extensões para aumentar a expressividade : noções aritméticas, ex : >, < operadores lógicos, ex : and procedimentos Exemplos : (>(*(width chip1)(length chip1))(*(width chip2)(length chip2))) (interested joe ‘(salary( ?x, ?y, ?z)) KQML - Knowledge, Query and Manipulation Language KQML é uma linguagem e um conjunto de protocolos que apoiam a comunicação entre agentes de software. Principais características da linguagem : Mensagens KQML não enxergam o conteúdo das mensagens que elas transportam; Comunicação baseada em Executivas; Permite o uso de facilitadores; É dividida em três camadas : camada de comunicação, camada de conteúdo e camada de mensagem. KQML - parâmetros As principais palavras-chaves (parâmetros) das executivas KQML são as seguintes : executiva ( :sender <word> :receiver <word> :reply-with <word> :in-reply-to <word> :language <word> :ontology <word> :content <expression> ) KQML - Executivas (atos de fala) De acordo com seu significado as executivas podem ser enquadradas nas seguintes categorias : Executivas de Conversação Executivas de Intervenção Executivas de Facilitação e Rede KQML - Executivas de Conversação ask-if - S quer saber se o conteúdo de sua mensagem é verdadeiro para R; ask-all - S quer todas as instâncias de R, para as quais o conteúdo de S é verdadeiro; tell - S informa para R que seu conteúdo é verdadeiro, ou seja, que a sentença está em sua base de conhecimento; insert - S pede para R acrescentar o conteúdo da mensagem na base de conhecimento de R; advertise - S quer que R saiba que S pode e processará mensagens do tipo da que está em seu conteúdo. KQML - Executivas de Conversação Exemplo : O agente A envia a seguinte mensagem para o agente B : (advertise :sender :receiver :reply-with :language :ontology :content A B id1 KQML kqml-ontology (ask-if :sender :receiver :in-reply-to :language :ontology :content B A id1 prolog DI “Professor(X,Y)”)) KQML - Executivas de Conversação Exemplo (cont.) : O agente B pergunta então ao agente A : (ask-if :sender B :receiver A :in-reply-to id1 :reply-with id2 :language prolog :ontology DI :content “Professor(Geber,Agentes)”) KQML - Executivas de Conversação Exemplo (cont.) : O agente A responde ao agente B com a seguinte mensagem : (tell :sender B :receiver A :in-reply-to id2 :reply-with id3 :language prolog :ontology DI :content “Professor(Geber,Agentes)”) KQML - Executivas de Intervenção error - S indica a R que recebeu uma mensagem não compreendida; sorry - S diz a R que compreende sua mensagem, mas não pode prover uma resposta; Exemplo : O agente Servidor-Estoque envia a seguinte mensagem para o agente Joe : (tell :receiver Joe :reply-with id2 :in-reply-to id1 :language LProlog :ontology Estoque-IBM :content “(Computador IBM 14)”) KQML - Executivas de Intervenção Exemplo (cont.): em resposta, o agente Joe envia a seguinte mensagem para o agente Servidor-Estoque : (error :sender :receiver :in-reply-to :reply-with Joe Servidor-Estoque id2 id3) KQML - Executivas de Rede register - S anuncia para R (facilitador) sua presença e nome simbólico associado com seu endereço físico; unregister - cancela um register feito anteriormente; transport-address - S anuncia um novo endereço físico na rede; forward - S quer que R repasse a mensagem para o agente “:to”; broadcast - S pede a R para enviar a mensagem para todos agentes que R conhece; broker-one - S pede a R para achar uma resposta para a executiva do seu conteúdo. recommend-one - S pede a R para sugerir um agente que possa processar seu conteúdo; KQML - Executivas de Rede Exemplo : O facilitador recebe a seguinte mensagem : (broker-one :sender C :receiver facilitador :reply-with id3 :language KQML :ontology kqml-ontology :content (ask-all :sender C :reply-with id4 :language Prolog :ontology Campeonato Brasileiro :content “Campeao(Flamengo,Y)”)) KQML - Executivas de Rede Exemplo (cont.) : Então, o agente facilitador depois de procurar pelas mensagens “advertise”que tem sido recebidas por ele, decide enviar a seguinte mensagem para o agente A : (ask-all :sender facilitador :receiver :in-reply-to :reply-with :language :ontology :content A id1 id4 Prolog Campeonato Brasileiro “Campeao(Flamengo,Y)”)) KQML - Executivas de Rede Exemplo (cont.) : E o agente A responde com a seguinte mensagem : (tell :sender A :receiver :in-reply-to :reply-with :language :ontology :content facilitador id4 id5 Prolog Campeonato Brasileiro “Campeao(Flamengo, 1980), ... , Campeao(Flamengo, 1992)”) KQML - Executivas de Rede Exemplo (cont.) :E então, o agente facilitador envia para o agente C : (forward :from A :sender :receiver :in-reply-to :reply-with :language :ontology :content facilitador C id3 id6 KQML kqml-ontology (tell :receiver C :language Prolog :ontology C. Brasileiro :content “Campeao(Flamengo, 1980), ... , Campeao(Flamengo, 1992)”) KQML - Aplicações Tem-se usado KQML em : Aplicações de banco de dados distribuídos e/ou heterogêneos (mediadores); Vários experimentos de integração de tecnologia no laboratório de Roma da ARPA; Integração de clientes com mediadores e servidores em ambientes distribuídos; Ligações Browsres WWW com Mediadores; Jogos; KQML Desvantagens : Outras linguagens : Não trata comprometimentos, compartilhamento. Tratamento de Erros; Seguraça. FIPA Tendências : ACL - KQML + KIF agent-k projetos de engenharia concorrente, projetos inteligentes e aplicações distribuídas. Compartilhamento de objetos. O Mundo do Wumpus Com Comunicação (MWC) Objetivo : Implementar o Mundo do Wumpus com comunicação entre os agentes. O ambiente do jogo é formado por : Agente Mundo Agente Caçador Agente Wumpus Conjunto de Cavernas Agência * Arquitetura do MWC Caçadores Tell and Ask Tell and Ask Tell and Ask Base de Conhecimento dos Agentes Caçadores Arquitetura do MWC Agente Mundo Tell and Ask Base de Conhecimento do Agente Mundo Arquitetura do MWC Caçador1 Ações/Percepções Tell and Ask Tell and Ask Ações/Percepções Ações/Percepções Mundo Tell and Ask Caçador2 Caçador3 Comunicação MWC Foram abordadas : Comunicação Telepática : entre caçadores. Comunicação com Linguagem Formal : Caçador / Mundo; Wumpus / Mundo; Implementação Linguagens : Java; KQML; Ferramentas : JEPS; JATLite; •Classe Raciocínio do Caçador; •Classe Agency; Considerações sobre o MWC Classes : Agentes(nome, Msgqueue, agency ...); Caçador( flechas, start_x, start_y, x,y, dir, caminho,motor ,...); Wumpus,(pos, ...); Mundo (cavernas, wudth, height, jogadores, wumpus, ouro, ...); Agency,(agentes); Caverna (x, y, buraco, brisa, fedor, norte, sul, ...); CCaverna,(WumpusEsta, TemBuraco, Visited, Seguro, N, S, ..); RaciocínioCaçador (x, y, workingCaves, ...); Timer (agency). Agents são Threads Mundo, Caçador e Wumpus são agentes; Considerações sobre o MWC Comunicação : Agency funciona como facilitador; Dinâmica do fluxo das mensagens; Verificação de Ontologias e Conteúdos; Ex1. Agente Mundo : if(msg.ontology == CaçadorMundoComunicação){ if(msg.contents == novocaçador){... Else if (msg.contents == GO){... Else if (msg.contents ==GetGold) { ... else if(msg.ontology == WumpusMundoComunicação) ... Considerações sobre MWC Ex2 . O Agente Caçador : if(msg.ontology ==PercepcaoCacador){ ProcessaPercepcoes(msg.contents) } else if (msg.ontology == TimeSlice){ DecideMove(); ... } Considerações sobre o MWC Raciocínio do Caçador : Exemplo : ProcessaPercepcoes(msg.contents); motor.infere(x,y,briza,fedor); ... Void infere(int x, ..., boolean fedor){ SetProperties(x,y,briza,fedor); Think(); ... Void Think(){ ... If(cav.NaoTemBrisa()){ cav.ClearBuraco(this) ... } } Questões POA x POO ? Qual a diferença entre Agentes de Software e Agentes Inteligentes ? ACL resolve os problemas de comunicação entre agentes ? Referências Finin, Tim and Labrou, Yannis. A Proposal for a new KQML Specification; Finin, Tim., Labrou, Yannis and Mayfield, James. KQML as na communication language. Finin, Tim and Fritzon, Rich. KQML - A language and Protocol for Knowledge and Information Exchange. Finin, Tim and Labrou, Yannis. Semantics and Conversations for na Agent Communication Language Patil, Ramesh S., Fikes Richard E., Patel-Schneider Peter F. ., Don Mckay, Finnin, Tim., Gruber, Thomas and Neches Robert. The DARPA Knowledge Sharing Effort : Progress Report