Implementando SMA Viviane Torres da Silva [email protected] http://www.ic.uff.br/~viviane.silva/sma Motivação Como implementar sistemas multi-agentes (SMA)? – Não existe um linguagem de implementação que possa ser utilizada para implementar todas as características dos agentes – Solução: utilizar orientação a objetos Como implementar os agentes, o ambiente, os papéis … utilizando orientação a objetos? Como fazer o mapeamento de agentes para classes, organizações para clases, ...? Utilizar plataformas, arquiteturas, frameworks orientados a objetos específicos para implementar SMA Exemplos: – ASF, Jade, Jadex, Jack, Retsina, …. Arquitetura BDI Viviane Torres da Silva [email protected] http://www.ic.uff.br/~viviane.silva/sma 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 Arquitetura BDI Plataformas e Frameworks Que utilizam BDI: – – – – ASF Jack Retsina Jadex Que não utilizam BDI: – Jade ASF Framework Agent Society Framework ASF Objetivo: dar suporte a implementação de agentes, organizações, papéis e ambiente Como implementar ... – – – – – as entidades, suas propriedades, seus relacionamentos, a interação entre as entidades e a execução interna das entidades Entidades Objetos – Atributos e métodos Agentes – Objetivos, crenças, planos e ações Organizações – Objetivos, crenças, planos, ações e axiomas Papel de agente – Objetivo, crença, deveres, direitos e protocolos Papel de objetos – Atributos e métodos Ambiente – Atributos e métodos Aspectos Estruturais do ASF Fornece um conjunto de módulos que devem ser estendidos para implementar a aplicação Cada módulo representa uma entidade do SMA Instanciação da aplicação: – para implementar uma classe de agente da aplicação estende-se o módulo Agent – para implementar uma classe de organização da aplicação estende-se o módulo Organization – ... Estrutura do ASF ISMA Viviane Torres da Silva Exemplo JADE Java Agent Development Framework http://jade.tilab.com/ JADE Jade é um framework para o desenvolvimento de SMA Versão 3.6.1 Inclui: – Um ambiente de execução onde os agentes JADE "vivem" e que deve estar ativo em um host antes que um agente possa ser executado – Uma biblioteca de classes que programadores podem usar para desenvolver agentes – Um conjunto de ferramentas gráficas que permite a administração e o monitoramento das atividades dos agentes em execução Conceitos Importantes JADE deve ser utilizado para … – implementar sistemas distribuídos – agentes móveis Contêiner – Instância de um ambiente Jade – É onde os agentes executam – Ao iniciar o Jade, um MainContainer é criado Plataforma – Conjunto de contêineres ativos Contêineres e Plataformas Modelo FIPA JADE segue o modelo de desenvolvimento da FIPA Todo MainContainer tem um AMS e um DF Agent Management System (AMS) – Agente que exerce o controle sobre o acesso e o uso da plataforma – Existe um único AMS por plataforma – Mantém a lista de identificadores dos agentes (AID) que estão na plataforma – Todo agente deve se registrar no AMS Directory Facilitator (DF) – Oferece o serviço de páginas amarelas na plataforma Classe Agent Representa a classe base para a definição de agentes Para o desenvolvedor, um agente Jade é uma instância de uma classe Java que estende a classe Agent Já oferece todas as interações básicas da plataforma (registro, configuração, etc...) Oferece um conjunto de métodos para a implementação do comportamento do agente Classe Behaviour Todas as tarefas dos agentes são executadas por meio de "comportamentos" Um comportamento é um objeto da classe Behaviour O agente adiciona um comportamento com o método addBehaviour(X) Comportamentos podem ser adicionados a qualquer momento com o método removeBehavior(X) Comunicação entre os agentes I/III A comunicação é assíncrona e utiliza FIPA ACL Os objetos enviados são instâncias de ACLMessage Para enviar uma mensagem se chama o método send() Jadex http://vsis-www.informatik.uni-hamburg.de/projects/jadex/ Jadex Jadex = Jade + BDI No Jadex os agentes são orientados a objetivos (e não a comportamentos como é o caso de agentes JADE) Desenvolvido na Universidad de Hamburg – Versão 0.96 É possível utilizar todas as ferramentas JADE mais: – Ferramenta BDI Viewer possibilita ver o estado interno dos agentes, i.e., seus objetivos, planos e crenças – Ferramenta Jadex Introspector possibilita vigiar o comportamento do agente e também modificar a execução dos agentes Jadex Implementando o agente Criar os tipos de arquivos – ADF (Agent Definition File): arquivo XMI que descreve tipos (ou classes) de agentes – Classes Java: arquivos que implementam os planos dos agentes Linguagens de Programação para SMA Viviane Torres da Silva [email protected] http://www.ic.uff.br/~viviane.silva/sma Algumas linguagens de programação Agent0 Placa AgentSpeak Metatem A idéia de uma linguagem de programação para SMA 1993: Yoav Shoham propôs a criação de um novo paradigma de programação baseado nos aspectos sociais da computação Programação orientada a agentes: os agentes são as entidades da linguagem de programação Programar os agentes em termos de seus estados mentais – Crenças, desejos (ou objetivos) e intenções (ou planos) Primeira linguagem de programação: Agent0 Agent0 Um agente tem: – – – – Um conjunto de capacidades Um conjunto de crenças Um conjunto de compromissos Um conjunto de regras de compromissos São as regras que determinam se o agente executará uma ação Cada regra de compromisso contém: – Uma condição de mensagem que deve ser comparada com as mensagens recebidas pelo agente – Uma condição do estado mental que deve ser comparada com as crenças do agente – Uma ação que o agente terá o compromisso de executar se as condições forem satisfeitas Agent0 As ações podem ser: – Privadas: ações internas do agente – De comunicação: enviar mensagens Uma mensagem pode ser de 3 tipos: – Requests: um pedido para fazer uma ação – Unresquests: uma negociação para fazer uma ação – Inform: um envio de uma informação Agent0 é uma extensão Lisp Exemplo: Regra de compromisso Se o agente recebe uma mensagem de outro agente pedindo para executar uma ação em um determinado momento COMMIT( ( agent, REQUEST, DO(time, action)),;;; msg condition Se o agente crê que o outro agente é um amigo e o agente sabe executar a ação e ( B, no momento não está [now, Friend agent] AND executando nenhuma CAN(self, action) AND ação NOT [time, CMT(self, anyaction)] ), ;;; mental condition self, então o agente cria o compromisso de executar a ação DO(time, action) ) AgentSpeak(L) Linguagem baseada em eventos e ações O comportamento do agente é implementado com a linguagem As crenças, os objetivos (ou desejos) e os planos (ou intenções) podem ser descritos em AgentSpeak – Crenças: estado do agente, do ambiente e de outros agentes – Objetivos: estado que o agente quer alcança ou verificar – Planos: programa para alcançar os objetivos Um programa em AgentSpeak consiste de um conjunto de crenças e um conjunto de planos AgentSpeak(L) Exemplo: – – – – Existem faixas por onde podem estar os carros As faixas podem ter lixo Robôs têm a obrigação de pegar o lixo e colocar em lixeiras Robôs podem mover-se de uma faixa para a outra Crenças: Crenças atômicas: “classes” para criar instancias – Localização (robô, faixa), localização (carro, faixa), adjacente (faixa, faixa) Crenças básicas: instâncias das classes – adjacente (a, b), localização (robôA, a) AgentSpeak(L) Objetivo: Objetivo para ser alcançado: !g(t) – Agente quer alcançar um estado onde g(t) é verdade – !limpo (b) : agente quer que a faixa b esteja limpa Objetivo para ser testado: ?g(t) – Agente quer verificar se g(t) é uma crença verdadeira – ?localização (carro, b) : agente pergunta se existe algum carro na faixa b Novos objetivos e novas crenças podem ser criados e objetivos e crenças podem ser apagados. – +localização (lixo, a) : criação da crenças que diz que existe lixo na faixa a – +!limpo (a) : criação do objetivo para limpar a faixa a ISMA Viviane Torres da Silva AgentSpeak(L) Plano Tem uma cabeça e um corpo Cabeça consiste de: – Eventos de ativação do plano: criação ou destruição de crenças e objetivos. – Contexto: as crenças que devem ser verdadeiras para executar o plano. Corpo consiste de: – Seqüência de ações e objetivos. Crença foi criada (existe lixo em X) eventos de ativação +localização (lixo, X): contexto localização (robô, X) & localização (lixeira, Y) <-recolher (lixo); Objetivo a ser alcançado !localização (robô, Y); jogar (lixo,lixeira). corpo AgentSpeak(L) +!localização (robô, Y): Objetivo criado localização (robô, Y) <- verdade +!localização (robô, Y): localização (robô, X) & (não (X = Y)) & adjacente (X, Z) & (não (localização (carro, Z))) <- mover (X, Z); +!localização (robô, Y).