Modelos Baseados em Agentes Plataformas Multi-Agente Prof. André Campos Aula #15 Baseado no curso de Olivier Boissier (ENS Mines St. Etienne, França) DIMAp/UFRN
Problema O interesse em SMA tem crescido, porém Linguagens orientadas a agentes são ainda raras ou em estágio de maturação O desenvolvimento de SMA se apóia em linguagens e paradigmas de programação existentes (em geral O-O) A implementação de SMA em O-O é complexa (distribuição, protocolos de comunicação etc) Conseqüência = surgimento de várias ferramentas dando o suporte ao desenvolvimento SMA Existem centenas (ver, por exemplo www.agentlink.org ou www.multiagent.org ) Problema = qual utilizar? DIMAp/UFRN
Necessidades das ferramentas Suporte à implementação de agentes Interação com o ambiente (sensores etc) Comunicação (padrões, yellowpages, ACL etc) Protocolos de negociação, cooperação etc Suporte ao design do SMA Análise (descrição do problema etc) Design (arquiteturas com protocolos de interação etc) Desenvolvimento (plataformas, frameworks etc) Deployment (configuração, manutenção etc) Suporte ao usuário final Segurança (confiabilidade, integridade etc) DIMAp/UFRN
Padrões em SMA FIPA – Foundation for Intelligent Physical Agents Especificações de interfaces de componentes do ambiente com as quais os agentes interagem Ex.: usuários, outros agentes, ambiente físico (robôs) etc MASIF – OMG (Object Management Group) Padronização de agentes móveis Serviços e interfaces de middleware DARPA Knowledge Sharing Outros... DIMAp/UFRN
Visão geral de FIPA Objetivo Estrutura Fundado em 1996 Criar padrões internacionais que promovam a interoperabilidade entre agentes heterogêneos Estrutura Quadro Arquitetural da FIPA, Comitês técnicos, Grupos de trabalho Fundado em 1996 British Telecom, France Télécom, Fujitsu, HP, Hitachi, IBM, Imperial College, Intel, Motorola, Nasa, Nec, Nortel Networks, NTT, Philipps, Siemens, SNCF, SUN, Telecom Italia, Toshiba, ... Primeiros padrões em 1997 – FIPA’97. Depois FIPA’98, FIPA’2000 DIMAp/UFRN
Especificações de FIPA Última versão (FIPA’2000) Padrões nas seguintes áreas (~80) Linguagem, conteúdo (semântica), protocolos de interação, diretório de serviços, ... 2 tipos de especificações Normativa Especificações obrigatórias, assegurando a interoperabilidade entre outros sistemas FIPA Informativa Especificações-guias sobre como utilizar tecnologias desenvolvidas de acordo com as normas da FIPA DIMAp/UFRN
Quadro de especificações Aplicações Arquitetura abstrata Gerenciamento dos agentes Comunicação dos agentes Protocolos de interação Atos de comunicação Linguagens de conteúdo Transporte de mensagem Representação ACL (Agent Comunication Language) Representação dos envelopes Protocolos de transporte DIMAp/UFRN
Plataformas FIPA Para que uma plataforma seja considerada FIPA-compliant no mínimo: AMS e ACL Gerenciamento de agentes (AMS) Autenticação, Recursos, “páginas brancas” (naming) Comunicação (ACL) Diretório de agentes (páginas amarelas) Canal de comunicação (ACC) transporte de mensagens Serviços opcionais Ontologia, Interação H-M etc AMS PA HTTP Transporte (ACC) DIMAp/UFRN
Interoperabilidade entre plataformas Comunicação entre agentes pode ocorrer Internamente no seio na mesma plataforma Entre plataformas – usa ACC e transporte de mensagem Cada plataforma pode Estar implementada em linguagem diferentes Possuir arquiteturas diferentes Suportar diferentes funcionalidades Porém possuem Mesmos serviços de transporte Mesma linguagem de comunicação DIMAp/UFRN
Tipos de plataformas Suporte às diferentes fases de elaboração de um SMA Design Em geral baseadas em componentes Middlewares Design + Implementação Facilita a definição dos agentes Frameworks Design + Implementação + Testes Análise + Design + Imp. + Testes Análise Design Implementação Teste e validação DIMAp/UFRN
Exemplos de plataformas JADE (Java Agent Development Framework) MadKit (Multi-Agent Development Kit) Zeus Outros ADE, ADK, Agent Factory, AgentBuilder, AgentTool, Aglets, Bee-gent, BOND, DECAF, DIET, DIVA, EVO, Hive, IMPACT, Jack, JAFMAS, JIAC, JINI, Knowbot, LIME, MAGE, MAML, RETSINA, SOAR , TuCSoN, VOYAGER,... ... e muito mais!!!! DIMAp/UFRN
JADE Java Agent Development Framework Análise e Design Implementação Open source Conforme especificações da FIPA (uma das primeiras ferramentas) Análise e Design N/A Implementação Um agente em JADE é instância de uma subclasse da classe “Agent” Inclui uma biblioteca de protocolos de interação e comportamentos gerais de agentes (podem ser configurados) Deployment Alguns utilitários são fornecidos RMA (Remote Monitoring Agent) permite o controle do ciclo de vida dos agentes à distância DummyAgent permite configurar como o usuário interage com os agentes DIMAp/UFRN
Modelo de comunicação em JADE Agentes enviam/recebem objetos (Java) que representam mensagens ACL no escopo de um protocolo de interação Usuários não se preocupam em codificar mensagens Níveis de envelope, ACL, Linguagem de Conteúdo e Ontologia Pode ser estendido Biblioteca de protocolos de interação Usuários precisam apenas implementar métodos pré-definidos Ex.: Rede de contrato DIMAp/UFRN
MadKit Multi-Agent Development Kit Baseado no modelo Aalaadin (organização) DIMAp/UFRN
MadKit Análise Design Implementação Deployment N/A Definição de modelos organizacionais (grupos, papéis,...), modelo de interação (protocolos, mensagens,...), tarefas, objetivos Não há software que dê suporte à definição de tais modelos Implementação Baseado na estrutura Agent-Micro Kernel Deployment Uso de G-box DIMAp/UFRN
Zeus Versões inicial (1.02) Última versão fechada: British Telecom Open source (Mozilla) Última versão fechada: British Telecom Análise Modelagem de papéis através de UML Forte ênfase na metodologia Design Zeus Agent Model Implementação Baseado em ferramentas gráficas (ontologia, agente, configuração de tarefas dos agentes etc) Deployment Ferramentas de visualização e monitoramento dos agentes DIMAp/UFRN
Desenvolvimento em Zeus 3 bibliotecas Agentes utilitários Ferramentas de construção de agentes Biblioteca de componentes de agentes Definição gráfica dos agentes e serviços, em seguida pode-se gerar código (Java) DIMAp/UFRN
Passos de desenvolvimento Criação de uma ontologia Conhecimento declarativo dos conceitos significativos dentro de um domínio de aplicação (Zeus Ontology Editor) Criação de agentes Definição de agentes de tarefa (específico da aplicação) Configuração dos agentes utilitários Configuração dos agentes de tarefa (parâmetros de execução) Implementação Geração de código automático DIMAp/UFRN