Title: Comunica
1 Comunicação entre Agentes em Ambientes
Distribuídos O Modelo peer-to-peer
- Prof. Fred Freitas fred.freitas_at_tci.ufal.br
- Mestrado em Informática Universidade Federal de
Alagoas
2Roteiro
- 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
3Motivaçõ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
4O 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 para ORBs (Object
Request Brokers) e estão acessíveis pela Internet
Msg pedindo exec do método (parâmetros) Resposta
Cliente Servidor ORB
5Pró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
6Comunicaçã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
7Requisitos
- 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
8O 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
9Evolução de arquiteturas de comunicação
10Recursos 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)
11KQML - 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-alltell,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,b
roadcast,broker-one,recommend-one)
12Comunicaçã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))))
13Comunicaçã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))))
14Exemplo 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))))
15Ex. 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))))
16Informando 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))))
17Pedindo 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
"Conference-Paper")) - (object (is-a Web-Page) (Contents ?co))
- (test (and (if-occur ?l (begin-until "abstract"
?co)) (if-occur (slot-get
ppr_00008 Concepts) ?l))))
18Exemplo 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))))
19Ex. 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))))
20Hierarquia de Roteadores / Facilitadores
21A Linguagem ARCOL
- Feita pela FIPA (Foundation for Intelligent
Physical Agents) a partir de KQML - Visa o consenso em e-commerce 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
22(No Transcript)
23Falsos Cognatos entre IAD e SD
- Heterogeneidade
- Comunicação
- Compartilhamento
- Escalabilidade
- Transparência
- Portabilidade
- Peer-to-peer
24Conseqüências para EOOPSs
- Embedded Object Oriented Production Systems
Pachet 95Motores 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
25Integrando 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()
26Inicializando 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)).in
tValue(rete.getGlobalContext())
27BC separada
(defrule i_3_fill-ini ?f1 lt- (access ?y) gt
(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)
gt (assert (proc ?y (call ?page
processaInfo))))
28O 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
29Camadas 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
30Como (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
31import 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.P
arseException re) return false
32Exemplo de Comunicação
C\Agent\Codegt jview Agent.Code.MASTERWebAgent Ini
tialization Success Jessgt cfp_r_56_big-title
111111122t TRUE ... Jessgt 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
fred1_at_lcmi.ufsc.br) Connection established Router
started
33Exemplo de Comunicação (cont.)
Sending message Sending success Client Router
running Msg receivedN 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 receivedN 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 ) )gt
(assert (to-send cfp org ?y 1))) r_1_org
11t Msg receivedN 972936297630 (tell force
tentative content (link http//www.com.br 4)
language Jess receiver cfp sender
org) URLhttp//www.com.br