Comunicao entre Agentes em Ambientes Distribudos O Modelo
Comunicação entre Agentes em Ambientes Distribuídos: O Modelo peer-to-peer Prof. Fred Freitas – fred. freitas@tci. ufal. br Mestrado em Informática Universidade Federal de Alagoas
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
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 Cliente 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 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: 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: Ontologi Conceitualização de uma área de conhecimento [Gruber 95] – Conjuntos de conceitos, definições, relações, axiomas e restrições sobre a área
Evolução de arquiteturas de comunicação
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, POP 3 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-
Comunicação via KQML Exemplo : O facilitador recebe a seguinte mensagem : (broker-one : sender C : receiver facilitador : reply-with id 3 : language KQML : ontology kqml-ontology : content (ask-all : sender C : reply-with id 4 : 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 id 3 : reply-with id 6 : language KQML : ontology kqml-ontology : content (tell : receiver C : language Prolog : ontology C. Brasileiro : content (Campeao(Flamengo, 1980),
Exemplo de Comunicação em KQML (ask-all : sender CFP-Agent : receiver PPR-Agent : reply-with id 1 : language Jess. Tab : 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 id 1 : reply-with id 2 : language Jess. Tab : ontology Science : content (object (is-a Link) (URL “http: //lcn 2002. cs. bonn. edu”) (anchor “ IEEE Conference on Local Computer Networks (LCN 2002)”)))
Informando conceitos de um caso. . . (inform : sender cfp : receiver ppr : language Jess. Tab : ontology Science : content ([ppr_00008] of Case (Description "cfp suggestions") (Concepts [Call-for-participation] [annual] [conference] [Call-for-papers]
Pedindo links com os (ask-all : sender cfpconceitos. . . : receiver ppr : language Jess. Tab : 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
Exemplo de Comunicação em KQML (ask-all : sender CFP-Agent : receiver PPR-Agent : reply-with id 1 : language Jess. Tab : 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 id 1 : reply-with id 2 : language Jess. Tab : ontology Science : content (object (is-a Link) (URL “http: //lcn 2002. 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 Semântica mais clara das intenções Composição entre elas Inclusão de esquema de cooperação Definição de ambientes e mediadores
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 p 2 p 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
Integrando um Objeto a um Motor public class Pagina. WWW { public Pagina. WWW( String wurl ) {. . . } public String protocolo() { return protocolo; } public String host. Name() { return host. Name; } public int tamanho() { return tamanho; } public void processa. Info() { }
Inicializando objetos no código Pagina. WWW p= new Pagina. WWW(Url); // Processing of the page by the reasoning engine // sending data to Jess rete. add. Defglobal(new Defglobal("? *URL*", new Value(Url, RU. STRING))); rete. add. Defglobal(new Defglobal("? *page*", new Value((Object)p))); rete. assert. String("(access ? *URL*)"); rete. reset(); rete. run(); Value. Vector main. Fact = new Value. Vector(); main. Fact = (rete. fetch("STATUS")). list. Value(rete. get. Global. Context()); url. Retreivd = (main. Fact. get(0)). to. String(); fact = ((main. Fact. get(1)). to. String()). trim(); rule = (main. Fact. get(2)). int. Value(rete. get. Global. Context());
BC separada (defrule i_3_fill-ini ? f 1 <- (access ? y) => (assert (web-page (URL ? y) (protocol (call ? *page* protocolo)) (host (call ? *page* host. Name)). . . (length (call ? *page* tamanho)))) (retract ? f 1) (assert (accessed ? y))) (defrule i_5_filling (valid ? y) => (assert (proc ? y (call ? *page* processa. Info))))
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, POP 3, 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 Router. Layer. Router. Client. Action – 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
import Abstract. *; import KQMLLayer. *; import Router. Layer. Agent. Client. *; public class MASTERWeb. Agent extends Router. Client. Action {. . . public boolean Act(Object o) { try { KQMLmessage kqml = mail. get. KQMLmessage(); String perf = kqml. get. Value("performative"); String pf = "ask-oneask-alltellerror"; switch(pf. index. Of(perf)){ case 0: . . . // send delete message to the Router add. To. Delete. Buffer(0); return true; case -1: // error message send. Error. Message(kqml); return false; } catch(KQMLLayer. Parse. Exception re){ return false; }
Exemplo de Comunicação C: AgentCode> jview Agent. Code. MASTERWeb. Agent Initialization Success Jess> cfp_r_56_big-title: =1=1=1=1=2+2+t TRUE. . . Jess> Server created cfp. Server 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 fred 1@lcmi. ufsc. br) 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 ((CADStand. Alone carbonell. lcmi. ufsc. br -1 disconnected) (Router. Registrar carbonell 4445 disconnected) (Router carbonell 4444 disconnected) (Calc. Server 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
- Slides: 33