Agentes Inteligentes segundo o Chimera



Documentos relacionados
Engenharia de Software Sistemas Distribuídos

Java Mail Server. Manual do Utilizador

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP

Arquitetura de Rede de Computadores

ENHANCED SERVER FAULT- TOLERANCE FOR IMPROVED USER EXPERIENCE. André Esteves nº3412 David Monteiro

Entendendo como funciona o NAT

Um sistema SMS 1 simplificado

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

Programação 2ºSemestre MEEC /2011. Programação 2º Semestre 2010/2011 Enunciado do projecto

Redes de Computadores. Trabalho de Laboratório Nº7

Tipos de Servidores. Servidores com estado

Microcat Authorisation Server (MAS ) Guia do utilizador

Novo Formato de Logins Manual de Consulta

DarkStat para BrazilFW

Manual de Utilizador. CNCVisual. Julho de Âmbito do Projecto de 5º Ano de Engenharia Mecânica. Autor: Bruno Lameiro

PACWEB Módulo de Pesquisa MANUAL DO UTILIZADOR

Protocolo TCP/IP. Neste caso cada computador da rede precisa de, pelo menos, dois parâmetros configurados:

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia

Com o smartmessage podemos de forma muito fácil e usando um qualquer cliente de , como por exemplo:

Acesso Remoto Placas de captura

2 Diagrama de Caso de Uso

PLATAFORMA INFORMÁTICA DE REQUISIÇÃO DE POLICIAMENTO DE ESPETÁCULOS DESPORTIVOS (PIRPED)

Departamento de Sistemas e Informática. Licenciatura em Engenharia Informática Industrial EDP

Bases de Dados. Lab 1: Introdução ao ambiente

Copyright 2008 GrupoPIE Portugal, S.A.

3 SCS: Sistema de Componentes de Software

Axis ThinWizard. Artigo. uma ferramenta de software que permite um rápido diagnóstico remoto dos problemas da impressora

2 de maio de Remote Scan

Engenharia Informática

ZSRest e ZSPos Multiposto

Redes de Acesso Telefone VoIP WiFi baseado em Windows Mobile

Sistemas Distribuídos

Índice. Enquadramento do curso 3 Estrutura Programática 4. Primeiros passos com o e-best Learning 6. Actividades e Recursos 11

Internet e no Akropole. Internet e no Akropole

Acronis Servidor de Licença. Manual do Utilizador

O Manual do Desktop Sharing. Brad Hards Tradução: Pedro Morais

ZS Rest. Manual Profissional. Instalação do Software. v2011

LABORATÓRIO WIRESHARK: DNS

Gescom isales. Aplicação Mobile Profissional para Vendedores

EAmb V.1 ESPOSENDE AMBIENTE. GestProcessos Online. Manual do Utilizador

Engenharia de Software. Enunciado da Quarta Parte do Projecto

GIAE VERSÃO JUNHO DE 2011 MUITO IMPORTANTE

Engenharia de Software III

CAMADA DE TRANSPORTE

Protocolos de Redes Revisão para AV I

Redes de Computadores. Trabalho de Laboratório Nº2

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

Regulamento de utilização Centros Informáticos 2008/2009

Regulamento de Vigilâncias de Provas Escritas de Avaliação do DEEC

MANUAL RASTREAMENTO 2013

BearingNet - Orçamentos Contenuto

ROTEIRO PARA INSTALAÇÃO DO BITVISE, CONFIGURAÇÃO DE CHAVES SSH, DEFINIÇÃO DAS PORTAS PARA OS TÚNEIS SSH E CONFIGURAÇÃO DO THUNDERBIRD

Especificação do 3º Trabalho

Engenharia de Software Sistemas Distribuídos

Capítulo 7 CAMADA DE TRANSPORTE

Procedimentos para a divulgação de eventos no site da ECUM

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança

APLICAÇÃO REDE APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE LINK DE DADOS FÍSICA 1/5 PROTOCOLOS DE REDE

ESCOLA SECU DÁRIA DA CIDADELA. Regulamento e Normas de utilização/funcionamento das salas com Equipamento Informático

Desenvolvimento Cliente-Servidor 1

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes.

1 Code::Blocks Criação de projetos

Módulo 8 Ethernet Switching

Política WHOIS do Nome de Domínio.eu

Sistemas Operativos 2005/2006. Arquitectura Cliente-Servidor Aplicada A Uma Biblioteca. Paulo Alexandre Fonseca Ferreira Pedro Daniel da Cunha Mendes

Para participar de um mapa colaborativo usando o Cmap Tools

Guia de utilização da notação BPMN

O que são DNS, SMTP e SNM

Desenvolvimento de uma Aplicação WEB para monitorização de BD Oracle

GUIA PARA O PREENCHIMENTO DOS FORMULÁRIOS ENTIDADE GESTORA ERP PORTUGAL

MANUAL DO UTILIZADOR TABLET PARA O SETOR DA RESTAURAÇÃO

IBM Managed Security Services for Agent Redeployment and Reactivation

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

Redes de Computadores. Protocolos de comunicação: TCP, UDP

O AMBIENTE DE TRABALHO DO WINDOWS

1. O DHCP Dynamic Host Configuration Protocol

Aplicações de Escritório Electrónico

Iniciar o Data Adapter Configuration Wizard. Toolbox Data Duplo clique em OleDbDataAdapter. Botão next na caixa de diálogo

Preparando um esquema de endereçamento de sua rede

Rede de Computadores

MANUAL DO UTILIZADOR

Tutorial de TCP/IP Parte 26 Criando Registros

Compartilhamento de internet usando recursos do Windows XP

Pingwin Android Como instalar

Diagramasde Interação. Prof. Anderson Cavalcanti UFRN-CT-DCA

Tutorial Gerar arquivo PDF. Gerando um documento pdf com várias imagens 1- Inserir imagem no Word

ZSRest. Manual de Configuração. CheckOutPDA. V2011-Certificado

Relatório SHST

Guia de utilização. Gestão de Mensagens. Março 2009

Solutions for Information Technologies. BIS-Navegador. Oracle

Como gerar arquivos para Sphinx Operador

Transcrição:

Agentes Inteligentes segundo o Chimera C Heuristic I M E R A No ambiente de desenvolvimento de Agentes Inteligentes Chimera, uma extensão do LPA Win-Prolog, um agente é funcionalmente composto por: Código, que define a sua função e comportamento, construído em LPA-Prolog, conferindo-lhe a inteligência necessária, Comunicações, para poder comunicar com outros agentes, Eventos aos quais é capaz de reagir, usando uma Event Queue assíncrona e Handlers apropriados. Comunicações No momento em que um agente é criado, arranca um servidor de comunicações que funciona em background, monitorizando a actividade. Se outro agente tentar efectuar uma ligação, o servidor detectará esse pedido e servi-lo-á de forma transparente, sem necessitar de qualquer programação adicional ou de interacção com o utilizador. Se, por outro lado, se tornar necessário ligar a outro agente, a única informação requerida para efectuar essa operação é o Domain Name (ou o endereço IP) em que o agente destino se encontra a correr bem como a indicação de qual a Porta a que se encontra ligado. 1

Uma vez a ligação estabelecida, tudo o que é preciso para enviar informação entre agentes é construir um termo Prolog e chamar um predicado que envie esse termo ao agente destinatário. Eventos Num programa controlado por eventos, a sua execução é interrompida automaticamente sempre que um evento ocorre. Esse evento é tratado adequadamente, após o que o programa recomeça onde tinha sido interrompido. No caso do Chimera, existe ainda uma possibilidade adicional interessante: é possível agendar um evento no próprio agente. O tratamento das comunicações no Chimera é também feita recorrendo a eventos. Quando uma mensagem contendo um termo chega a uma agente, ocorre um evento. Seja o que for que o agente esteja a realizar nesse momento, o controle é passado para um "event handler" específico, definido pelo utilizador e que decide o que fazer. Efectivamente, em Chimera, enviar um termo a outro agente é o mesmo que agendar um evento nesse outro agente. Esse processo é assim designado por "event posting" traduzindo a ideia de que um evento é enviado ao agente remoto. É possível encapsular qualquer estrutura de dados (números, variáveis, listas,...) nesses termos Prolog utilizados para envio de mensagens entre agentes. O termo recebido no destino será idêntico ao enviado, com a única excepção de uma variável contida no termo enviado ser duplicada à chegada, não mantendo assim qualquer relação com a enviada. Os eventos podem ser definidos pelo utilizador, com nome e estrutura de dados totalmente especificada por ele, ou ser definido pelo próprio sistema. Os eventos gerados automaticamente pelo sistema ocorrem sempre que ligações sejam estabelecidas ou interrompidas e sempre que termos sejam enviados ou recebidos. Os eventos definidos pelo utilizador são gerados mediante a invocação de predicados agent_post/3. Os dois tipos de eventos podem ser distingidos pela sua estrutura de dados, uma conjunção no caso dos eventos de sistema e um tuplo nos eventos de utilizador. Construção de um agente Chimera Numa óptica mais prática que a utilizada no princípio do texto, um agente Chimera é visto como compreendendo dois componentes: 1. Um Socket suportando as comunicações TCP/IP 2. Um Handler constituído por um predicado Prolog com 3 parâmetros e que será chamado automaticamente sempre que um dado evento ocorra. Para cada tipo de evento deverá existir um handler específico, caso se pretenda garantir uma resposta própria a esse evento. Para criar um agente é necessário especificar 3 elementos: o seu nome, o nome (functor) dos predicados Prolog que permitem fazer o tratamento dos seus eventos de sistema (handlers) e, opcionalmente, a porta TCP/IP a que vai estar ligado. O predicado utilizado para o efeito é o agent_create/3: 2

agent_create( Agent_name, Handler, Port) A porta pode ser especificada pelo programador mas, caso não o seja, ser-lhe-á atribuído automaticamente um valor pelo sistema. Se for especificada uma Porta que esteja já a ser usada pelo sistema, ocorrerá um erro. Por último, para poder utilizar o Chimera e as suas facilidades é necessário assegurar o carregamento da biblioteca respectiva usando o predicado: ensure_loaded( system(chimera) ) Comunicações As comunicações entre dois agentes exigem o estabelecimento prévio de uma conexão mediante a chamada do predicado agent_create/4: agent_create( Agent_name, Link, IP_address, Port ) Neste predicado, Agent_name é o agente em que o predicado é executado, ou seja, o agente iniciador do pedido de ligação, Link pode ser qualquer número inteiro e destina-se a identificar essa ligação específica (o agente pode ter várias ligações estabelecidas simultaneamente), o IP_address e Port dizem respeito ao agente remoto com quem se pretende estabelecer a ligação. Após o estabelecimento de uma conexão, o envio de uma mensagem resume-se a provocar a geração de um evento no agente destino usando o predicado agent_post/3: agent_post( Agent_name, Link, Term) A invocação em Agent_name de um predicado com esta sintaxe implica o agendamento de um evento com uma estrutura de dados contendo Term no agente remoto ligado através da conexão identificada por Link. De notar que um agente pode agendar um evento em si próprio. Nesse caso, o segundo parâmetro do predicado agent_post/3 deverá ser uma lista vazia ([]). Uma ligação pode ser fechada mediante o predicado agent_close/2. O predicado agent_close/1 é utilizado para fechar o agente propriamente dito, bem como qualquer ligação que ele tenha estabelecido. O tratamento dos eventos Pode-se dizer que num ambiente de programação como o Chimera, uma aplicação é basicamente composta por "user events" e os seus "handlers". O tratamento dos eventos é efectuado através de predicados designados por "event handlers" recebendo 3 parâmetros: o nome do agente que o agenda, o identificador da conexão que o liga ao agente remoto onde o evento será gerado e o termo contendo a estrutura de dados associada ao evento. 3

Os Event Handlers são constituídos por predicados Prolog criados pelo utilizador com a seguinte estrutura: handler_name( Agent_name, Link, Event) Event descreve o evento ao qual o handler diz respeito, e Link refere-se a um número identificando a ligação através da qual a comunicação entre agentes foi estabelecida. Os eventos de sistema Os eventos de sistema são gerados de forma automática pelo sistema sempre que alguns acontecimentos especiais ocorrem. Todos eles têm associada uma estrutura de dados sob a forma de conjunções. A lista de eventos de sistema inclui os seguintes: (close, Port) É gerado quando o agente é terminado mediante a invocação do predicado agent_close/ 1. (close, Host, Port) É gerado quando uma ligação entre agentes é terminada mediante a invocação do predicado agent_close/2. (create, Port) É gerado quando um agente é criado mediante a invocação do predicado agent_create/1. (create, Host, Port) É gerado quando uma ligação entre agentes é requerida mediante a invocação do predicado agent_create/2. Não traduz a efectiva concretização da ligação, apenas o pedido de estabelecimento, independentemente do seu sucesso ou insucesso. (error, Code, What) Traduz a ocorrência de um problema numa dada ligação entre dois agentes. O parâmetro What virá instanciado com um átomo Prolog que indica qual o problema específico ocorrido. (open, Host, Port) É gerado quando um pedido de ligação é aceite no agente remoto. (read, Host, Port, Term) É gerado quando uma mensagem é recebida, ou seja, quando um evento pedido por um agente origem é gerado no agente destino. (write, Hodt, port, Term) 4

É gerado quando uma mensagem é enviada. Mais informação sobre estes eventos pode ser encontrada no Apêndice B do texto contido no ficheiro CHI_REF.pdf. Exemplo de demonstração Nas páginas 35 a 46 do documento Agents for Win-Prolog - Programming Guide and Technical Reference (ficheiro pdf contido no sub-directório \docs do directório de instalação do Win-Prolog) é descrita a aplicação Brains elaborada com o intuito de servir de demonstração das técnicas descritas atrás 1. António Silva ISEP, 25 de Setembro de 2006 1 Está no sub-directório \examples do directório de instalação do Win-Prolog. 5