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 Adotas a intenção de fazer as cópias as 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 ISMA Viviane Torres da Silva

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. Ø Crença foi criada (existe lixo em X) +localização (lixo, X): eventos de ativação localização (robô, X) & localização (lixeira, Y) contexto <-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 processados,

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, se “ativa” os fatos do futuro Ø trem (A, E) ^ semáforo (vermelho) trem (A, E) ^ semáforo (verde) ^ mover (E, A, S) trem (A, S) 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) y 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, permissão, moveu] – mover

Exemplo: Trens e Estações Interfaces: Ø estação (mover, permissão, moveu)[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 (T, L) ^ 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 (T, L) ^ 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