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
Download

aop