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/
Download

AgentSpeak