Comunicação entre Agentes
em Ambientes Distribuídos:
O Modelo peer-to-peer
Prof. Fred Freitas – [email protected]
Mestrado em Informática
Universidade Federal de Pernambuco
Roteiro
Comunicação Cliente-Servidor
Requisitos de comunicação de agentes cognitivos
Comunicação em Nível de Conhecimento
Vantagens do Modelo peer-to-peer
A Linguagem de comunicação KQML
A Linguagem Arcol da FIPA
Conseqüências para Integração Objetos-Regras
O pacote JATLite
- Como usá-lo
Exemplos
Motivações de Multiagentes em SD
Conjuntura: Grandes redes heterogêneas abertas (Internet)
– Problemas grandes, complexos e interdependentes
• Recuperação de informações
• Mineração de Dados
• Mediação
– Necessidade de concorrência
– Domínios distintos
– Comércio eletrônico
• Negociação
• Padrôes para diálogos
Sistemas abertos pedem uma comunicação dinamicamente
estabelecida e semanticamente contextualizada entre
diferentes entidades de softwares
O Modelo de Comunicação
Cliente-Servidor
Os servidores provêem os
serviços, os clientes os usam
– mestre-escravo
Os serviços estão acessíveis
via RPCs (Remote
Procedure Calls)
RPCs executam métodos de
objetos remotos cujas
assinaturas foram mapeadas Cliente
para ORBs (Object Request
Brokers) e estão acessíveis
pela Internet
Msg pedindo
exec do método
(parâmetros)
Resposta
ORB
Servidor
Prós e Contras
Vantagens:
– Rapidez
– Adequados a sistemas
de tempo real e SMAs
reativos
– Tranparência de
execução
Desvantagens
– Vocabulário: apenas os
parãmetros dos métodos
– Faltam:
•
•
•
•
Expressividade
Intenção
Contexto
Iniciativa
– Dificultam a
implementação de
autonomia, e cooperação
dinâmica
Comunicação em Nível
de Conhecimento
Baseada na Teoria dos Atos de Fala [Austin 62], que modela
a comunicação humana
Os atos de fala expressam as intenções dos agentes
– assertivos (informar), diretivos (pedir ou consultar), comissivos
(prometer ou comprometer-se), proibitivos, declarativos (causar
eventos para o próprio comunicador) e expressivos (emoções).
Princípio Huhns-Singh para agentes [Huhns & Singh 97]
– Um agente deve mudar de comportamento quando outro agente
entra no ambiente
Requisitos
Confiável: Msgs explícitas e
legível por pessoas
Expressiva
– Mensagens complexas
– Contexto
– Intenções
Compreensível: Mensagens
escritas num formalismo
lógico, entendido por ambos
os agentes
– Tradução entre formalismos
Semântica clara: Vocabulário
comum (ontologia) entre os
agentes
Níveis:
– Ato de fala (intenção)
– Contexto (ontologia)
– Esquema de cooperação
• contract-net, etc.
– Conteúdo (numa lógica)
– Dados da mensagem
• Remetente, destino,
etc
O Vocabulário Comum: Ontologias
Conceitualização de uma área de conhecimento [Gruber 95]
– Conjuntos de conceitos, definições, relações, axiomas e restrições
sobre a área
[é-um 777]
777
Ont. de Meios de Transporte
Trem
Meu agente
Avião
Transporte Carreira
Barco
Caça
Agente da
Cia. Aérea
Avião
Id
Modelo
Xy
777
Evolução de arquiteturas de comunicação
Arquitetura
Cliente - Servidor
Entidade
Mestre
Entidade
Escravo
Distribuída
Manda
Peer
Obedece
Peer
Atribui tarefas
Voltado só para si
Peer
Satisfaz pedidos
Autônomo
Peer
Cria/invoca
compromissos
Voltado só para si
Mantém
compromissos
Autônomo
Declarativa
(Baseada em
agentes)
Comunicação Característica
RPC
Transparência
de execução
Msgs
assíncronas
declarativas
Autonomia,
conhecimento,
legibilidade,
reuso e
extensibilidade
Atos de Fala
Autonomia,
conhecimento,
legibilidade,
reuso,
extensibilidade
e sociabilidade
Recursos de ACLs
Serviço de registro de agentes
Serviço de conexão de agentes
Serviço de nomes e roteamento para agentes
– Transparência de localização
– Roteamento e enfileiramento de mensagensaté quando o agente destinatário
está desconectado
Parsers para mensagens, brokering (facilitação) and broadcasting
Independente da linguagem de conteúdo das mensagens
Suporte a vários protocolos: TCP/IP, SMTP, FTP, POP3 e HTTP, para
aplicações e applets.
Referências a mensagens anteriores (:in-reply-to)
KQML - Knowledge Query and
Manipulation Language
KQML é uma linguagem de comunicação que dá suporte a
agentes na identificação, conexão e troca de informação com
outros agentes.
Mensagens KQML não enxergam o conteúdo das mensagens
que elas transportam
Categorias dos atos de fala :
– Conversação - trocas de informação e conhecimento entre dois
agentes (ask-if,ask-all;tell,advertise, insert, subscribe, recruiting)
– Intervenção - intervenção da conversação (error,sorry);
– Facilitação e Rede - permitem que agentes achem outros agentes
que podem processar suas consultas (register, unregister,
transport-address,forward,broadcast,broker-one,recommend-one)
Comunicação via KQML
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))))
Comunicação via KQML
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))))
Exemplo de Comunicação em KQML
(ask-all
:sender CFP-Agent
:receiver PPR-Agent
:reply-with id1
:language JessTab
:ontology Science
:content (object (is-a Link) (URL ?u)
(anchor ?a&:(occurs [call-for-papers] ?a))))
Ex. de Comunicação em KQML (cont.)
(tell
:sender PPR-Agent
:receiver CFP-Agent
:in-reply-to id1
:reply-with id2
:language JessTab
:ontology Science
:content (object (is-a Link)
(URL “http://lcn2002.cs.bonn.edu”)
(anchor “ IEEE Conference on Local Computer
Networks (LCN 2002)”)))
Informando conceitos de um caso...
(inform :sender cfp
:receiver ppr
:language JessTab
:ontology Science
:content
([ppr_00008] of Case
(Description "cfp suggestions")
(Concepts [Call-for-participation] [annual]
[conference] [Call-for-papers] [workshop]))))
Pedindo links com os conceitos...
(ask-all :sender cfp
:receiver ppr
:language JessTab
:ontology Science
:content (object (is-a Anchor) (Link-Text ?l))
(Result (Page-Status CLASSIFIED) (Class "ConferencePaper"))
(object (is-a Web-Page) (Contents ?co))
(test (and (if-occur ?l (begin-until "abstract" ?co))
(if-occur (slot-get [ppr_00008] Concepts) ?l))))
Exemplo de Comunicação em KQML
(ask-all
:sender CFP-Agent
:receiver PPR-Agent
:reply-with id1
:language JessTab
:ontology Science
:content (object (is-a Link) (URL ?u)
(anchor ?a&:(occurs [call-for-papers] ?a))))
Ex. de Comunicação em KQML (cont.)
(tell
:sender PPR-Agent
:receiver CFP-Agent
:in-reply-to id1
:reply-with id2
:language JessTab
:ontology Science
:content (object (is-a Link)
(URL “http://lcn2002.cs.bonn.edu”)
(anchor “ IEEE Conference on Local Computer
Networks (LCN 2002)”)))
Hierarquia de Roteadores /
Facilitadores
A Linguagem ARCOL
Feita pela FIPA (Foundation
for Intelligent Physical
Agents) a partir de KQML
Visa o consenso em ecommerce inteligente:
– Nomes globais para agentes
– Ambientes seguros para
negociação entre agentes
– Agentes móveis
– Mediação
Semântica mais clara das
intenções
Composição entre elas
Inclusão de esquema de
cooperação
Definição de ambientes e
mediadores
Tópicos
“Peer-to peer”
Cliente-servidor
Paradigma
Declarativo
Procedural
Representação de
Conhecimento
Teoria: conceitos, relações e
restrições (“o que”)
Funcionamento (“como”)
Confiabilidade
Conhecimento explícito
(transparente)
Descrição da ação dos métodos
fornecidas pelo implementador
Legibilidade
Conhecimento explícito
(transparente)
Information Hiding
Contexto
Atos de fala e ontologias
Parâmetros tipados
Direção
Proatividade, iniciativa e
multiálogo
RPC unidirecional, pares
Flexibilidade
Comunicação Dinâmica
Comunicação Pré-definida
Interface
Semântica e Dinâmica
Sintática e Estática
Finalidade
Inferência, reuso, negociação ou
documentação para usuários
Execução
Interoperabilidade
entre Linguagens
Mapeamentos para OKBC ou
tradução lógica entre
formalismos
Mapeamentos para CORBA IDL
ou DCOM
Falsos Cognatos entre IAD e SD
Heterogeneidade
Comunicação
Compartilhamento
Escalabilidade
Transparência
Portabilidade
Peer-to-peer
Conseqüências para EOOPSs
Embedded Object Oriented Production Systems [Pachet
95]:Motores de inferência integráveis a objetos
Comunicação p2p deve ser explícita (não enviar objetos!)
Separar bem o que é declarativo e procedural
– Conhecimento misturado com código (objetos e métodos) não pode
ser traduzido ou reusado
– Inicializar objetos no código procedural, por métodos dispostos pelo
motor de inferência
– Evitar ao máximo executar métodos dentro de BCs, mas se for
necessário, manter uma BC pequena, exclusiva para isso
– Na BC, privilegiar funções do motor às da linguagem hospedeira do
motor, apesar de serem menos eficientes
Integrando um Objeto a um Motor
public class PaginaWWW {
public PaginaWWW( String wurl ) {
...}
public String protocolo() {
return protocolo;
}
public String hostName() {
return hostName;
}
public int tamanho() {
return tamanho;
}
public void processaInfo() {
}
Inicializando objetos no código
PaginaWWW p= new PaginaWWW(Url);
// Processing of the page by the reasoning engine
// sending data to Jess
rete.addDefglobal(new Defglobal("?*URL*",new Value(Url,RU.STRING)));
rete.addDefglobal(new Defglobal("?*page*",new Value((Object)p)));
rete.assertString("(access ?*URL*)");
rete.reset();
rete.run();
ValueVector mainFact = new ValueVector();
mainFact = (rete.fetch("STATUS")).listValue(rete.getGlobalContext());
urlRetreivd = (mainFact.get(0)).toString();
fact = ((mainFact.get(1)).toString()).trim();
rule = (mainFact.get(2)).intValue(rete.getGlobalContext());
BC separada
(defrule i_3_fill-ini
?f1 <- (access ?y)
=>
(assert (web-page
(URL ?y)
(protocol (call ?*page* protocolo))
(host (call ?*page* hostName))
...
(length (call ?*page* tamanho))))
(retract ?f1)
(assert (accessed ?y)))
(defrule i_5_filling
(valid ?y)
=>
(assert (proc ?y (call ?*page* processaInfo))))
O Pacote JATLite para KQML
Java Agent Template Lite – Classes para a construção de
agentes, facilitadores e roteadores
– java.stanford.edu
Parser KQML, mas aceita outra linguagem
Protocolos TCP/IP, HTTP, FTP ou outros
Agentes com resposta direta ou fila de mensagens
Camadas do JATLite
Abstrata - classes abstratas necessárias, com TCP/IP, mas provê
herança de que podem implementar outros protocolos.
Básica - funcionalidades de comunicação
KQML - armezanamento e parsing de mensagens KQML e serviços
de conexão
Roteadora - serviço de registro de nomes, roteamento e
enfileiramento de mensagens.
Protocolo - suporte aos protocolos SMTP, FTP, POP3, HTTP, tanto
para aplicativos quanto pra applets.
– Em Windows, applets exigem que a máquina onde está o
roteador tenha um servidor de páginas
Como (Re)Usar o JATLite
Estudar mensagens KQML e seus parâmetros
Instalar um roteador na rede e deixá-lo rodando
Testar exemplos prontos em outras máquinas
Implementar agentes estendendo a classe abstrata
RouterLayer.RouterClientAction
– Implementar o método Act(Object o), que trata cada
mensagem da fila do agente e outros métodos e objetos
– Lembrar que Java não possui herança múltipla! Opções:
• Colocar a parte de comunicação no nível mais alto
• Criar um construtor que tenha como parâmetros os objetos que ele
precisará na execução do Act, permitindo assim um objeto comunicador e
herança de outra classe no nível mais alto
import Abstract.*; import KQMLLayer.*;
import RouterLayer.*; import RouterLayer.AgentClient.*;
public class MASTERWebAgent extends RouterClientAction {
...
public boolean Act(Object o) {
try
{
KQMLmessage kqml = mail.getKQMLmessage();
String perf = kqml.getValue("performative");
String pf = "ask-oneask-alltellerror";
switch(pf.indexOf(perf)){
case 0:
...
// send delete message to the Router
addToDeleteBuffer(0);
return true;
case -1:
// error message
sendErrorMessage(kqml);
return false;}
catch(KQMLLayer.ParseException re){ return false;}
Exemplo de Comunicação
C:\Agent\Code> jview Agent.Code.MASTERWebAgent
Initialization Success
Jess> cfp_r_56_big-title: =1=1=1=1=1=1=1=2+2+t
TRUE
...
Jess> Server created
cfpServer Started
Start to register
Register accepted
Before
Start to connect as cfp
(reconnect-agent :host iching.lcmi.ufsc.br :port 25 :sender cfp :receiver Router
:password jhc :email [email protected])
Connection established
Router started
Exemplo de Comunicação (cont.)
Sending message
Sending success
Client Router running
Msg received:N 972087857260 (registered-agent :sender Router :receiver cfp :content
((CADStandAlone carbonell.lcmi.ufsc.br -1 disconnected)
(RouterRegistrar carbonell 4445 disconnected) (Router carbonell 4444 disconnected)
(CalcServer carbonell.lcmi.ufsc.br 5556 disconnected) (cfp iching.lcmi.ufsc.br 25
connected) (ccc null -1 disconnected) (CADApplet null -1 disconnected)
(ddd null -1 disconnected)))
Msg received:N 972936297630 (ask-all :content (web-page (URL ?y)) :reply-with t
:language Jess :receiver cfp :sender org)
(defrule r_1_org (web-page (URL ?y ) )=> (assert (to-send cfp org ?y 1)))
r_1_org: =1=1+t
Msg received:N 972936297630 (tell :force tentative :content (link http://www.com.br 4)
:language Jess :receiver cfp :sender org)
URL:http://www.com.br
Download

Comunicação entre Agentes em Ambientes Distribuídos: O Modelo