Linguagens de Programao para SMA Viviane Torres da

  • Slides: 21
Download presentation
Linguagens de Programação para SMA Viviane Torres da Silva viviane. silva@ic. uff. br http:

Linguagens de Programação para SMA Viviane Torres da Silva viviane. silva@ic. uff. br http: //www. ic. uff. br/~viviane. silva/2010. 1/isma

Algumas linguagens de programação Ø Agent 0 Ø Placa Ø Agent. Speak Ø Metatem

Algumas linguagens de programação Ø Agent 0 Ø Placa Ø Agent. Speak Ø Metatem

A idéia de uma linguagem de programação para SMA Ø 1993: Yoav Shoham propôs

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: Agent 0

Agent 0 Ø Um agente tem: – Um conjunto de capacidades – Um conjunto

Agent 0 Ø 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

Agent 0 Ø As ações podem ser: – Privadas: ações internas do agente –

Agent 0 Ø 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 Ø Agent 0 é uma extensão Lisp

Exemplo: Regra de compromisso Se o agente recebe uma mensagem de outro agente pedindo

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

Agent 0 Ø É possível implementar a comunicação e a cooperação entre os agentes

Agent 0 Ø É 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 Agent 0: – Possibilita o agente criar planos

Placa Se um agente te pede para fazer cópias (((self ? agent REQUEST (?

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 5 pm (adoção do plano) ((ADOPT (INTEND (5 pm (xeroxed ? x))))) Informa ao agente que tem a intenção de fazer as cópias ((? agent self INFORM (*now* (INTEND (5 pm (xeroxed ? x)))))))

Agent. Speak(L) Ø Linguagem baseada em eventos e ações Ø O comportamento do agente

Agent. Speak(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 Agent. Speak – 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 Agent. Speak consiste de um conjunto de crenças e um conjunto de planos

Agent. Speak(L) Ø Exemplo: – Existem faixas por onde podem estar os carros –

Agent. Speak(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)

Agent. Speak(L) Objetivo: Ø Objetivo para ser alcançado: !g(t) – Agente quer alcançar um

Agent. Speak(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

Agent. Speak(L) Plano Ø Tem uma cabeça e um corpo Ø Cabeça consiste de:

Agent. Speak(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) Ø +localização (lixo, X): contexto localização (robô, X) & localização (lixeira, Y) <-recolher (lixo); !localização (robô, Y); Objetivo a ser alcançado jogar (lixo, lixeira). corpo

Agent. Speak(L) Ø Ø Objetivo criado +!localização (robô, Y): localização (robô, Y) <- verdade

Agent. Speak(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 Agent. Speak(L) Ø Se existem mais eventos para serem

Execução de um programa em Agent. Speak(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 (S 0), 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

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

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

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) ^ 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

Componentes de um objeto Ø Definição da interface: – define quais mensagens o objeto reconhece (recebe) e quais produz (envia) Ex: pilha (colocar. Elemento, tirar. Elemento) [pilha. Cheia, elemento. Posto] – mensagens que reconhece: colocar. Elemento e tirar. Elemento – mensagens que produz: pilha. Cheira e elemento. Posto Ø Definição interna: – o conjunto de regras do objeto

Exemplo: Trens e Estações Interfaces: Ø estação (mover, permissão)[moveu] – mover (E, T) :

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 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) ^ linha (L, T) ^ próxima (E, L, F) ^ ¬ moveu (F, T) tem (E, T) E e F são estações

Exemplo: Trens e Estações Regras: 2. Se um trem acaba de mover-se para uma

Exemplo: Trens e Estações Regras: 2. Se um trem acaba de mover-se para uma estação, a estação tem o trem estação (E) ^ 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) ^ línea (L, T) ^ próxima (E, L, F) ^ permissão (F, T) 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 (E) ^ moveu (E, T) ¬ permissão (E, T’)

METATEM Concorrente Ø Existem vários objetos enviando mensagens, recebendo mensagens e executando assincronamente Ø

METATEM Concorrente Ø Existem vários objetos enviando mensagens, recebendo mensagens e executando assincronamente Ø A execução de um objeto não está orientada à mensagens. Sua execução é independente das mensagens que recebe e que envia. Ø Um objeto pode modificar sua interface dinamicamente, isso é, as mensagens que reconhece e como as manipula