510 likes | 633 Vues
Programação Orientada a Agentes. Franklin Souza Ramalho (fsr@di.ufpe.br). Roteiro. AOP definição ambientes linguagens Comunicação entre Agentes Conceitos Básicos KSE Mundo do Wumpus Questões Referências. Características.
E N D
Programação Orientada a Agentes Franklin Souza Ramalho (fsr@di.ufpe.br)
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 entreOOP e AOP • AOP pode ser visto como uma especialização do OOP • Comparações: OOP AOP Unidade Basica Objetos Agentes Estados Objetos Estados Mentais Computação Mensagens Mensagens e outros Tipos Mensagens Não-Estruturado Atos de Fala Restrições Nenhuma Honestidade, consistência,etc
Aplicações de AOP • Agentes na Internet • Assistentes pessoais • Negociadores • Jogos • Simulação de sistemas
Ambientes de Programaçãode Agentes • Objetivos: • Definição dos Estados Mentais • Primitivas de Comunicação • Duas Visões • 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 • 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 F Broker-one(ask(x)) Advertise(ask(X)) Ask(X) Tell(X) A Tell(X) 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 : • O agente A pode comunicar a proposição P ao agente B com TELL (KBA, “P”). • 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 Agente A Agente B Percepções Ações Percepções 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 Agente B Ações Percepçôes Ações Percepçô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 agenteAenvia a seguinte mensagem para o agente B : (advertise :sender A :receiver B :reply-with id1 :language KQML :ontology kqml-ontology :content (ask-if :sender B :receiver A :in-reply-to id1 :language prolog :ontology DI :content “Professor(X,Y)”))
KQML - Executivas de Conversação Exemplo (cont.) :O agenteB 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 Bcom 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 Joe :receiver Servidor-Estoque :in-reply-to id2 :reply-with 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 A :in-reply-to id1 :reply-with id4 :language Prolog :ontology Campeonato Brasileiro :content “Campeao(Flamengo,Y)”))
KQML - Executivas de Rede • Exemplo (cont.) : • E o agente A responde com a seguinte mensagem : (tell:sender A :receiver facilitador :in-reply-to id4 :reply-with id5 :language Prolog :ontology Campeonato Brasileiro :content “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 facilitador :receiver C :in-reply-to id3 :reply-with id6 :language KQML :ontology kqml-ontology :content (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 : • Não trata comprometimentos, compartilhamento. • Tratamento de Erros; • Seguraça. • Outras linguagens : • 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