Linguagens de Programação para SMA
Viviane Torres da Silva
[email protected]
http://www.ic.uff.br/~viviane.silva/isma
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
então o agente cria o compromisso de executar a ação
self,
DO(time, action) )
Agent0

É possível implementar a comunicação e a cooperação entre os
agentes

Mas, ainda é um protótipo de linguagem de programação para
ilustrar alguns conceitos

A linguagem PLACA estende a linguagem Agent0:
– Possibilita o agente criar planos
Placa
Se um agente te pede para fazer cópias
(((self ?agent REQUEST (?t (xeroxed ?x)))
Se você sabe fazer
(AND (CAN-ACHIEVE (?t xeroxed ?x)))
(NOT (BEL (*now* (vip ?agent))))
Se não é um agente VIP
Adota a intenção de fazer as cópias às 5pm
(adoção do plano)
((ADOPT (INTEND (5pm (xeroxed ?x)))))
Informa ao agente que tem
a intenção de fazer as cópias
((?agent self INFORM
(*now* (INTEND (5pm (xeroxed ?x)))))))
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
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.
eventos de ativação

Crença foi criada (existe lixo em X)
contexto
+localização (lixo, X):
localização (robô, X) & localização (lixeira, Y)
<-recolher (lixo);
Objetivo a ser alcançado
!localização (robô, Y);
corpo
jogar (lixo,lixeira).
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).
Execução de um programa em AgentSpeak(L)

Se existem mais eventos para serem processados, selecionar
um (Se).

Retirar da biblioteca de planos todos os planos ativados pelo
evento e que podem ser executados com as circunstancias
atuais.

Selecionar um plano (S0), criando uma intenção de execução

Executar o plano, selecionando a primeira intenção (Si). Se
encontrar uma ação, executar a ação, se encontrar um objetivo
incluir na lista de eventos que serão processados.
METATEM

É uma linguagem para implementação de sistemas multiagentes que utiliza lógica temporal para especificar o
comportamentos dos agentes

Lógica temporal é uma lógica clássica com operadores modais
para descrever como a verdade sobre as proposições podem
variar no tempo

As especificações são executadas para gerar o comportamento
dos agentes
METATEM

importante (agentes)
– É verdade agora e sempre será que os agentes são importantes

 importante (Metatem)
– Em algum momento no futuro Metatem será importante

importante (Prolog)
– Em algum momento no passado, Prolog foi importante
Significa desde que (since)

( amigos (eu, você)) S brigar (eu, você)
– Não somos amigos desde o dia que brigamos
Significa até que (until)

( amigos (eu, você)) U desculpar-se (você)
– Não somos amigos até que você se desculpe (em algum momento no futuro)

 desculpar-se (você)
– Amanha (no próximo estado) você se desculpará
METATEM


Um programa em Metatem é um conjunto de regras
Executando regras:
Passado  Futuro
Se verifica se os fatos do passado são verdades
 Se o passado de uma regra é verdade, “ativa-se” os fatos do
futuro

trem (E, T) ^ semáforo (vermelho)  trem (E, T)
trem (E, T) ^ semáforo (verde) ^ mover (T,E,S)  trem (S, T)
noivos (Ana, João)   casados (Ana, João)
Componentes de um objeto

Definição da interface:
– define quais mensagens o objeto reconhece (recebe) e quais produz
(envia)
Ex:pilha (colocarElemento, tirarElemento) [pilhaCheia, elementoPosto]
– mensagens que reconhece: colocarElemento e tirarElemento
– mensagens que produz: pilhaCheira e elementoPosto

Definição interna:
– o conjunto de regras do objeto
Exemplo: Trens e Estações
Interfaces:

estação (mover, permissão)[moveu]
– mover (E, T) : mensagem que pede a permissão para o trem T moverse para a estação E
– permissão (E, T) : mensagem que permite que o trem T se mova para
a estação E
– moveu (E, T) : mensagem que informa que o trem T se moveu para a
estação E
– tem (E,T): mensagem que informa que o trem T está na estação E
– linha (L, T) : mensagem que informa que a linha L tem o trem T
– próxima (E, L, F): msg que informa que a estação adjacente a E é F na
linha L.
Regras:
1.
Se a estação tem o trem e o trem não se moveu, o trem segue
na estação
tem (E,T) ^ ¬ moveu (F, T)  tem (E,T)
Exemplo: Trens e Estações
Regras:
2. Se um trem acaba de mover-se para uma estação, a estação
tem o trem
moveu (E,T)  tem (E,T)
3.
Se uma estação tem um trem e acaba de receber a permissão
de mover o trem para a próxima estação, o trem estará na
próxima estação no futuro
tem (E,T) ^ permissão (F, T) ^ línea (L,T) ^ próxima (E, L, F) 
moveu (F,T)
4.
Se um trem acaba de mover-se para uma estação, a estação
não pode dar a permissão para nenhum trem mover-se para a
estação
moveu (E, T)  ¬ permissão (E, T’)
Download

Diapositiva 1 - Instituto de Computação