350 likes | 485 Views
Implementando SMA. Viviane Torres da Silva viviane.silva@ic.uff.br 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
E N D
Implementando SMA Viviane Torres da Silva viviane.silva@ic.uff.br 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 viviane.silva@ic.uff.br 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
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 Viviane Torres da Silva
JADEJava 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
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
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 viviane.silva@ic.uff.br 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
Se o agente recebe uma mensagem de outro agente pedindo para executar uma ação em um determinado momento Se o agente crê que o outro agente é um amigo e o agente sabe executar a ação e no momento não está executando nenhuma ação então o agente cria o compromisso de executar a ação Exemplo: Regra de compromisso COMMIT( ( agent, REQUEST, DO(time, action)),;;; msg condition ( B, [now, Friend agent] AND CAN(self, action) AND NOT [time, CMT(self, anyaction)] ), ;;; mental condition self, 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 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. • +localização (lixo, X): localização (robô, X) & localização (lixeira, Y) <-recolher (lixo); !localização (robô, Y); jogar (lixo,lixeira). Crença foi criada (existe lixo em X) eventos de ativação contexto Objetivo a ser alcançado corpo
AgentSpeak(L) Objetivo criado • +!localização (robô, Y): 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).