Agent-Oriented Programming Luanda Philippi Remáculo [email protected] Sabrina Schürhaus [email protected] Agent-Oriented Programming - AOP Shoham (1993); Agente = entidade que envia e processa mensagens; Diferença entre agentes e objetos: – Os campos de uma agente são restritos; – Nos agentes, cada mensagem é também definida em termos de atividades mentais. Um agente pode ser considerado um objeto, no entanto muitas idéias da teoria dos objetos são esquecidas na AOP. Sistemas Multiagentes Criação de entidades de software autônomas - Agentes; Agentes: interagem através de um ambiente compartilhado por outros agentes de uma sociedade, e atuam sobre esse ambiente, alterando seu estado. Sistemas Multiagentes Forma natural que permite analogias diretas com o mundo real e com a forma como raciocinamos sobre ele; Sistemas computacionais vistos como ambientes onde os agentes atuam; Nesses ambientes os agentes podem formar grupos, em um nível mais alto de abstração formando comunidades ou sociedades de agentes. Sistemas Multiagentes Tipos: – Cognitivos: • Poucos agentes; • Cada agente é um sistema sofisticado e computacionalmente complexo. – Reativos: • Grande número de agentes muito simples; • Seus comportamentos podem ser descritos como autômatos finitos simples; • Agem sob um esquema estímulo-resposta. Sistemas Multiagentes Formalismos: – Teoria dos Jogos: • Ferramentas para a decisão de qual estratégia em um jogo abstrato de dois ou mais jogadores é a melhor para os jogadores. – Lógica Matemática: • Lógicas modais complexas para o projeto e desenvolvimento de agentes. Sistemas Multiagentes Disciplinas envolvidas no desenvolvimento de SMA: – Psicologia; – Ciência cognitiva; – Sociologia; – Entomologia; – Economia; – Teoria das Organizações; – Teoria dramática; – Antropologia. Sistemas Multiagentes Agente: – Estados Mentais: • • • • Crenças; Objetivos; Intenções; Compromissos. Sistemas Multiagentes Características: – Técnicas automáticas de decomposição de tarefas e computação distribuída; – Impossível prever todos os casos quem devem ser tratados; – O agente é dito como autônomo; – Os agentes possuem conhecimento incompleto do seu ambiente e seguem o princípio da racionalidade limitada. Sistemas Multiagentes Aspectos para compreensão de agentes nos SMA cognitivos: – Percepção; – Ação; – Comunicação; – Representação; – Motivação; – Deliberação; – Raciocínio e aprendizagem. Arquitetura BDI - Beliefs, Desires, Intentions. Crenças: agente sabe sobre o estado do ambiente e dos agentes naquele ambiente; Desejos: estados do mundo que o agente quer atingir; Intenções: seqüências de ações específicas que um agente se compromete a executar para atingir determinados objetivos. Linguagem AgentSpeak Projetada para programação de agentes BDI na forma de sistemas de planejamento reativos; É extensão natural e elegante de programação em lógica para arquitetura de agentes BDI. Linguagem AgentSpeak(L) Um agente AgentSpeak(L) corresponde a especificação de um conjunto de crenças (base inicial do agente) e de um conjunto de planos (biblioteca de planos) AgentSpeak(L) distingue 2 tipos de objetivos: – Realização(!); – Teste(?). Linguagem AgentSpeak(L) Elementos da linguagem: – Eventos ativadores (‘+’) e (‘-’); – Planos (evento ativador + contexto); +concert(A,V) : likes(A) – !book_tickets(A,V). +!book_tickets(A,V) : ¬busy(phone) – call(V); : : :; !choose_seats(A,V). Estudo de Caso Robôs coletores de Lixo em Marte 2 robôs coletando lixo em Marte – r1: procura por lixos e quando encontra leva até r2; – r2 está ao lado de um incinerador. Agent r2 +garbage(r2) : true – <- burn(garb). Agent r1 Beliefs pos(r2,2,2). checking(slots). Estudo de Caso Robôs coletores de Lixo em Marte Plans +pos(r1,X1,Y1) : checking(slots) & not(garbage(r1)) (p1) – <- next(slot). +garbage(r1) : checking(slots) (p2) – <- !stop(check); – !take(garb,r2); – !continue(check). +!stop(check) : true – <- ?pos(r1,X1,Y1); – +pos(back,X1,Y1); – -checking(slots). (p3) Estudo de Caso Robôs coletores de Lixo em Marte +!take(S,L) : true (p4) – <- !ensure_pick(S); – !go(L); – drop(S). +!ensure_pick(S) : garbage(r1) (p5) – <- pick(garb); – !ensure_pick(S). +!ensure_pick(S) : true <- true. (p6) Estudo de Caso Robôs coletores de Lixo em Marte +!continue(check) : true – – – – (p7) <- !go(back); -pos(back,X1,Y1); +checking(slots); next(slot). +!go(L) : pos(L,Xl,Yl) & pos(r1,Xl,Yl) (p8) – <- true. +!go(L) : true – <- ?pos(L,Xl,Yl); – moveTowards(Xl,Yl); – !go(L). (p9) Linguagens de Programação a Agentes Agent-0; PLACA Extension; Agente-K Extension; Agent(): Arquitetura BDI + LISP; Concurrent METATEM; STAPLE; ConGolog; MINERVA; 3APL; Dribble; AgentTalk; JAVA Considerações Finais Recente; Há muito o que desenvolver; Paradigma de Orientação a Agentes; Referências Bibliográficas Bordini e Vieira, Linguagens de Programação Orientadas a Agentes: uma introdução baseada em AgenteSpeak(L); http://www.inf.ufrgs.br/~revista/docs/rita10/rita_v10_n1_p7a38.pdf http://www.cs.berkeley.edu/~davidp/cs263/