390 likes | 482 Views
Arquitetura BDI. Viviane Torres da Silva viviane.silva@ic.uff.br http://www.ic.uff.br/~ viviane.silva/isma. Arquitetura BDI. Modelo proposto por Bratman em 1987 Modelo consiste de: B eliefs: crenças D esire: desejos ou objetivos I ntetions: intenções ou planos
E N D
Arquitetura BDI Viviane Torres da Silva viviane.silva@ic.uff.br http://www.ic.uff.br/~viviane.silva/isma
Arquitetura BDI • Modelo proposto por Bratman em 1987 • Modelo consiste de: • Beliefs: crenças • Desire: desejos ou objetivos • Intetions: intenções ou planos • Arquitetura BDI proposta por Rao e Georgeff em 1995 • É uma arquitetura abstrata
Plataformas e Frameworks • Que utilizam BDI: • ASF • Jack • Retsina • Jadex • Que não utilizam BDI: • Jade
Jack Inteligente Agents http://www.agent-software.com/shared/products/index.html
Propriedades de Jack • Fe criado pela Agent-Oriented Software (AOS) • É um ambiente para criar e executar SMA utilizando uma abordagem orientada a componentes • Seus agentes estão baseados na arquitetura BDI • Implementado em Java • Define novas classes para implementação dos agentes • Sua versão atual é a 5.0 • É necessário uma licencia para utiliza-lo
Os três principais componentes de Jack • Jack Agent Language: • A linguagem utilizada para o desenvolvimento dos agentes • Estende Java para pode manipular as propriedades dos agentes • Jack Agent Compiler: • Pré-processa o programa na linguagem Jack e o converte em código Java puro. • O código Java é compilado pela máquina virtual Java • Jack Agent Kernel: • É o ambiente para execução dos programas em Jack • Tem um conjunto de classes que podem ser utilizadas para implementar as aplicações orientadas aos agentes
A linguagem Jack • Extensão no nível de implementação: • Inclusão de conceptos como Agente, Evento, Plano, conj. de Crenças e Capacidades • Extensão no nível sintático • Define um conjunto de palavras-chave orientadas a agentes • Class é uma palavra-chave para Java e Agent é uma palavra-chave para Jack • Extensão no nível semântico • A execução de um programa em Jack é diferente da execução de um programa orientado a objetos • Ex.: Seleção de plano para alcançar um objetivo
Características do agente • Os agentes tem objetivos para alcançar (agentes pró-ativos) ou eventos para tratar (agentes reativos) • Define um comportamento default para os agentes • Oferece uma infra-estrutura de comunicação para os agentes • Cada agente tem: • Um conjunto de crenças • Um conjunto de eventos que pode receber • Um conjunto de capacidades • Um conjunto de planos • Quando um agente é criado ele fica inativo até que receba um objetivo para ser alcançado ou um evento para tratar
Comportamento del agente • Recebe um evento • Verifica em suas crenças, se o evento já foi tratado • Se não foi tratado ainda, consulta o conjunto de planos e escolhe um plano para tratar o evento • Se o plano foi executado com sucesso, o evento foi tratado • Se o plano não foi executado com sucesso, outro plano será executado • Se nenhum plano tratou o evento, então o evento não pode ser tratado
Definição de um agente agent AgentType extends Agent [implements InterfaceName] { // Creencia de los agentes #{private | agent | global} data BeliefType belief_name (arg_list) // Eventos #handles event EventType; #posts event EventType reference; #sends event EventType reference; // Planes #uses plan PlanType; // Capacidades #has capability CapabilityType reference; //Datos #{private| agent | global} data DataType data_name(arg_list) //Métodos }
Gerente de Tarefas • Por default, cada agente tem um gerente simples de tarefa • Toda tarefa segue sua execução até que seja completada (com sucesso ou com falha), ou que exista um @wait_for ou um @sleep • É possível utilizar outros gerentes más complexos • Gerente “round robin”: varias tarefas são executadas por vez e são executados X passos de cada tarefa, i.e., X ações do plano que executa a tarefa • #uses taskManager SimpleRRTaskManager(<steps>)
Evento • Eventos podem ser utilizados para modelar objetivos, intenções, percepções no ambiente, comunicação • Sempre que um evento ocorre, um agente tem que tratá-lo • Tratar um evento significar executar um plano • Tipos de eventos: • Estímulo interno: (evento automático) evento que o agente envia a si mesmo, modela as crenças do agente (modificação no ambiente) • Estímulo externo: (evento normal) utilizado para modelar a comunicação entre os agentes • Motivações: (evento BDI) modela objetivos
Evento • Como os agentes tratam os evento? • Os eventos automáticos não necessitam ser tratados • Os eventos normais (ou internos) são tratado selecionando um plano ou executando o plano • Os eventos BDI são tratados de maneira más complexa. Pode ser necessário executar más de um plano para um mesmo evento event EventType extends BDIGoalEvent { // JACK Agent Language statements specifying // the goal's structure and how the goal is // posted within the agent }
Plano • Uma seqüência de ações para tratar um evento • Cada plano trata um evento • A definição de um plano inclui: • O tipo do evento que pode tratar • Os eventos que pode enviar • Os dados que lê ou modifica e os métodos que tem • O método de raciocínio que utiliza • O método de raciocínio de um plano é implementado como una máquina de estados finita
Definição de um Plano plan PlanName extends Plan { #handles event EventType event_ref #sends event MessageEventType reference; #uses data DataType reference; #modifies data DataType reference // otros métodos del plan body() { //El cuerpo del plan } }
Capacidade • Utilizada para estruturar o comportamento do agente em um conjunto de funcionalidades • Ex.: um agente tem a capacidade de limpar mesas e outro de pegar o lixo. • Objetivo: reutilizar o código e encapsular as funcionalidades (não se vê os planos) • Se dois agentes têm as mesmas capacidades, o mesmo código pode ser utilizado nos dois agentes
Definição de uma capacidade capability CapabilityType extends Capability [implements InterfaceName] { // Creencias utilizadas por las capacidades #private data BeliefType belief_name (arg_list); #exports data BeliefType belief_name (arg_list); #imports data BeliefType belief_name (); // Planes, orden es importante #uses plan PlanType; // Eventos #handles event EventType; #posts event EventType reference; #sends event EventType reference; // Subcapacidades #has capability CapabilityType reference; // otros datos y metodos }
Grupo I/IV • É possível fazer a modelagem de grupos e subgrupos em Jack • Os agentes do grupo executam para alcançar o mesmo objetivo • Grupos podem delegar tarefas a subgrupos e subgrupos podem desempenhar diferentes papéis em diferentes grupos • Grupo: • Define os papéis que podem ser desempenhados dentro do grupo • Define os papéis que podem desempenhar • O comportamento do grupo é definido pelos papéis e não pelos subgrupos ou agentes no grupo • Especifica qual objetivo deverá ser alcançado por qual subgrupo ou agente
Grupo II/IV • Papel: • Especifica o comportamento que tem que ser executado pela entidade que desempenha o papel • Plano do grupo: • São executados sempre que um evento ocorre • Define como uma tarefa será executada em termos dos papéis do grupo • Dados do grupo: • Descreve as crenças que são conhecidas por todos do grupo
Grupo III/IV team Company extends Team { #performs role CompanyRole; // minimum of 3 PlatoonRole fillers required. No upper limit #requires role PlatoonRole platoons(3,0); // exactly 1 Commander role filler required #requires role CommandRole command(1,1); // 0 or more ScoutRole fillers required #requires role ScoutRole scout(0,0); : } role PlatoonRole extends Role { #handles event Movement m; #posts event Withdraw w; : }
Grupo IV/IV teamplan CompanyFormationMove extends TeamPlan { #requires role PlatoonRole platoons as left; #requires role PlatoonRole platoons as right; #requires role PlatoonRole platoons as depth; #requires role CommandRole command as hq; #reasoning method establish() { // code to establish the task team for the task } body() { // body of the plan to perform the task } }
Avançado • Raciocínio: • Tem uma máquina de inferência genérica • O básico é a seleção de planos de acordo com os objetivos • É possível estender implementando plug-ins • Comunicação: • Uma mensagem é um objeto Java • Um mensagem é enviado de 1 agente para 1 agente (não existe broadcast) • O protocolo que utiliza é UDP/IP
RETSINA Reusable Environment for Task Structured Intelligent Network Agents
RETSINA • Foi criada em um laboratório de agentes de software da universidade Carnegie Mellon • Infra-estrutura que oferece um conjunto de tipos de agentes que podem ser adaptados para implementar soluções para domínios específicos • Define 3 tipos de arquiteturas • Arquitetura individual do agente • Arquitetura funcional • Arquitetura de infra-estructura
RETSINA • Está integrado ao ambiente de desenvolvimento Microsft Virtual Studio • Ferramenta gráfica que possibilita ao desenvolvedor receber mensagens dos agentes e enviar mensagens KGML para testar seus agentes • Ferramenta gráfica para verificar quais são os agentes em execução e quais são os serviços que oferecem
Requisitos para utilizar RETSINA • Ambiente aberto • Agentes podem entrar e sair • Ambiente dinâmico • A configuração topológica pode mudar • As capacidades do agente podem mudar • A localização do agente pode mudar • Ambiente incerto • O mesmo agente que respondeu a uma mensagem pode não responder se exatamente a mesma mensagem for enviada novamente • Existe redundância de serviços
Quatro tipos básicos de agentes I/II • Agente de Interface • Interage com os usuários, recebe informação dos usuários e mostra resultados • Podem ser implementados como parte do agente de tarefas • Podem representar um dispositivo (ex. PDA) • Agente de Tarefa • Ajuda o usuário a realizar tarefas • Sabem o que deve ser feito e como deve ser feito • Podem requisitar a ajuda de outros agentes
Quatro tipos básicos de agentes II/II • Agente de Informação • Proporciona acesso inteligente as coleções de informações heterogêneas • Fazem a interface entre o sistema e as fontes de dados • Podem implementar algoritmos de “mineração de dados” • Agente “Middle” • Agentes da infra-estrutura • Sabem encontrar onde está um determinado agente • Podem ajudar a juntar agentes que querem um serviço e agentes que sabem executar o serviço
Módulos de um agente • 4 threads em paralelo • Módulo de comunicação e coordenação: • Recebe e envia mensagens • Módulo de planejamento: • Recebe como entrada um conjunto de objetivos e produz um plano que satisfaça os objetivos • Módulo de agenda: • Agenda a execução dos planos • Módulo de execução: • Executa os planos de acordo com suas prioridades e restrições
Arquitetura de Infra-estrutura II/V • Ambiente • Representa os computadores, o sistema operacional, a infra-estrutura de rede, etc. • Devem ser totalmente transparentes para os agentes • Força o uso de linguagem de programação e de protocolos de comunicação • Infra-estrutura de comunicação • Representam os canais de comunicação entre os agentes (camada de transporte) • Pode utilizar diferentes protocolos de comunicação
Arquitetura de Infra-estrutura III/V • Infra-estrutura ACL • Especifica a linguagem utilizada pelos agentes para enviar mensagens. Ex: FIPA ACL y KQML • Especifica as políticas de interação • A linguagem básica oferecida por Retsina é um subconjunto de KQML ma outras linguagens podem ser oferecidas • Gerência de serviços • Faz a gerência das atividades dos agentes com o objetivo de otimização e verificação de falhas • Gerência dos serviços de instalação de agentes, balanceamento de carga, log, etc.
Arquitetura de Infra-estrutura IV/V • Medidas de rendimento • Identificar os agentes que não estão executando bem • Mede a reputação dos agentes • Pode ser utilizado para redistribuir as tarefas dos agente se verifica que algum está sobrecarregado • Segurança • Objetivo: garantir que os agentes não executem de maneira que não devem • Estabelece segurança na comunicação entre os agentes • Garantir a privacidade das mensagens • Estabelece segurança da infra-estrutura • Não podem acessar a dados da infra-estrutura (ex. não podem modificar os nomes, o conteúdo das mensagens que recebem)
Arquitetura de Infra-estrutura V/V • Mapeamento de nomes a locais de agentes • Serve para permitir a busca de um agente por seu nome • Faz o mapeamento do nome dos agentes ao local onde o agente está executando • Mapeamento das capacidades dos agentes • Serve para permitir a busca de um agente pela sua capacidade • Páginas amarelas • Interação entre agentes • Possibilita que diferentes agentes implementados com diferentes arquiteturas se comuniquem • Funciona como um intermediário entre o agente e a arquitetura
Aplicações desenvolvidas com RETSINA • Gerência de carteira de clientes • Leilão para compra de vários livros de uma só vez • Planejamento logístico em operações militares • Gestão personalizada de informação n web