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).
Download

Introdução a Sistemas Multi-Agentes - Instituto de Computação