Programação Orientada a Agentes
Programação Orientada a Agentes
Franklin Souza Ramalho Franklin Souza Ramalho ([email protected])([email protected])
RoteiroRoteiro
AOPAOP definiçãodefinição ambientesambientes linguagenslinguagens
Comunicação entre AgentesComunicação entre Agentes Conceitos BásicosConceitos Básicos KSEKSE
Mundo do WumpusMundo do Wumpus QuestõesQuestões ReferênciasReferências
CaracterísticasCaracterísticas
Programas são formados por vários agentes Programas são formados por vários agentes que compartilham informações por meios que compartilham informações por meios de mensagensde mensagens
Características de Agentes:Características de Agentes: Autonomia e adaptabilidadeAutonomia e adaptabilidade Cooperação (Comunicação)Cooperação (Comunicação) Estados Mentais (Estados Mentais (Crenças, capacidades, escolhas)Crenças, capacidades, escolhas)
Comparação entreOOP e AOPComparação entreOOP e AOP
AOP pode ser visto como uma AOP pode ser visto como uma especialização do OOPespecialização do OOP
Comparações:Comparações: OOPOOP AOPAOP
Unidade BasicaUnidade Basica ObjetosObjetos AgentesAgentes
EstadosEstados ObjetosObjetos Estados MentaisEstados Mentais
ComputaçãoComputação MensagensMensagens Mensagens e outrosMensagens e outros
Tipos MensagensTipos Mensagens Não-EstruturadoNão-Estruturado Atos de FalaAtos de Fala
RestriçõesRestrições NenhumaNenhuma Honestidade, consistência,etcHonestidade, consistência,etc
Aplicações de AOPAplicações de AOP
Agentes na InternetAgentes na Internet Assistentes pessoaisAssistentes pessoais NegociadoresNegociadores JogosJogos Simulação de sistemasSimulação de sistemas
Ambientes de Programaçãode AgentesAmbientes de Programaçãode Agentes
Objetivos:Objetivos: Definição dos Estados MentaisDefinição dos Estados Mentais Primitivas de ComunicaçãoPrimitivas de Comunicação
Duas VisõesDuas Visões Fornecer linguagens especializadas para agentesFornecer linguagens especializadas para agentes Auxiliar linguagens pré-existentes para programação de Auxiliar linguagens pré-existentes para programação de
agentesagentes
Exemplos: Aglets, Agent0, etc.Exemplos: Aglets, Agent0, etc.
Linguagens de Programação de AgentesLinguagens de Programação de Agentes
Representam:Representam: Ações do AgenteAções do Agente Estados MentaisEstados Mentais TempoTempo
Oferecem primitivas de comunicação.Oferecem primitivas de comunicação.
Exemplo: AgentkExemplo: Agentk
Tipos de Expressões:Tipos de Expressões:xxtt
BBaa(x)(x)tt
OBLOBLa,ba,b(x)(x)tt
CANCANaa(x)(x)tt
Comunicações: Expressões KQMLComunicações: Expressões KQML
Comunicação entre AgentesComunicação entre Agentes
ComunicaçãoComunicação
Objetivos:Objetivos: Troca de informaçõesTroca de informações CoordenaçãoCoordenação
Atos de FalaAtos de Fala
InformarInformar ConsultarConsultar ResponderResponder Requisitar algoRequisitar algo Comprometer-seComprometer-se AgradecerAgradecer CompartilharCompartilhar
Tipos de Agentes: FacilitadoresTipos de Agentes: Facilitadores
Agentes simplificam a troca de informaçõesAgentes simplificam a troca de informações Tarefas:Tarefas:
RoteamentoRoteamento Registro de nomesRegistro de nomes Monitoramento, etc.Monitoramento, etc.
FacilitadoresFacilitadores
AA BB
FFBroker-one(ask(x))Broker-one(ask(x)) Advertise(ask(X))Advertise(ask(X))
Ask(X)Ask(X)
Tell(X)Tell(X)
Tell(X)Tell(X)
Tipos de Comunicação entre AgentesTipos de Comunicação entre Agentes
Comunicação TelepáticaComunicação Telepática Comunicaçào com uma Linguagem FormalComunicaçào com uma Linguagem Formal
Comunicação TelepáticaComunicação Telepática
Comunicação direta via interface TELL AND ASK.Comunicação direta via interface TELL AND ASK.
Ex : Ex : 1 O agente O agente AA pode comunicar a proposição P ao pode comunicar a proposição P ao
agente agente BB com TELL (KB com TELL (KBAA, “P”)., “P”).
2 O agente A pode consultar a base de O agente A pode consultar a base de conhecimento do agente B com um ASK (KBconhecimento do agente B com um ASK (KBBB, “Q”), “Q”)
Comunicação TelepáticaComunicação Telepática
Agente AAgente A Agente BAgente B
Comunicação com Tell and AskComunicação com Tell and Ask
AçõesAções AçõesAçõesPercepçõesPercepções PercepçõesPercepções
Comunicação TelepáticaComunicação Telepática
Desvantagens :Desvantagens :
Dados dois agentes Dados dois agentes AA e e B B que se comunicam :que se comunicam : A e B podem usar o mesmo simbolo com significados A e B podem usar o mesmo simbolo com significados
diferentes;diferentes; A e B podem usar simbolos diferentes para devotar a A e B podem usar simbolos diferentes para devotar a
mesma coisa;mesma coisa; A e B precisam usar a mesma linguagem interna;A e B precisam usar a mesma linguagem interna; SabotagemSabotagem
Comunicação com Linguagem FormalComunicação com Linguagem Formal
Um agente Um agente AA se comunica com um agente se comunica com um agente BB através de através de uma uma linguagem externa.linguagem externa.
Comunicação com Linguagem FormalComunicação com Linguagem Formal
Agente AAgente A Agente BAgente B
PercepçôesPercepçôesPercepçôesPercepçôes
AçõesAçõesAçõesAções
Ling. FormalLing. Formal
Comunicação com Linguagem FormalComunicação com Linguagem Formal
DesvantagensDesvantagens A linguagem de representação externa traz com ela A linguagem de representação externa traz com ela
problemas de geração e análise;problemas de geração e análise; Falta de uma linguagem padrão;Falta de uma linguagem padrão; Pode ocorrer uma interpretação errada por parte de agentes em Pode ocorrer uma interpretação errada por parte de agentes em
relação à mensagem de outro agente.relação à mensagem de outro agente.
•Vários consórcios :Vários consórcios :•Knowledge Sharing Effort (KSE)Knowledge Sharing Effort (KSE)
Knowledge Sharing Effort (KSE)Knowledge Sharing Effort (KSE)
O KSE é organizado em três grupos de trabalho :O KSE é organizado em três grupos de trabalho : Interlingua GroupInterlingua Group - tradução - tradução. .
resultado : resultado : Linguagem KIF.Linguagem KIF. SRKB (Shared, Reuasable Knowledge Bases) GroupSRKB (Shared, Reuasable Knowledge Bases) Group - -
compartilhamento e reusabilidade.compartilhamento e reusabilidade.resultado : resultado : Construção de Ontologias ComunsConstrução de Ontologias Comuns..
External Interfaces GroupExternal Interfaces Group - - comunicação SBC - SBC ou comunicação SBC - SBC ou SBC - SNBC.SBC - SNBC.
resultado : resultado : Linguagem KQMLLinguagem KQML..
KIF - Knowledge Interchange FormatKIF - Knowledge Interchange Format
Linguagem padrão de representação interna para comunicação Linguagem padrão de representação interna para comunicação entre agentes.entre agentes.
Versão pré-fixada do cálculo de primeira ordem, com extensões Versão pré-fixada do cálculo de primeira ordem, com extensões para aumentar a expressividade :para aumentar a expressividade : noções aritméticas, ex : >, <noções aritméticas, ex : >, < operadores lógicos, ex : andoperadores lógicos, ex : and procedimentosprocedimentos
Exemplos :Exemplos : (>(*(width chip1)(length chip1))(*(width chip2)(length chip2)))(>(*(width chip1)(length chip1))(*(width chip2)(length chip2))) (interested joe ‘(salary( ?x, ?y, ?z))(interested joe ‘(salary( ?x, ?y, ?z))
KQML - Knowledge, Query and Manipulation LanguageKQML - Knowledge, Query and Manipulation Language
KQMLKQML é uma é uma linguagemlinguagem e um e um conjunto de protocolosconjunto de protocolos que apoiam a comunicação entre agentes de software.que apoiam a comunicação entre agentes de software.
Principais características da linguagem :Principais características da linguagem : Mensagens KQML não enxergam o conteúdo das Mensagens KQML não enxergam o conteúdo das
mensagens que elas transportam;mensagens que elas transportam; Comunicação baseada em Executivas;Comunicação baseada em Executivas; Permite o uso de facilitadores;Permite o uso de facilitadores; É dividida em três camadas : É dividida em três camadas : camada de comunicaçãocamada de comunicação, ,
camada de conteúdocamada de conteúdo e e camada de mensagemcamada de mensagem..
KQML - parâmetrosKQML - parâmetros
As principais palavras-chaves (parâmetros) das executivas As principais palavras-chaves (parâmetros) das executivas KQML são as seguintes :KQML são as seguintes :
executiva (executiva ( :sender:sender <word><word>
:receiver:receiver <word><word>
:reply-with:reply-with <word><word>
:in-reply-to:in-reply-to <word><word>
:language:language <word><word>
:ontology:ontology <word><word>
:content:content <expression> )<expression> )
KQML - Executivas (atos de fala)KQML - Executivas (atos de fala)
De acordo com seu significado as executivas podem ser De acordo com seu significado as executivas podem ser enquadradas nas seguintes categorias :enquadradas nas seguintes categorias : Executivas de ConversaçãoExecutivas de Conversação Executivas de Intervenção Executivas de Intervenção Executivas de Facilitação e RedeExecutivas de Facilitação e Rede
KQML - Executivas de ConversaçãoKQML - Executivas de Conversação
ask-ifask-if - - SS quer saber se o conteúdo de sua mensagem é quer saber se o conteúdo de sua mensagem é verdadeiro para verdadeiro para RR;;
ask-allask-all - - SS quer todas as instâncias de quer todas as instâncias de RR, para as quais o , para as quais o conteúdo de conteúdo de SS é verdadeiro; é verdadeiro;
telltell - - SS informa para informa para RR que seu conteúdo é verdadeiro, ou que seu conteúdo é verdadeiro, ou seja, que a sentença está em sua base de conhecimento;seja, que a sentença está em sua base de conhecimento;
insertinsert - - SS pede para pede para RR acrescentar o conteúdo da acrescentar o conteúdo da mensagem na base de conhecimento de mensagem na base de conhecimento de RR;;
advertiseadvertise - - SS quer que quer que RR saiba que saiba que SS pode e processará pode e processará mensagens do tipo da que está em seu conteúdo.mensagens do tipo da que está em seu conteúdo.
KQML - Executivas de ConversaçãoKQML - Executivas de Conversação
Exemplo Exemplo :: O agenteO agente AA envia a seguinte mensagem para o agente envia a seguinte mensagem para o agente BB : :
((advertiseadvertise
:sender:sender AA
:receiver:receiver BB
:reply-with:reply-with id1id1
:language:language KQMLKQML
:ontology:ontology kqml-ontologykqml-ontology
:content:content ((ask-ifask-if
:sender:sender BB
:receiver:receiver AA
:in-reply-to:in-reply-to id1id1
:language:language prologprolog
:ontology:ontology DIDI
:content:content “Professor(X,Y)”))“Professor(X,Y)”))
KQML - Executivas de ConversaçãoKQML - Executivas de Conversação
Exemplo Exemplo (cont.)(cont.) : : O agenteO agente BB pergunta então ao agente pergunta então ao agente AA : :
((ask-ifask-if
:sender:sender BB
:receiver:receiver AA
:in-reply-to:in-reply-to id1id1
:reply-with:reply-with id2id2
:language:language prologprolog
:ontology:ontology DIDI
:content:content “Professor(Geber,Agentes)”)“Professor(Geber,Agentes)”)
KQML - Executivas de ConversaçãoKQML - Executivas de Conversação
Exemplo Exemplo (cont.) (cont.) :: O agente O agente AA responde ao agente responde ao agente BB com a com a seguinte mensagem :seguinte mensagem :
((telltell
:sender:sender BB
:receiver:receiver AA
:in-reply-to:in-reply-to id2id2
:reply-with:reply-with id3id3
:language:language prologprolog
:ontology:ontology DIDI
:content:content “Professor(Geber,Agentes)”)“Professor(Geber,Agentes)”)
KQML - Executivas de IntervençãoKQML - Executivas de Intervenção
errorerror - - SS indica a indica a RR que recebeu uma mensagem não que recebeu uma mensagem não compreendida;compreendida;
sorrysorry - - SS diz a diz a RR que compreende sua mensagem, mas não pode que compreende sua mensagem, mas não pode prover uma resposta;prover uma resposta;
ExemploExemplo : : O agente O agente Servidor-EstoqueServidor-Estoque envia a seguinte mensagem para o envia a seguinte mensagem para o agente agente JoeJoe : :
((telltell :receiver:receiver JoeJoe
:reply-with:reply-with id2id2
:in-reply-to:in-reply-to id1id1
:language:language LPrologLProlog
:ontology:ontology Estoque-IBMEstoque-IBM
:content:content “(Computador IBM 14)”)“(Computador IBM 14)”)
KQML - Executivas de IntervençãoKQML - Executivas de Intervenção
ExemploExemplo (cont.): em resposta, o agente (cont.): em resposta, o agente JoeJoe envia a envia a seguinte seguinte mensagem para o agente mensagem para o agente Servidor-EstoqueServidor-Estoque : :
((errorerror :sender:sender JoeJoe
:receiver:receiver Servidor-EstoqueServidor-Estoque
:in-reply-to:in-reply-to id2id2
:reply-with:reply-with id3)id3)
KQML - Executivas de RedeKQML - Executivas de Rede
register register - - SS anuncia para anuncia para RR (facilitador) sua presença e nome (facilitador) sua presença e nome simbólico associado com seu endereço físico;simbólico associado com seu endereço físico;
unregisterunregister - cancela um register feito anteriormente; - cancela um register feito anteriormente; transport-addresstransport-address - - SS anuncia um novo endereço físico na rede; anuncia um novo endereço físico na rede; forwardforward - - SS quer que quer que RR repasse a mensagem para o agente “:to”; repasse a mensagem para o agente “:to”; broadcastbroadcast - - SS pede a pede a RR para enviar a mensagem para todos para enviar a mensagem para todos
agentes que agentes que RR conhece; conhece; broker-onebroker-one - - SS pede a pede a RR para achar uma resposta para a para achar uma resposta para a
executiva do seu conteúdo. executiva do seu conteúdo. recommend-onerecommend-one - - SS pede a pede a RR para sugerir um agente que possa para sugerir um agente que possa
processar seu conteúdo;processar seu conteúdo;
KQML - Executivas de RedeKQML - Executivas de Rede
ExemploExemplo : O : O facilitadorfacilitador recebe a seguinte mensagem : recebe a seguinte mensagem :
((broker-onebroker-one :sender:sender C C
:receiver facilitador:receiver facilitador
:reply-with id3:reply-with id3
:language KQML:language KQML
:ontology kqml-ontology:ontology kqml-ontology
:content:content ( (ask-all ask-all :sender:sender CC
:reply-with:reply-with id4id4
:language:language PrologProlog
:ontology:ontology Campeonato Campeonato BrasileiroBrasileiro
:content :content “Campeao(Flamengo,Y)”)) “Campeao(Flamengo,Y)”))
KQML - Executivas de RedeKQML - 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)”))“Campeao(Flamengo,Y)”))
KQML - Executivas de RedeKQML - Executivas de Rede
ExemploExemplo (cont.) : (cont.) : E o agente E o agente AA responde com a seguinte mensagem : responde com a seguinte mensagem :
((telltell :sender:sender AA
:receiver:receiver facilitadorfacilitador
:in-reply-to:in-reply-to id4id4
:reply-with:reply-with id5id5
:language:language PrologProlog
:ontology:ontology Campeonato BrasileiroCampeonato Brasileiro
:content:content “Campeao(Flamengo, 1980), ... , “Campeao(Flamengo, 1980), ... , Campeao(Flamengo, Campeao(Flamengo,
1992)”)1992)”)
KQML - Executivas de RedeKQML - Executivas de Rede
ExemploExemplo (cont.) :E então, o agente (cont.) :E então, o agente facilitadorfacilitador envia para o agente C : envia para o agente C :
((forwardforward ::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çõesKQML - Aplicações
Tem-se usado KQML em :Tem-se usado KQML em :
Aplicações de banco de dados distribuídos e/ou Aplicações de banco de dados distribuídos e/ou heterogêneos (mediadores);heterogêneos (mediadores);
Vários experimentos de integração de tecnologia no Vários experimentos de integração de tecnologia no laboratório de Roma da ARPA;laboratório de Roma da ARPA;
Integração de clientes com mediadores e servidores em Integração de clientes com mediadores e servidores em ambientes distribuídos;ambientes distribuídos;
Ligações Browsres WWW com Mediadores;Ligações Browsres WWW com Mediadores; Jogos;Jogos;
KQMLKQML
Desvantagens :Desvantagens : Não trata comprometimentos, compartilhamento.Não trata comprometimentos, compartilhamento. Tratamento de Erros;Tratamento de Erros; Seguraça.Seguraça.
Outras linguagens :Outras linguagens : FIPAFIPA
Tendências :Tendências : ACL - KQML + KIFACL - KQML + KIF agent-kagent-k projetos de engenharia concorrente, projetos inteligentes e aplicações projetos de engenharia concorrente, projetos inteligentes e aplicações
distribuídas.distribuídas. Compartilhamento de objetos.Compartilhamento de objetos.
O Mundo do Wumpus Com Comunicação (MWC)O Mundo do Wumpus Com Comunicação (MWC)
Objetivo Objetivo : Implementar o Mundo do Wumpus com : Implementar o Mundo do Wumpus com comunicação entre os agentes.comunicação entre os agentes.
O ambiente do jogo é formado por :O ambiente do jogo é formado por : Agente MundoAgente Mundo Agente CaçadorAgente Caçador Agente WumpusAgente Wumpus Conjunto de CavernasConjunto de Cavernas Agência *Agência *
Arquitetura do MWCArquitetura do MWC
Base de Conhecimento dos Agentes Caçadores
Tell and Ask Tell and Ask Tell and Ask
Caçadores
Arquitetura do MWCArquitetura do MWC
Base de Conhecimento do Agente Mundo
Tell and Ask
Agente Mundo
Arquitetura do MWCArquitetura do MWC
Tell and Ask
Tell and Ask Tell and Ask
Ações/Percepções
Ações/Percepções
Ações/Percepções
Mundo
Caçador3
Caçador1
Caçador2
Comunicação MWCComunicação MWC
Foram abordadas :Foram abordadas : Comunicação TelepáticaComunicação Telepática : :
entre caçadores.entre caçadores. Comunicação com Linguagem FormalComunicação com Linguagem Formal : :
Caçador / Mundo;Caçador / Mundo; Wumpus / Mundo;Wumpus / Mundo;
ImplementaçãoImplementação
Linguagens :Linguagens : Java;Java; KQML;KQML;
Ferramentas :Ferramentas : JEPS; JEPS; JATLite;JATLite;
•Classe Raciocínio do Caçador;•Classe Agency;
Considerações sobre o MWCConsideraçõ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 MWCConsiderações sobre o MWC
Comunicação :Comunicação : Agency funciona como facilitador;Agency funciona como facilitador; Dinâmica do fluxo das mensagens;Dinâmica do fluxo das mensagens; Verificação de Ontologias e Conteúdos;Verificação de Ontologias e Conteúdos; Ex1. Agente Mundo :Ex1. Agente Mundo :
if(msg.ontology == CaçadorMundoComunicação){if(msg.ontology == CaçadorMundoComunicação){
if(msg.contents == novocaçador){...if(msg.contents == novocaçador){...
Else if (msg.contents == GO){...Else if (msg.contents == GO){...
Else if (msg.contents ==GetGold) {Else if (msg.contents ==GetGold) { ......
else if(msg.ontology == WumpusMundoComunicação) ...else if(msg.ontology == WumpusMundoComunicação) ...
Considerações sobre MWCConsiderações sobre MWC
Ex2 . O Agente Caçador :Ex2 . O Agente Caçador : if(msg.ontology ==PercepcaoCacador){if(msg.ontology ==PercepcaoCacador){
ProcessaPercepcoes(msg.contents)ProcessaPercepcoes(msg.contents)
}} else if (msg.ontology == TimeSlice){else if (msg.ontology == TimeSlice){
DecideMove(); ...DecideMove(); ...
}}
Considerações sobre o MWCConsideraçõ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(){Void Think(){
... ...
If(cav.NaoTemBrisa()){If(cav.NaoTemBrisa()){
cav.ClearBuraco(this) ...cav.ClearBuraco(this) ...
}}
}}
QuestõesQuestões
POA x POO ?POA x POO ? Qual a diferença entre Agentes de Software Qual a diferença entre Agentes de Software
e Agentes Inteligentes ?e Agentes Inteligentes ? ACL resolve os problemas de comunicação ACL resolve os problemas de comunicação
entre agentes ?entre agentes ?
Referências Referências
Finin, Tim and Labrou, Yannis. A Proposal for a new Finin, Tim and Labrou, Yannis. A Proposal for a new KQML Specification; KQML Specification;
Finin, Tim., Labrou, Yannis and Mayfield, James. Finin, Tim., Labrou, Yannis and Mayfield, James. KQML as na communication language. KQML as na communication language.
Finin, Tim and Fritzon, Rich. KQML - A language and Finin, Tim and Fritzon, Rich. KQML - A language and Protocol for Knowledge and Information Exchange. Protocol for Knowledge and Information Exchange.
Finin, Tim and Labrou, Yannis. Semantics and Finin, Tim and Labrou, Yannis. Semantics and Conversations for na Agent Communication LanguageConversations for na Agent Communication Language
Patil, Ramesh S., Fikes Richard E., Patel-Schneider Peter F. ., Patil, Ramesh S., Fikes Richard E., Patel-Schneider Peter F. ., Don Mckay, Finnin, Tim., Gruber, Thomas and Neches Don Mckay, Finnin, Tim., Gruber, Thomas and Neches Robert. The DARPA Knowledge Sharing Effort : Progress Robert. The DARPA Knowledge Sharing Effort : Progress ReportReport
Top Related