Você está na página 1de 33

See

discussions, stats, and author profiles for this publication at: http://www.researchgate.net/publication/220162238

Linguagens de Programao Orientadas a


Agentes: Uma Introduo Baseada em
AgentSpeak(L).
ARTICLE JANUARY 2003
Source: DBLP

CITATIONS

DOWNLOADS

VIEWS

648

108

2 AUTHORS:
Rafael H. Bordini

Renata Vieira

Pontifcia Universidade Catlica do Rio Gra

Pontifcia Universidade Catlica do Rio Gra

162 PUBLICATIONS 2,421 CITATIONS

151 PUBLICATIONS 1,166 CITATIONS

SEE PROFILE

SEE PROFILE

Available from: Rafael H. Bordini


Retrieved on: 09 July 2015

Linguagens de Programao Orientadas a Agentes:


uma introduo baseada em AgentSpeak(L)
Rafael H. Bordini 1 2
Renata Vieira 3

Resumo: Este artigo apresenta uma introduo ao paradigma de programao orientada a agentes com base em uma linguagem particular chamada AgentSpeak(L).
Exemplos de agentes programados nessa linguagem so fornecidos para facilitar a
compreenso da linguagem. Conceitos bsicos de sistemas multiagente e agentes
inteligentes so dados de forma a fornecer ao leitor um material auto-contido. O
artigo apresenta ainda um apanhado geral dos diversos trabalhos de pesquisa sobre
AgentSpeak(L) que esto em desenvolvimento, bem como referncias a diversas outras linguagens de programao orientadas a agentes.
Palavras-chave: Programao Orientada a Agents, Agentes Cognitivos, Arquitetura BDI, AgentSpeak(L).

Abstract: This paper presents an introduction to the paradigm of agent-oriented


programming based on a particular language called AgentSpeak(L). Examples of
agents programmed in that language are given in order to facilitate the understanding
of the language. Basic concepts on multi-agent systems and intelligent agents are
given so as to provide the reader with a self-contained material. The paper also presents an overview of the various research projects on AgentSpeak(L) currently under
development, and it points to several other agent-oriented programming languages.
Keywords: Agent-Oriented Programming, Cognitive Agents, BDI Architecture,
AgentSpeak(L).

1 Introduo
A idia de Linguagens de Programao Orientadas a Agentes teve seu incio marcado
pelo importante artigo de Yoav Shoham, intitulado Agent-Oriented Programming, que foi
publicado em 1993 [55]. A proposta deste novo paradigma de programao foi inspirada
na viso social de computao, discutida em profundidade pela comunidade de Inteligncia Artificial Distribuda, e Sistemas Multiagente (SMA) em particular [65, 62]. O trabalho
1 Department

of Computer Science, University of Liverpool, United Kingdom


{R.Bordini@csc.liv.ac.uk}
2 Programa de Ps-Graduao em Cincia da Computao, UFRGS, Brasil
{bordini@inf.ufrgs.br}
3 Programa Interdisciplinar de Ps-Graduao em Computao Aplicada, UNISINOS, Brasil
{renata@exatas.unisinos.br}

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

na rea de SMA, em particular a arquitetura BDI (Beliefs-Desires-Intentions, ou crenasdesejos-intenes), introduzida na seo 2, a base da proposta de Shoham. Sua proposta
defende que da mesma forma que noes mentalsticas (tais como crenas, desejos e intenes) auxiliam o nosso raciocnio quotidiano sobre as atividades dos seres humanos, uma
certa antropomorfizao da maneira como os programadores descrevem componentes (chamados agentes) de um sistema computacional deve, em princpio, facilitar a concepo
de sistemas complexos. De forma geral, os SMA tm como um de seus objetivos a concepo de sistemas complexos, naturalmente distribudos, situados em ambientes dinmicos,
imprevisveis e parcialmente observveis. As vantagens desta forma de se conceber sistemas computacionais discutida, por exemplo, em [68]; uma discusso mais especfica sobre
linguagens de programao orientadas a agentes pode ser encontrada em [43].
A antropomorfizao da concepo de sistemas computacionais proposta pela rea
de SMA no para no nvel de um agente individual dentro do sistema, atribuindo-se noes
mentalsticas a estes. No nvel social (i.e, do conjunto de agentes), as analogias continuam,
de forma que noes de sociedades humanas como papis, grupos, organizaes, e assim
por diante [34] tambm devem ser utilizadas no projeto de sistemas computacionais. Isto
sugere a necessidade de uma completa reformulao do processo de engenharia de software,
e no somente das linguagens de programao a serem utilizadas. Com isto, muitos trabalhos acadmicos tem recentemente se concentrado no que se chama engenharia de software
orientada a agentes4 . Este artigo no abrange esse contexto, concentrando-se especificamente em linguagens de programao orientadas a agentes. No entanto, vale mencionar que
a proposta mais conhecida para engenharia de software orientada a agentes a apresentada
em [67].
Este artigo ir apresentar, em particular, a linguagem AgentSpeak(L), proposta inicialmente por [48] e posteriormente desenvolvida numa srie de trabalhos (mencionados na
Seo 5.1). Essa linguagem inspirada na arquitetura BDI, e os conceitos utilizados na
linguagem so bastante fiis aos elementos dessa arquitetura, bem como s idias da teoria
filosfica que a embasam. A sintaxe da linguagem bastante elegante, consistindo de uma extenso do paradigma de programao em lgica5 atravs uma notao muito clara. A linguagem AgentSpeak(L) usada aqui para introduzir conceitos que so utilizados, com algumas
variaes, na maioria das linguagens de programao orientadas a agentes. Ao apresentar
uma linguagem particular em detalhes, possvel mostrar exemplos de programas utilizando
essa linguagem. Este artigo apresenta dois exemplos de programas AgentSpeak(L); os exemplos so simples, servindo apenas para facilitar a compreenso das construes bsicas da
linguagem.
4 Existe uma srie de workshops com esse tema, cuja pgina web <http://www.csc.liv.ac.uk/~mjw/
aose/>.
5 Este texto assume uma certa familiaridade do leitor com linguagens de programao em lgica, como Prolog por
exemplo.

RITA Volume 10 Nmero 1 2003

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

Este texto est organizado da seguinte maneira. A prxima seo introduz alguns conceitos bsicos sobre agentes BDI, o tipo de agente cognitivo para o qual voltada a linguagem
AgentSpeak(L), apresentada na Seo 3. A Seo 4 mostra dois exemplos de programas em
AgentSpeak(L), com o objetivo de facilitar a compreenso dos componentes bsicos da linguagem. Antes de uma breve concluso, a Seo 5 sumariza vrios trabalhos recentes sobre
a linguagem AgentSpeak(L), bem como fornece referncias para diversas outras linguagens
de programao orientadas a agentes.

2 Agentes BDI
A linguagem AgentSpeak(L) foi projetada para a programao de agentes BDI. Esta
seo introduz os conceitos bsicos da rea de agentes e sistemas multiagente e depois
concentra-se em agentes BDI, provendo o conhecimento bsico da rea para a compreenso de algumas noes da linguagem AgentSpeak(L). Uma verso bem mais detalhada desta
introduo pode ser encontrada em [11].
2.1 Conceitos Bsicos
A rea de sistemas multiagente ocupa-se da construo de sistemas computacionais
a partir da criao de entidades de software autnomas, denominadas agentes. Os agentes
interagem atravs de um ambiente compartilhado por outros agentes de uma sociedade, e
atuam sobre esse ambiente, alterando seu estado.
Como cada agente possui um conjunto limitado de capacidades especficas e objetivos
prprios em relao aos estados do ambiente que quer atingir, mecanismos para a interao
e coordenao dessas entidades so necessrios, pois, em geral, os agentes no conseguem
atingir todos seus objetivos isoladamente. Por exemplo, atingir um acordo, para que dois
ou mais agentes cooperem na resoluo de um problema comum entre eles, uma forma de
coordenar as atividades para atingir o objetivo comum da forma mais eficaz possvel. Dessa
forma, possvel para os projetistas de sistemas computacionais a criao de sistemas complexos de forma naturalmente distribuda e bottom-up. Contudo, criar mecanismos genricos
para a coordenao de tais agentes para que o sistema como um todo (em geral chamado de
uma sociedade de agentes) funcione de forma adequada e eficiente um dos grandes desafios
da rea. Outro grande desafio a especificao interna de um agente, em que tipicamente
se deseja uma representao simblica daquilo que o agente sabe sobre o ambiente (e sobre
os outros agentes naquele ambiente), bem como daquilo que o agente pretende atingir (sua
motivao).
Existem dois grandes tipos de SMA: os reativos [23] e os cognitivos (como os que
sero abordados ao longo deste texto). SMA reativos seguem a idia de que um comporta-

RITA Volume 10 Nmero 1 2003

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

mento inteligente em um sistema emerge da interao entre um grande nmero de agentes


muito simples; a principal influncia nesse tipo de trabalho vem da entomologia (estudo dos
insetos). Nesses sistemas, os agentes no possuem uma representao explcita do estado do
ambiente e dos outros agentes, nem da histria de suas aes anteriores; eles tm comportamentos que podem ser descritos como autmatos finitos simples, e possuem um conjunto
de regras que mapeiam percepes do ambiente diretamente em aes sobre este (os agentes
agem sob um esquema estmulo-resposta). J os SMA cognitivos em geral possuem tipicamente poucos agentes, dado que cada agente um sistema sofisticado e computacionalmente
complexo.
Outra diviso bem clara na comunidade de SMA est nos formalismos empregados
pelos pesquisadores. De um lado, esto os pesquisadores que utilizam Teoria do Jogos para o
projeto e coordenao de agentes. De outro lado, existem os pesquisadores que usam lgica
matemtica (ou representaes baseadas em lgica) como a base de seus trabalhos. Teoria
dos Jogos uma rea da matemtica que possui ferramentas para a deciso de qual estratgia
em um jogo abstrato de dois ou mais jogadores a melhor para os jogadores. Essas ferramentas so muito usadas em Teoria da Deciso, na rea de Economia, e de l foram trazidas
para o contexto de coordenao de agentes em SMA [54]. Por outro lado, na abordagem
de SMA baseada em lgica, utiliza-se, em geral, lgicas modais bastante complexas (veja,
por exemplo, [64]) para o projeto e desenvolvimento de agentes. Nessa abordagem a coordenao pode ser obtida atravs de um mecanismo de raciocnio social. Raciocnio social
qualquer raciocnio realizado por um agente a cerca dos outros agentes na sociedade (um
trabalho recente na rea [53]). Os trabalhos sobre raciocnio social normalmente tem como
base o trabalho sobre dependncia social de Castelfranchi [15, 16].
A pesquisa em SMA essencialmente de natureza multidisciplinar. Cada um destes
campos de trabalho em SMA obteve inspirao em uma ou mais disciplinas alm de Cincia
da Computao, tais como: psicologia, cincia cognitiva, sociologia, entomologia, economia, teoria das organizaes, teoria dramtica, antropologia (veja [10]), entre outras. Em
particular, a inspirao em sociologia marca a transio de sistemas de inteligncia artificial
tradicionais (que so monolticos) para sistemas multiagente. A inspirao deve-se corrente
filosfica denominada pragmatismo filosfico que permeia todo o trabalho contemporneo
das cincias sociais, e que concebe toda atividade humana, inclusive a cognio, como uma
prtica social, ou seja, algo que somente se d em um processo de interao entre indivduos [39].
Se do ponto de vista filosfico a motivao para os SMA a linha do pragmatismo
filosfico, de um ponto de vista de engenharia de sistemas, a motivao para os SMA a
forma natural para o projeto de grandes sistemas computacionais que resulta das metforas
j introduzidas e que permitem analogias diretas com o mundo real e a forma como raciocinamos sobre ele. Assim, sistemas computacionais so vistos como formados de ambientes

10

RITA Volume 10 Nmero 1 2003

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

(em analogia a ambientes fsicos) onde os agentes atuam, havendo possivelmente a presena
de objetos6 . Nesses ambientes os agentes podem formar grupos, em um nvel mais alto de
abstrao formando comunidades ou sociedades de agentes, e assim por diante.
Do ponto de vista interno do agente tambm se buscam diversas metforas com estados mentais, tais como crenas, objetivos, intenes e compromissos. Agentes deliberam
sobre que objetivos vo atingir, baseados em suas prprias motivaes, e com base nesses
objetivos e observaes do ambiente decidem que aes tomar, e que requisies feitas por
outros agentes aceitar (essas so algumas das caractersticas que diferenciam agentes de objetos). Um agente de um sistema pode ser programado atravs de mltiplos sub-agentes,
assim como agentes formam grupos, grupos formam sociedades e assim por diante. A essa
propriedade, Demazeau [19] se refere como o princpio da recursividade em SMA.
Note que o projeto de um sistema computacional complexo utilizando essas metforas, faz uso de tcnicas automticas de decomposio de tarefas e computao distribuda,
permitindo a implementao de forma mais direta e eficiente para aplicaes naturalmente
distribudas (em geral no existe controle centralizado em sistemas multiagente). Outra caracterstica de aplicaes para as quais os SMA representam uma alternativa interessante de
implementao so sistemas dinmicos, em que impossvel prever todos os casos que devem ser tratados. Nesse aspecto, a caracterstica de autonomia dos agentes fundamental:
as pesquisas em SMA procuram mecanismos para que os agentes gerem e persigam seus
prprios objetivos, permitindo assim a adaptao a situaes imprevistas.
Um agente dito autnomo se ele somente realiza tarefas por deciso prpria, com
base em uma representao de seus interesses individuais7 . Uma classe de sistemas de inteligncia artificial distribuda muito difundida na dcada de 80 chamada de resoluo de
problemas distribuda cooperativa (cooperative distributed problem solving) partia do princpio da benevolncia de agentes: como todos agentes tem um objetivo comum nesses sistemas,
sempre que um agente solicita uma tarefa a outro, esse aceita e procura realizar a tarefa da
melhor maneira possvel dentro de suas capacidades. Isto no necessariamente verdade em
SMA, onde agentes so considerados autnomos e tm interesses prprios.
Outro aspecto importante de agentes em SMA que os agentes possuem conhecimento incompleto do seu ambiente e seguem o princpio da racionalidade limitada (bounded
rationality); ou seja, os agentes no so necessariamente capazes de perceber tudo o que
verdade no estado atual do ambiente (o que para algumas aplicaes essencial), e possuem
uma capacidade e tempo de processamento limitado (i.e., no podem ficar raciocinando indefinidamente sobre o problema at achar a melhor soluo). Esses so aspectos fundamentais
que permitem a utilizao de SMA para implementao de solues para problemas comple6 Ao

contrrio dos agentes, objetos no so entidades autnomas, nem auto-motivadas.


a noo mais simples de autonomia. O conceito de autonomia possui diversas conotaes diferentes, e
muito debatido na literatura da rea.
7 Essa

RITA Volume 10 Nmero 1 2003

11

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

xos e dinmicos.
Dada essa breve introduo rea de SMA, apresentamos agora uma definio de
agente no contexto deste artigo. A Figura 1 permite a visualizao de aspectos importantes
de um agente, apresentando o modelo geral de agente proposto por Wooldridge [63].

Percepo

Ao

Prximo

Estado

Agente

Ambiente

Figura 1. Modelo Geral de Agente (traduzido de [63])


preciso explicar logo de incio que os pesquisadores da rea no possuem uma definio de consenso para o que um agente. Algumas definies ficaram bem conhecidas,
como a de Wooldridge e Jennings [66] e a de Franklin [27]. Ao invs de citar essas definies
que so as mais aceitas, preferiu-se aqui mencionar algumas caractersticas que so importantes (do ponto de vista dos autores) para o conceito de agente na concepo de SMA e que
esto relacionadas com a linguagem AgentSpeak(L) apresentada a seguir. Note que, como
uma rea da inteligncia artificial distribuda, trata-se aqui de sistemas que usam tcnicas
de inteligncia artificial. Devido ao sucesso e grande ateno dada a essa rea na segunda
metade da dcada de 90, o termo agente se difundiu amplamente em diversas reas da Cincia da Computao. Nessa perspectiva, criou-se o termo agentes de software [28], em que
praticamente qualquer processo comunicante passa a ser denominado agente.
So mencionados a seguir alguns aspectos importantes para a compreenso do que
um agente no contexto de SMA cognitivos. Um agente, nesta concepo, um sistema
computacional que capaz de:
percepo: o agente capaz de perceber alteraes no ambiente (conforme ilustrado na
Figura 1);

12

RITA Volume 10 Nmero 1 2003

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

ao: as alteraes no ambiente so provenientes das aes que os agentes realizam constantemente no ambiente; um agente age sempre com o intuito de atingir seus objetivos
(motivao), ou seja, com o intuito de transformar o ambiente de seu estado atual em
um outro estado desejado pelo agente (veja motivao abaixo);
comunicao: umas das aes possveis de um agente comunicar-se com outros agentes
da sociedade (i.e., que compartilham o mesmo ambiente); como os agentes precisam
coordenar suas aes, a comunicao entre eles essencial8 ;
representao: o agente possui uma representao simblica explcita daquilo que acredita
ser verdade em relao ao ambiente e aos outros agentes que compartilham aquele
ambiente;
motivao: como em SMA os agentes so (ou podem ser) autnomos, essencial que exista
no s uma representao do conhecimento do agente, mas tambm uma representao
dos desejos ou objetivos (i.e., aspectos motivacionais) daquele agente; em termos prticos, isto significa ter uma representao de estados do ambiente que o agente almeja
alcanar; como conseqncia, o agente age sobre o ambiente por iniciativa prpria para
satisfazer esses objetivos;
deliberao: dada uma motivao e uma representao do estado atual do ambiente em que
se encontra o agente, esse tem que ser capaz de decidir, dentre os estados de ambiente
possveis de ocorrerem no futuro, quais de fato sero os objetivos a serem seguidos por
ele;
raciocnio e aprendizagem: tcnicas de inteligncia artificial clssica para, por exemplo, raciocnio e aprendizagem podem ser estendidas para mltiplos agentes, aumentando significativamente o desempenho desses, por exemplo no aspecto de deliberao; note que
nem sempre se esperam essas caractersticas de raciocnio e aprendizagem de quaisquer
agentes; a criao de mecanismos de aprendizagem especficos para ambientes multiagente uma rea de pesquisa que ainda requer bastante investigao (existem, contudo,
vrios trabalhos que aplicam aprendizagem por reforo em SMA [61]).

A seguir, apresenta-se a arquitetura BDI, um modelo especfico para o desenvolvimento de agentes inteligentes que satisfazem os critrios usados na definio acima.
8A

comunicao uma caracterstica essencial em SMA cognitivos baseados em lgica. No enfoque de SMA
baseado em Teoria dos Jogos (mencionado anteriormente), possvel que os agentes prescindam de comunicao
para obter coordenao.

RITA Volume 10 Nmero 1 2003

13

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

2.2 A Arquitetura BDI


As mais importantes arquiteturas de agentes deliberativos so baseadas em um modelo de cognio fundamentado em trs principais atitudes mentais que so as crenas, os
desejos, e as intenes (abreviadas por BDI, beliefs, desires e intentions). A fundamentao
filosfica para esta concepo de agentes vem do trabalho de Dennett [20] sobre sistemas
intencionais e de Bratman [12] sobre raciocnio prtico. A primeira implementao de um
sistema baseado nessas idias foi o IRMA (Intelligent Resource-bounded Machine Architecture) [13]. Com base nessa experincia, foi criado outro sistema utilizando a arquitetura BDI,
chamado PRS (Procedural Reasoning System) [29]; o PRS, por sua vez, tem como sucessor
um sistema chamado dMARS [35, 21]. Baseando-se nesses trabalhos, Rao criou a linguagem
de programao AgentSpeak(L). Georgeff e Rao foram os principais autores na elaborao
de arquiteturas abstratas de agente baseadas no modelo BDI [51, 50], bem como na concepo de lgicas BDI [52, 49]. Lgicas BDI so lgicas multimodais com um operador modal
para cada uma das atitudes mentais do modelo BDI, alm dos operadores usuais da lgica
temporal de tempo ramificado e da lgica de ao. Para uma apresentao sucinta de uma
lgica BDI com referncias para as lgicas modais nas quais ela se baseia, bem como para a
semntica de mundos possveis normalmente utilizada para elas, veja [56].
De forma esquemtica, a arquitetura BDI genrica est apresentada na Figura 2, conforme proposto em [63].

Sensor
Entrada

FRC

Crenas

Gera
Opes

Desejos

Filtro

Intenes

Ao

Ao
Sada

Figura 2. Arquitetura BDI Genrica (adaptado de [63])

14

RITA Volume 10 Nmero 1 2003

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

Resumidamente, esta arquitetura de agente est estruturada da seguinte forma. As


crenas representam aquilo que o agente sabe sobre o estado do ambiente e dos agentes naquele ambiente (inclusive sobre si mesmo). Os desejos representam estados do mundo que o
agente quer atingir (dito de outra forma, so representaes daquilo que ele quer que passe a
ser verdadeiro no ambiente). Em tese, desejos podem ser contraditrios, ou seja, pode-se desejar coisas que so mutuamente exclusivas do ponto de vista de ao prtica. Normalmente
se refere a objetivos como um subconjunto dos desejos que so todos compatveis entre si.
As intenes representam seqncias de aes especficas que um agente se compromete a
executar para atingir determinados objetivos.
A funo de reviso de crenas (referenciada por FRC na figura) recebe a informao sensria (i.e., percebe propriedades do ambiente) e, consultando as crenas anteriores do
agente, atualiza essas crenas para que elas reflitam o novo estado do ambiente9 . Com essa
nova representao do estado do ambiente, possvel que novas opes fiquem disponveis
(opes de estados a serem atingidos). A funo denominada na figura como Gera Opes
verifica quais as novas alternativas de estados a serem atingidos, que so relevantes para os
interesses particulares daquele agente. Isto deve ser feito com base no estado atual do mundo
(conforme as crenas do agente) e nas intenes com que o agente j est comprometido. A
atualizao dos objetivos se d, ento, de duas formas: as observaes do ambiente possivelmente determinam novos objetivos do agente, e a execuo de intenes de mais alto nvel
pode gerar a necessidade de que objetivos mais especficos sejam atingidos.
Uma vez atualizado o conhecimento e a motivao do agente, preciso, em seguida,
decidir que curso de aes especfico ser usado para alcanar os objetivos atuais do agente
(para isso preciso levar em conta os outros cursos de aes com os quais o agente j se
comprometeu, para evitar aes incoerentes, bem como eliminar intenes que j foram atingidas ou que se tornaram impossveis de ser atingidas). Esse o papel da funo Filtro, que
atualiza o conjunto de intenes do agente, com base nas crenas e desejos atualizados e nas
intenes j existentes. Esse processo realizado pela funo Filtro para determinar como atualizar o conjunto de intenes do agente normalmente chamado de deliberao10 . Com o
conjunto de intenes j atualizado, a escolha de qual ao especfica, entre aquelas pretendidas, ser a prxima a ser realizada pelo agente no ambiente feita pela funo Ao. Em
certos casos, em que no necessrio priorizao entre mltiplas intenes, a escolha pode
ser simples; ou seja, basta escolher qualquer uma entre as intenes ativas, desde que se garanta que todas as intenes tero, em algum momento, a oportunidade de serem escolhidas
para execuo. Porm, alguns agentes podem precisar usar escolha de intenes baseadas em
9 Note

que os mecanismos reais de percepo normalmente so imprecisos e/ou incompletos; ou seja, a percepo
pode ser falha, no sentido de no refletir a realidade do ambiente, ou pode no ser total, perdendo alguma informao
sobre o ambiente.
10 Essa a origem do termo deliberativo muitas vezes utilizado para se referir a agentes cognitivos, j que a habilidade
de realizar essa deliberao uma caracterstica muito importante para esse tipo de agente.

RITA Volume 10 Nmero 1 2003

15

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

critrios mais sofisticados para garantir que certas intenes sejam priorizadas em relao a
outras em certas circunstncias.

3 A Linguagem AgentSpeak(L)
3.1 Noes Gerais
A linguagem AgentSpeak(L) foi projetada para a programao de agentes BDI na
forma de sistemas de planejamento reativos (reactive planning systems). Sistemas de planejamento reativos so sistemas que esto permanentemente em execuo, reagindo a eventos
que acontecem no ambiente em que esto situados atravs da execuo de planos que se
encontram em uma biblioteca de planos parcialmente instanciados.
A linguagem de programao AgentSpeak(L) foi primeiramente apresentada em [48].
A linguagem uma extenso natural e elegante de programao em lgica para a arquitetura
de agentes BDI, que representa um modelo abstrato para a programao de agentes e tem
sido a abordagem predominante na implementao de agentes inteligentes ou racionais
[64]. Um agente AgentSpeak(L) corresponde especificao de um conjunto de crenas
que formaro a base de crenas inicial e um conjunto de planos. Um tomo de crena
um predicado de primeira ordem na notao lgica usual, e literais de crena so tomos
de crenas ou suas negaes. A base de crenas de um agente uma coleo de tomos de
crena.
AgentSpeak(L) distingue dois tipos de objetivos: objetivos de realizao (achievement goals) e objetivos de teste (test goals). Objetivos de realizao e teste so predicados,
tais como crenas, porm com operadores prefixados ! e ?, respectivamente. Objetivos
de realizao expressam que o agente quer alcanar um estado no ambiente onde o predicado associado ao objetivo verdadeiro. Na prtica, esses objetivos iniciam a execuo de
subplanos. Um objetivo de teste retorna a unificao do predicado de teste com uma crena
do agente, ou falha caso no seja possvel a unificao com nenhuma crena do agente. Um
evento ativador (triggering event) define quais eventos podem iniciar a execuo de um plano.
Um evento pode ser interno, quando gerado pela execuo de um plano em que um subobjetivo precisa ser alcanado, ou externo, quando gerado pelas atualizaes de crenas que
resultam da percepo do ambiente. Eventos ativadores so relacionados com a adio e remoo de atitudes mentais (crenas ou objetivos). Adio e remoo de atitudes mentais so
representadas pelos operadores prefixados (+) e (-).
Planos fazem referncia a aes bsicas que um agente capaz de executar em seu
ambiente. Essas aes so definidas por predicados com smbolos predicativos especiais
(chamados smbolos de ao) usados para distinguir aes de outros predicados. Um plano
formado por um evento ativador (denotando o propsito do plano), seguido de uma conjuno

16

RITA Volume 10 Nmero 1 2003

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

de literais de crena representando um contexto. O contexto deve ser conseqncia lgica do


conjunto de crenas do agente no momento em que o evento selecionado pelo agente para
o plano ser considerado aplicvel. O resto do plano uma seqncia de aes bsicas ou
subobjetivos que o agente deve atingir ou testar quando uma instncia do plano selecionada
para execuo.

+concert(A,V) : likes(A)
!book_tickets(A,V).
+!book_tickets(A,V) : busy(phone)
call(V);
. . .;
!choose_seats(A,V).
Figura 3. Exemplos de planos AgentSpeak(L)

A Figura 3 apresenta exemplos de planos AgentSpeak(L). O primeiro plano especifica


que ao anncio de um concerto a ser realizado pelo artista A no local V (do Ingls venue),
correspondendo a adio de uma crena concert(A,V) como conseqncia da percepo
do ambiente. Se for o caso de o agente gostar do artista A, ento o agente ter como objetivo a
reserva dos ingressos para esse concerto. O segundo plano especifica que ao adotar o objetivo
de reservar ingressos, se for o caso de a linha telefnica no estar ocupada, ento o agente
pode executar o plano que consiste de: executar a ao bsica de fazer contato telefnico
com o local do concerto V, seguido de um determinado protocolo de reserva de ingressos
(indicado por . . .), e que termina com a execuo de um subplano para a escolha de acentos
em eventos desse tipo naquele local. (Assume-se que fazer contato telefnico uma ao
bsica que o agente capaz de executar no ambiente em questo).

3.2 Sintaxe Abstrata


A especificao de um agente ag em AgentSpeak(L) deve ser feita de acordo com a
gramtica apresentada a seguir (adaptada de [45]). Em AgentSpeak(L), um agente especificado por um conjunto de crenas bs (beliefs) correspondendo base de crenas inicial do
agente, e um conjunto de planos ps que forma a biblioteca de planos do agente.

RITA Volume 10 Nmero 1 2003

17

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

ag
bs
at
ps
p
te
ct
h
a
g
u

::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=

bs ps
b1 . . . bn
P(t1 , . . . , tn )
p1 . . . pn
te : ct h
+at | at |
at
| at |
a
| g
|
A(t1 , . . . , tn )
!at
|
?at
+at | at

(n 0)
(n 0)
(n 1)
+g
ct ct
u

| g
| T
| h; h
(n 0)

As frmulas atmicas at da linguagem so predicados onde P um smbolo predicativo e t1 , . . . , tn so termos padro da lgica de primeira ordem. Chamamos de crena uma
frmula atmica at sem variveis e b meta-varivel para crenas. O conjunto inicial de
crenas de um programa AgentSpeak(L) uma seqncia de crenas bs.
Um plano em AgentSpeak(L) dado por p acima, onde te (triggering event) o evento
ativador, ct o contexto do plano (uma conjuno de literais de crena) e h uma seqncia
de aes, objetivos ou atualizaes de crenas. A construo te : ct dita a cabea do plano,
e h o corpo do plano. O conjunto de planos de um agente dado por ps como uma lista de
planos.
Um evento ativador te corresponde adio/remoo de crenas da base de crenas
do agente (+at e at, respectivamente), ou adio/remoo de objetivos (+g e g, respectivamente). O agente possui um conjunto de aes bsicas que utiliza para atuar sobre
o ambiente. Aes so referidas por predicados usuais com a exceo de que um smbolo
de ao A usado no lugar do smbolo predicativo. Objetivos g podem ser objetivos de realizao (!at) ou de teste (?at). Finalmente, +at e at (no corpo de um plano) representam
operaes de atualizao (update) da base de crena u, atravs da adio ou remoo de
crenas respectivamente.
Note que uma frmula !g no corpo de um plano gera um evento cujo evento ativador
+!g (este assunto ser tratado em maiores detalhes na prxima seo). Portanto, planos
escritos pelo programador que tenha um evento ativador que possa ser unificado com +!g
representam alternativas de planos que devem ser considerados no tratamento de tal evento.
Planos com evento ativador do tipo +at e at so utilizados no tratamento de eventos que so
gerados quando crenas so adicionadas ou removidas (tanto como conseqncia da percepo do ambiente, como devido a alteraes de crenas explicitamente requisitadas no corpo
de um plano). Eventos ativadores do tipo !g so usados para o tratamento de falhas de pla-

18

RITA Volume 10 Nmero 1 2003

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

nos (mas no sero abordados neste texto), e eventos ativadores do tipo +?g e ?g no so
utilizados na implementao atual da linguagem (maiores detalhes na Seo 5.1). A seo
a seguir fornece mais detalhes sobre a gerao de eventos, e outros aspectos importantes da
interpretao de programas AgentSpeak(L).
3.3 Semntica Informal
Um interpretador abstrato para a linguagem AgentSpeak(L) precisa ter acesso base
de crenas e biblioteca de planos, e gerenciar um conjunto de eventos e um conjunto de
intenes. Seu funcionamento requer trs funes de seleo: a funo de seleo de eventos
(SE ) seleciona um nico evento do conjunto de eventos; uma outra funo (SAp ) seleciona
uma opo (um plano aplicvel) entre o conjunto de planos aplicveis para um evento selecionado; e a terceira funo (SI ) seleciona uma inteno do conjunto de intenes. As
funes de seleo so especficas para cada agente, sendo responsveis por parte significativa do comportamento do agente. Essas funes, apesar de fazerem parte do interpretador,
devem ser fornecidas pelo projetista do agente juntamente com o programa AgentSpeak(L),
exceto nas situaes em que funes de seleo default11 , que so muito simples, possam ser
utilizadas.
Os trabalhos anteriores sobre AgentSpeak(L) no discutem como projetistas podem
especificar essas funes. Em princpio linguagens de programao tradicionais devem ser
usadas para a definio de funes de seleo ad hoc. A extenso de AgentSpeak(L) apresentada em [3] visava justamente esse problema, propondo a gerao automtica e eficiente
de funes de seleo de intenes. A linguagem estendida permite expressar relaes entre
planos, bem como critrios quantitativos para sua execuo. Usa-se, ento, escalonamento
de tarefas baseado em teoria de deciso para guiar as escolhas feitas pela funo de seleo
de intenes.
Como dito acima, duas estruturas importantes para o interpretador abstrato so o conjunto de eventos e o conjunto de intenes. Intenes so cursos de aes com os quais
um agente se compromete para tratar certos eventos. Cada inteno uma pilha de planos
parcialmente instanciados.
Eventos causam o incio da execuo de planos que tem eventos ativadores relevantes.
Eventos podem ser externos, quando originados da percepo do ambiente (i.e., adio ou
remoo de crenas resultantes do processo de reviso de crenas); ou internos, quando gerados pela execuo de planos do agente (um subobjetivo em um plano gera um evento do tipo
adio de objetivo de realizao). No ltimo caso, o evento acompanhado da inteno
11 As funes de seleo default

so as seguintes: SE seleciona eventos sem nenhuma prioridade, utilizando a ordem


em que eles so inseridos no conjunto de eventos; a funo SAp utiliza a ordem em que os planos foram escritos no
programa fonte AgentSpeak(L) para a escolha entre diversos planos aplicveis; e a funo SI funciona, por assim
dizer, como um escalonador round-robin, executando uma ao de cada uma das intenes ativas por vez.

RITA Volume 10 Nmero 1 2003

19

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

que o gerou (o plano escolhido para aquele evento ser colocado no topo daquela inteno).
Eventos externos criam novas intenes representando diferentes focos de ateno na atuao
do agente no ambiente.
A seguir o funcionamento de um interpretador AgentSpeak(L) apresentado em detalhe, com o auxlio da Figura 4 (reproduzida de [42]). Na figura conjuntos de crenas, eventos,
planos e intenes so representados por retngulos. Losangos representam a seleo de um
elemento de um conjunto. Crculos representam alguns dos processos envolvidos na interpretao de programas AgentSpeak(L).
A cada ciclo de interpretao de um programa AgentSpeak(L), a lista de eventos
atualizada com o resultado do processo de reviso de crenas. Assume-se que as crenas
so atualizadas pela percepo e que sempre que houverem mudanas na base de crenas
do agente, isso implica na insero de um evento no conjunto de eventos. Essa funo de
reviso de crenas no parte de um interpretador AgentSpeak(L), mas um componente
que deve estar presente na arquitetura geral do agente (implementaes de interpretadores
AgentSpeak(L) tipicamente fornecem uma funo de reviso de crenas simples utilizada
como default).
Depois de SE selecionar um evento, o interpretador AgentSpeak(L) tem que unificar aquele evento com eventos ativadores nas cabeas dos planos presentes na biblioteca
de planos. Isso gera um conjunto de todos os planos relevantes para o evento escolhido.
Pela verificao dos contextos de planos que seguem logicamente das crenas do agente,
AgentSpeak(L) determina o conjunto de planos aplicveis (planos que podem ser usados,
na situao presente, para tratar o evento selecionado naquele ciclo). Depois, SAp escolhe,
entre os planos do conjunto de planos aplicveis, um nico plano aplicvel que se torna o
meio pretendido para o tratamento daquele evento, e coloca o plano no topo de uma inteno
existente (se o evento for interno), ou cria uma nova inteno no conjunto de intenes (se
o evento for externo, i.e., gerado por percepo do ambiente), definindo um novo foco de
ateno do agente.
Nesse estgio, resta apenas a seleo de uma nica inteno para ser executada no
ciclo. A funo SI seleciona uma inteno do agente (i.e. uma das pilhas de planos parcialmente instanciados que se encontram dentro do conjunto de intenes, cada uma representando um dos focos de ateno do agente). No topo dessa inteno existe uma instncia
de um plano da biblioteca de planos, e a frmula no incio do corpo do plano executada.
Isso implica em uma ao bsica a ser realizada pelo agente no ambiente, na gerao de um
evento interno (se a frmula selecionada for um objetivo de realizao) ou na execuo de um
objetivo de teste (atravs do acesso base de crenas). Caso a frmula seja um objetivo de
realizao, simplesmente um evento do tipo adio de objetivo de realizao adicionado
ao conjunto de eventos, acompanhado da inteno que gerou o evento. Essa inteno tem que
ser removida do conjunto de intenes, pois ela fica suspensa at que o evento interno seja

20

RITA Volume 10 Nmero 1 2003

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

AgentSpeak(L) Agent
Beliefs

Belief
Base

Beliefs

Perception

BRF
External
Events

Plan
Library

SE

Events

Events
Selected
Event

Internal
Events

Plans

Unify
Event
Relevant
Plans

Beliefs

Beliefs
Selected
Intention

Unify
Context

SO

SI

Applicable
Plans

Intended
Means

Intentions

Intentions

New
Intention

Push
Subplan
New

New

Execute
Intention

Action

Update
Intention

...

Figura 4. Ciclo de interpretao de um programa AgentSpeak(L) [42].


escolhido pela funo SE . Quando uma instncia de plano for escolhida como meio pretendido para tratar este evento, o plano colocado no topo da pilha de planos daquela inteno,
e ela retornada para o conjunto de intenes (podendo novamente ser selecionada por SI ).
Se a frmula a ser executada a realizao de uma ao bsica ou a execuo de um
objetivo de teste, a frmula deve ser removida do corpo da instncia de plano que se encontra
no topo da inteno selecionada. No caso da execuo de um objetivo de teste, a base de
crenas ser inspecionada para encontrar um tomo de crena que unifica com o predicado
de teste. Se uma unificao for possvel, instanciaes de variveis podem ocorrer no plano
parcialmente instanciado; aps isto, o objetivo de teste pode ser removido do conjunto de
intenes, pois j foi realizado. No caso de uma ao bsica a ser executada, o interpretador
simplesmente informa ao componente da arquitetura do agente que responsvel pela atuao
sobre o ambiente qual ao requerida, podendo tambm remover a ao12 do conjunto de
intenes. Quando todas as frmulas no corpo de um plano forem removidas (i.e., tiverem
12 Em

algumas implementaes, e.g. [3], o interpretador espera um retorno do ambiente simulado para saber se a
ao pode ser executada ou no. O plano falha caso o retorno do ambiente no seja positivo.

RITA Volume 10 Nmero 1 2003

21

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

sido executadas), o plano removido da inteno, tal como o objetivo de realizao que o
gerou, se esse for o caso, removido do incio do corpo do plano abaixo daquele na pilha de
planos daquele foco de ateno. O ciclo de execuo termina com a execuo de uma frmula
do corpo de um plano pretendido, e AgentSpeak(L) comea um novo ciclo, com a verificao
do estado do ambiente aps a ao do agente sobre ele, a gerao dos eventos adequados, e
continuando a execuo de um ciclo de raciocnio do agente como descrito acima.
O objetivo desta seo foi apresentar informalmente alguns aspectos importantes da
semntica da linguagem AgentSpeak(L). A semntica formal da linguagem pode ser encontrada nos seguintes artigos [45, 7, 46] (o ltimo deles trata especificamente de aspectos de
comunicao entre agentes).

4 Estudos de Caso
Esta seo mostra dois exemplos bem simples de programas escritos em
AgentSpeak(L). O fato de os programas serem simples uma vantagem para a assimilao dos conceitos bsicos da linguagem, porm dificultam a compreenso da importncia das
abstraes da arquitetura BDI em sistemas mais complexos. O objetivo aqui no mostrar
o tipo de sistema em que este paradigma particularmente apropriado, mas especificamente
mostrar exemplos das construes bsicas da linguagem AgentSpeak(L). Ambos exemplos
foram utilizados em trabalhos que propem o uso da tcnica de model checking (verificao de modelos) para a verificao formal de sistemas programados em AgentSpeak(L) (este
assunto discutido na Seo 5.1).
4.1 Robs Coletores de Lixo em Marte
O cenrio utilizado nesta seo foi apresentado em [14] e lembra tambm o cenrio
utilizado em [48]; o cdigo apresentado aqui para este cenrio foi introduzido anteriormente
em [5]. Dois robs esto coletando lixo no planeta Marte. O rob r1 procura por lixos
depositados no solo do planeta e quando algum lixo encontrado, o rob coleta o lixo e o leva
para o local onde r2 encontra-se, larga o lixo l e retorna ao local onde o lixo foi encontrado
para continuar sua busca a partir daquela posio anterior. O rob r2 est posicionado ao
lado de um incinerador; todo o lixo levado por r1 colocado no incinerador. Os pedaos de
lixo so colocados randomicamente em uma grade que define o territrio do planeta13 . Outra
fonte de no-determinismo a impreciso do brao do rob em pegar os pedaos de lixo. A
ao de pegar o lixo pode falhar, mas o mecanismo bom o suficiente para no falhar mais
que duas vezes seguidas; ou seja, no pior caso r1 ir tentar apanhar o lixo trs vezes.
13 Cada

posio da grade representa uma rea de territrio de tamanho limitado pelo alcance dos sensores do rob.
Qualquer lixo dentro da rea de territrio representado por uma posio na grade instantaneamente percebido pelo
agente.

22

RITA Volume 10 Nmero 1 2003

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

O cdigo AgentSpeak(L) para r1 dado abaixo. No cdigo, cada plano anotado


com um label para que se possa referir ao plano no texto que segue. As aes que possuem um
ponto (.) em seu nome, denotam aes internas, uma noo introduzida em [3]. Essas ao
so executadas internamente pelo agente, e no afetam o ambiente como as aes bsicas que
o agente executa.
Agent r1
Beliefs

pos(r2,2,2).
checking(slots).
Plans

+pos(r1,X1,Y1) : checking(slots) & not(garbage(r1))


<- next(slot).

(p1)

+garbage(r1) : checking(slots)
<- !stop(check);
!take(garb,r2);
!continue(check).

(p2)

+!stop(check) : true
<- ?pos(r1,X1,Y1);
+pos(back,X1,Y1);
-checking(slots).

(p3)

+!take(S,L) : true
<- !ensure_pick(S);
!go(L);
drop(S).

(p4)

+!ensure_pick(S) : garbage(r1)
<- pick(garb);
!ensure_pick(S).

(p5)

+!ensure_pick(S) : true <- true.

(p6)

+!continue(check) : true
<- !go(back);
-pos(back,X1,Y1);
+checking(slots);
next(slot).

(p7)

+!go(L) : pos(L,Xl,Yl) & pos(r1,Xl,Yl)


<- true.

(p8)

RITA Volume 10 Nmero 1 2003

23

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

+!go(L) : true
<- ?pos(L,Xl,Yl);
moveTowards(Xl,Yl);
!go(L).

(p9)

A crena inicial do agente sobre a posio do agente r2 na grade que define o


territrio do planeta em que r1 deve procurar lixo, e que sua tarefa inicial ser verificar os
diversos pontos do territrio, procurando lixo. Todos os planos so explicados abaixo.
O plano p1 usado quando o agente percebe que ele est numa nova posio e est
procurando por lixo. Se no h lixo percebido naquele ponto, s o que deve ser feito a
ao bsica next(slot) que move o rob para o prximo ponto na grade (com exceo
do local do incinerador, pois o lixo nessa posio tratado por r2). Note que essa uma
ao bsica do ponto de vista do agente: assume-se que o rob possui os mecanismos fsicos
necessrios para se mover a uma prxima posio no territrio, seguindo algum caminho prdeterminado de tal forma que todas as posies sejam ordenadas e o mecanismo pode ento
detectar quando no h mais nenhuma posio seguinte a ser verificada.
O ambiente simulado prov a informao sobre a existncia de lixo nas posies dos
robs r1 e r2, quando o agente realiza percepo do ambiente. Quando r1 percebe lixo
em sua posio, a crena garbage(r1) adicionada base de crenas de tal maneira que
o plano p2 pode ser ento usado. A tarefa de lidar com um pedao de lixo percebido
decomposta em trs partes, envolvendo subobjetivos de realizao que garantem que: (i) o
rob ir parar de procurar por lixo de maneira consistente (lembrando seu ltimo ponto de
procura para que a tarefa possa ser continuada daquele ponto); (ii) o lixo seja levado at a
posio de r2; e (iii) a tarefa de procurar por lixo ser, ento, retomada. Cada um desses
objetivos so realizados respectivamente pela execuo dos trs planos que seguem.
Quando o agente pretende atingir o subobjetivo (i) acima, o plano p3 sua nica
opo, e ele sempre aplicvel (j que seu contexto vazio). O agente recupera da sua base
de crenas sua posio atual (a posio inserida na base de crenas atravs da percepo
do ambiente). O agente ento toma nota da informao de para onde deve retornar para
a continuao da sua busca por lixos. Isso feito pela adio de uma crena na base de
crenas: +pos(back,X1,Y1). O agente remove da sua base de crenas a informao de
que est procurando por lixo, e aps isso o agente ter o objetivo de levar o lixo at a posio
de r2 e retornar.
O subobjetivo (ii) tratado pelo plano p4, que diz que para o rob levar o lixo at a posio de r2, ele deve coletar o lixo e atingir o subobjetivo de ir para a posio de r2 e, quando
chegar l, ele poder finalmente largar o lixo. Note que pick(garb) e drop(garb) so
aes bsicas, ou seja, so coisas que o rob pode realizar fisicamente no ambiente por meio
de seu hardware.

24

RITA Volume 10 Nmero 1 2003

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

Os planos p5 e p6 juntos asseguram que o rob ir continuar tentando pegar um


pedao de lixo at que ele no possa mais perceber o lixo na grade (i.e., at que a ao de
coleta seja realizada com sucesso). Lembre que o mecanismo de coleta impreciso, e o rob
pode ter que tentar algumas vezes at obter xito na execuo da ao.
O plano p7 usado para que o agente continue a tarefa de verificar a existncia de
lixo na grade que representa o espao de territrio a ser limpo. O agente precisa atingir o
subobjetivo de retornar para sua posio anterior (!go(back)), e uma vez l ele poder
remover a nota que fez sobre aquela posio, lembrando que voltou ao estado de procura por
lixo e, assim, procedendo para o prximo ponto na grade.
Os ltimos dois planos so usados para atingir o objetivo de ir para uma posio
especfica na grade (representada pela constante com a qual a varivel L est instanciada).
O plano p9 recupera a crena que o agente possui sobre a posio na grade em que fica a
localidade L, move-se uma posio na grade em direo ao ponto referente s coordenadas em
questo moveTowards(Xl,Yl), e volta a ter o objetivo de mover-se (continuar movendose) em direo a L; note que o plano recursivo. O plano p8 estabelece o fim da recurso
dizendo que no h mais o que fazer para atingir o objetivo de ir em direo a L se o agente
j est naquela posio (o plano anterior no mais ser aplicvel neste caso).
O agente r2 definido pelo cdigo AgentSpeak(L) abaixo. Tudo o que ele faz
queimar os pedaos de lixo (burn(garb)) quando ele percebe que h lixo nessa posio
(+garbage(r2)).

Agent r2
+garbage(r2) : true
<- burn(garb).

Crenas garbage(r2) so adicionadas base de crenas do agente a partir da percepo do ambiente, sempre que existir lixo no ponto da grade onde r2 se encontra.
4.2 Um Modelo Abstrato de Leiles
Nessa seo ser descrito um cenrio simplificado de leiles, utilizado anteriormente
em [4]. O ambiente anuncia 10 leiles e designa quem o vencedor em cada um (aquele com
o lance mais alto). Existem trs agentes participando desses leiles com estratgias de lance
simplificadas.

RITA Volume 10 Nmero 1 2003

25

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

Agent ag1
+auction(N) : true
<- place_bid(N,6).

O agente ag1 um agente que oferece 6 como lance sempre que o ambiente anuncia
um novo leilo.

Agent ag2
myself(ag2).
bid(ag2,4).
ally(ag3).
+auction(N) : myself(I) & ally(A) & not(alliance(A,I))
<- ?bid(I,B); place_bid(N,B).
+auction(N) : alliance(A,I)
<- place_bid(N,0).
+alliance(A,I) : myself(I) & ally(A)
<- ?bid(I,B);
.send(A,tell,bid(I,B));
.send(A,tell,alliance(A,I)).

O agente ag2 oferece 4, caso no tenha combinado uma aliana com ag3, caso em
que ele oferece 0 (j que ag3 far um lance em nome da aliana entre eles). Quando ag2
recebe uma mensagem de ag3 propondo uma aliana, a crena alliance(ag3,ag2)
adicionada base de crenas de ag2; uma funo de confiana (trust) default utilizada.
Isso constitui um evento ativador para um ltimo plano que informa ao ag3 o quanto ag2
costuma oferecer como lance e confirma que ag2 concorda em formar uma aliana com ag3.

Agent ag3
myself(ag3).
bid(ag3,3).
ally(ag2).
threshold(3).
+auction(N) : threshold(T) & .gte(T,N)
<- !bid_normally(N).

26

RITA Volume 10 Nmero 1 2003

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

+auction(N) : myself(I) & winner(I)


& ally(A) & not(alliance(I,A))
<- !bid_normally(N).
+auction(N) : myself(I) & not(winner(I))
& ally(A) & not(alliance(I,A))
<- !alliance(I,A);
!bid_normally(N).
+auction(N) : alliance(I,A)
<- ?bid(I,B); ?bid(A,C);
.plus(B,C,D); place_bid(N,D).
+!bid_normally(N) : true
<- ?bid(I,B); place_bid(N,B).
+!alliance(I,A) : true
<- .send(A,tell,alliance(I,A)).
O agente ag3 tenta ganhar os primeiros T leiles, onde T um limiar (threshold)
armazenado em sua base de crenas. Se ele no ganha nenhum leilo at aquele limiar, ele
tenta ento fazer uma aliana com ag2 (atravs de um envio de mensagem). Quando ag2
confirma a aliana, ento ag3 apresenta em nome dos dois um lance com a soma de suas
lances usuais.

5 Trabalhos Relacionados
5.1 Recentes Desenvolvimentos em AgentSpeak(L)
A partir da proposta original apresentada por Rao [48], vrios outros autores tm levado adiante a investigao de diferentes aspectos de AgentSpeak(L). Em [22] um interpretador abstrato para essa linguagem foi formalmente especificado atravs da linguagem Z.
Muitos dos elementos nessa formalizao foram primeiramente apresentados em [21], que
apresenta uma especificao formal para dMARS. Isso deve-se ao fato de AgentSpeak(L)
ser fortemente baseada nas experincias com o sistema dMARS [35], sucessor do PRS [29],
ambos sistemas que utilizam a arquitetura BDI.
Algumas extenses de AgentSpeak(L) foram propostas em [3], e um interpretador
para a verso estendida foi apresentado. As extenses tinham por objetivo a obteno de uma
linguagem de programao que fosse mais prtica. A linguagem estendida permite a especificao de relaes entre planos e critrios quantitativos para sua execuo. O interpretador
usa, ento, um escalonador de tarefas baseado em teoria de deciso para guiar, automatica-

RITA Volume 10 Nmero 1 2003

27

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

mente, as escolhas relacionadas funo de seleo de intenes de um agente.


Em [45], uma semntica operacional para AgentSpeak(L) foi dada com base na abordagem estrutural de Plotkin [47], uma notao mais usual do que Z para dar semntica a
linguagens de programao. Posteriormente, essa semntica operacional foi utilizada na especificao de um framework para a construo de provas de propriedades BDI da linguagem
AgentSpeak(L) [6]. A combinao dos princpios da tese da assimetria (assymetry thesis) satisfeitos por um agente AgentSpeak(L) foi apresentado inicialmente em [6]; as provas
detalhadas dessas propriedades foram apresentadas em [7]. Esses princpios so relevantes para se assegurar a racionalidade dos agentes programados em AgentSpeak(L) com base
nos princpios de racionalidade segundo a teoria BDI. Em [46], a semntica operacional de
AgentSpeak(L) foi estendida para dar semntica comunicao entre agentes baseada na
teoria dos atos de fala.
Em [9] foi apresentado o uso de tcnicas de model checking para a verificao formal
de programas AgentSpeak(L) atravs de um conjunto de ferramentas chamado CASP. CASP
traduz uma verso simplificada de AgentSpeak(L) em linguagens que podem ser utilizadas
em verificadores de modelos para a lgica temporal linear [1]. A traduo para Promela foi
apresentada em [4], e a traduo para Java em [5]. A verificao de modelo ento feita
com o uso de Spin [31] no primeiro caso, e com JPF2 [60] no segundo. Esse trabalho em
verificao de modelos para programas AgentSpeak(L) usa as definies de modalidades BDI
em termos da semntica operacional de AgentSpeak(L) apresentadas em [7] para mostrar de
forma precisa como as especificaes BDI (a serem verificadas para sistemas com mltiplos
agentes AgentSpeak(L)) so interpretadas.
Poucas aplicaes foram desenvolvidas com AgentSpeak(L) at o momento, dado que
a sua implementao prtica muito recente e ainda requer um trabalho mais aprofundado
de experimentao para que se torne uma linguagem de programao poderosa. O mesmo se
aplica a outras linguagens baseadas em agentes (veja a prxima seo). Apesar do trabalho
na rea datar do incio dos anos 90, um grande nmero de questes est ainda em aberto.
Entre as aplicaes existentes, desenvolvidas em AgentSpeak(L), podemos mencionar uma
simulao de aspectos sociais do crescimento urbano [8] e um rob carregador encarregado
do armazm de uma fbrica, que funciona em um ambiente de realidade virtual [58]. O primeiro trabalho foi desenvolvido como um estudo de caso para a plataforma MAS-SOC14 de
simulao social baseada em agentes em que cada agente de uma simulao implementado
em AgentSpeak(L). O segundo trabalho apresenta uma arquitetura de duas camadas com o
interpretador AgentSpeak(L) em um nvel, e, em outro nvel, um sistema articulado para a
modelagem de personagens 3D em ambientes virtuais. Tal arquitetura tem por objetivo permitir o uso de agentes autnomos sofisticados em sistemas de realidade virtual ou outras
14 A

URL do projeto MAS-SOC <http://www.inf.ufrgs.br/~massoc/>. Nesta pgina tambm podem


ser encontrados links para outros recursos relacionados linguagem AgentSpeak(L).

28

RITA Volume 10 Nmero 1 2003

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

aplicaes baseadas em animaes15 tridimensionais.


5.2 Outras Linguagens de Programao Orientadas a Agentes
Desde o artigo seminal em programao orientada a agentes de Shoham [55], vrias
outras linguagens nesse paradigma foram propostas, seguindo diferentes abordagens e influncias. Naquele artigo, foi apresentada a linguagem Agent0, que inspirada na arquitetura
BDI com sintaxe baseada em LISP. A seguir, sero mencionadas algumas das outras linguagens orientada a agentes que apareceram na literatura de sistemas multiagente desde ento.
Concurrent M ETATE M [24] baseada em lgica temporal executvel (essa linguagem, de fato, anterior ao trabalho de Shoham). Originalmente, a idia era de que cada
agente fosse executado diretamente de uma especificao em lgica temporal de tempo linear. Trabalhos mais recentes adicionam outras modalidades linguagem, permitindo aos
desenvolvedores projetar agentes baseados em abstraes antropomrficas, de maneira similar a agentes BDI [25]. Outros trabalhos em Concurrent M ETATE M tm permitido aos
usurios a especificao de grupos (aninhados) de agentes, com caractersticas interessantes
de comunicao e acesso para os agentes em diferentes grupos [26].
Uma linguagem recentemente introduzida na literatura da rea chama-se STAPLE [38]. Essa linguagem baseada na teoria de intenes conjuntas de Cohen e Levesque,
que formalizada na lgica apresentada em [17]. A plataforma IMPACT [57] tem como
objetivo permitir a agentificao de cdigo legado, e a semntica de agentes IMPACT
baseada em lgica deontolgica [2]. Algumas linguagens de programao apresentadas na
literatura estendem sistemas de programao que tem demonstrado grande aplicao em inteligncia artificial de modo geral ao conceito de sistemas de mltiplos agentes situados. Um
exemplo a linguagem ConGolog [18], uma linguagem de programao concorrente baseada
em clculo de situaes. Outro exemplo MIN ERVA, uma arquitetura de agente [41, 40]
baseada em programao em lgica dinmica.
Outras linguagens BDI, tais como 3APL [30], foram inspiradas em AgentSpeak(L)
modificando-a de alguma maneira. 3APL, por exemplo, no inclui o conceito de evento ou
de uma estrutura intencional (como o conjunto de intenes em AgentSpeak(L)); isso faz com
que 3APL se distancie um pouco da concepo original da arquitetura BDI. Por outro lado,
a linguagem tem outras caractersticas, tais como regras especiais que operam nos objetivos
do agente durante sua execuo, que so teis, por exemplo, no tratamento de planos que
falham. Em trabalho recente, a linguagem Dribble [59] foi proposta, entendendo 3APL com a
noo de objetivos declarativos. Outra abordagem a agentes BDI o clculo [36], baseado
no clculo [44], com o objetivo de dar suporte terico para linguagens de programao
15 Exemplos de animaes realizadas com esta arquitetura podem ser encontrados na URL <http://www.inf.
ufrgs.br/cg/ras/>.

RITA Volume 10 Nmero 1 2003

29

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

visuais [36, 37].


Uma linguagem fortemente baseada em AgentSpeak(L), chamada AgentTalk, foi recentemente disponibilizada pela Internet16 . Tambm encontram-se disponveis na Internet, plataformas JAVA para o desenvolvimento de agentes BDI, tais como JAM17 [33]
e JACK18 [32]. A grande diferena entre essas ferramentas e linguagens BDI como
AgentSpeak(L) e 3APL que essas ltimas tm semntica formal, o que possibilita a verificao formal de sistemas programados com estas linguagens; alm disto, pode-se estabelecer,
com rigorismo ainda maior, uma relao formal com a teoria BDI original, vinda da literatura
de filosofia sobre raciocnio prtico e que influencia todo o trabalho em agentes racionais
(atravs de trabalhos tericos que esto em desenvolvimento).

6 Concluso
Aps uma dcada desde a primeira publicao utilizando o termo programao orientada a agentes [55], pode-se dizer que as linguagens de programao orientadas a agentes
encontram-se ainda em sua infncia. Muita pesquisa em aspectos formais dessas linguagens
j foi desenvolvida, mas ainda h muitas questes em aberto. Alm disto, s recentemente
estas linguagem com base formal e realmente substanciadas nas idias da rea de sistemas
multiagente tiveram interpretadores disponibilizados publicamente. Com isto, pouca experimentao prtica, com sistemas de grande porte, foi desenvolvida at o momento. As relaes
com os demais nveis do processo de engenharia de software orientada a agente tambm no
esto bem consolidadas ainda.
De toda a forma, dado o grande sucesso recente da rea de sistemas multiagente, influenciando o trabalho nas mais diversas rea da computao, muito provvel que o prximo
grande paradigma de programao seja o paradigma de orientao a agentes, alterando substancialmente a forma como sistemas computacionais sero concebidos. As linguagens de
programao com esta orientao certamente tero um papel importante nesse processo, mas
exatamente a forma como isto acontecer difcil prever. O objetivo deste texto foi dar uma
viso geral de alguns conceitos que sero importantes nesse paradigma, e fornecer referncias para os trabalhos na rea, esperando que as idias apresentadas aqui ajudem tambm na
compreenso da significativa diferena desta forma de concepo de sistemas computacionais, desde o uso de noes mentalsticas at o uso de comunicao de alto nvel (baseada na
teoria dos atos de fala), na concepo de entidades de software auto-motivadas e autnomas.
16 Essa

linguagem tem um interpretador escrito na linguagem funcional Scheme. A nica referncia a esse trabalho
a URL: <http://www.cs.rmit.edu.au/~winikoff/agenttalk/>.
17 URL: <http://www.marcush.net>.
18 URL: <http://www.agent-software.com>.

30

RITA Volume 10 Nmero 1 2003

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

Agradecimentos
Como pode ser observado pelas referncias relacionadas a AgentSpeak(L), este artigo
deriva de vrios trabalhos (anteriores ou em andamento) realizados com a cooperao de
diversos pesquisadores e alunos, e parcialmente financiados pelo CNPq e pela FAPERGS.
Registramos nosso sincero agradecimento aos seguintes co-autores, em ordem alfabtica:
Marcelo G. de Azambuja, Deniel M. Basso, Ana L.C. Bazzan, Antnio Carlos da Rocha
Costa, Guilherme Drehmer, Michael Fisher, Jomi F. Hbner, Rafael de O. Jannone, Romulo
Krafta, Victor Lesser, Rodrigo Machado, lvaro F. Moreira, Fabio Y. Okuyama, Denise de
Oliveira, Carmen Pardavila, Mara R. Rodrigues, Rosa M. Vicari, Willem Visser, Michael
Wooldridge.

Referncias
[1] E Allen Emerson. Temporal and modal logic. In Jan van Leeuwen, editor, Handbook
of Theoretical Computer Science, volume B, chapter 16, pages 9971072. Elsevier Science, Amsterdam, 1990.
[2] Lennart qvist. Deontic logic. In Dov M. Gabbay and Franz Gnthner, editors, Handbook of Philosophical Logic: Volume II: Extensions of Classical Logic, chapter II.11,
pages 605714. D. Reidel Publishing Company, 1984.
[3] Rafael H. Bordini, Ana L. C. Bazzan, Rafael O. Jannone, Daniel M. Basso, Rosa M.
Vicari, and Victor R. Lesser. AgentSpeak(XL): Efficient intention selection in BDI
agents via decision-theoretic task scheduling. In Cristiano Castelfranchi and W. Lewis
Johnson, editors, Proceedings of the First International Joint Conference on Autonomous Agents and Multi-Agent Systems (AAMAS-2002), 1519 July, Bologna, Italy, pages 12941302, New York, NY, 2002. ACM Press.
[4] Rafael H. Bordini, Michael Fisher, Carmen Pardavila, and Michael Wooldridge. Model
checking AgentSpeak. In Jeffrey S. Rosenschein, Tuomas Sandholm, Wooldridge Michael, and Makoto Yokoo, editors, Proceedings of the Second International Joint Conference on Autonomous Agents and Multi-Agent Systems (AAMAS-2003), Melbourne,
Australia, 1418 July, pages 409416, New York, NY, 2003. ACM Press.
[5] Rafael H. Bordini, Michael Fisher, Willem Visser, and Michael Wooldridge. Verifiable
multi-agent programs. In Proceedings of the First International Workshop on Programming Multiagent Systems: languages, frameworks, techniques and tools (PROMAS-03),
to be held with AAMAS-03, 15 July, 2003, Melbourne, Australia, 2003. To appear.
[6] Rafael H. Bordini and lvaro F. Moreira. Proving the asymmetry thesis principles for
a BDI agent-oriented programming language. In Jrgen Dix, Joo Alexandre Leite,

RITA Volume 10 Nmero 1 2003

31

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

and Ken Satoh, editors, Proceedings of the Third International Workshop on Computational Logic in Multi-Agent Systems (CLIMA-02), 1st August, Copenhagen, Denmark, Electronic Notes in Theoretical Computer Science 70(5). Elsevier, 2002. URL:
<http://www.elsevier.nl/locate/entcs/volume70.html>. CLIMA-02 was held as part of
FLoC-02. This paper was originally published in Datalogiske Skrifter number 93, Roskilde University, Denmark, pages 94108.
[7] Rafael H. Bordini and lvaro F. Moreira. Proving BDI properties of agent-oriented
programming languages: The asymmetry thesis principles in AgentSpeak(L). Annals
of Mathematics and Artificial Intelligence, 2003. Accepted for publication in a Special
Issue on Computational Logic in Multi-Agent Systems.
[8] Rafael H. Bordini, Fabio Y. Okuyama, Denise de Oliveira, Guilherme Drehmer, and
Romulo C. Krafta. The MAS-SOC approach to multi-agent based simulation. In Gabriela Lindemann, Daniel Moldt, Mario Paolucci, and Bin Yu, editors, Proceedings of the
First International Workshop on Regulated Agent-Based Social Systems: Theories and
Applications (RASTA02), 16 July, 2002, Bologna, Italy, held with AAMAS02, Lecture
Notes in Artificial Intelligence, Berlin, 2003. Springer-Verlag. To appear.
[9] Rafael H. Bordini, Willem Visser, Michael Fisher, Carmen Pardavila, and Michael Wooldridge. Model checking multi-agent programs with CASP. In Proceedgins of the
Fifteenth Conference on Computer-Aided Verification (CAV-2003), Boulder, CO, 812
July, 2003. Tool description. To appear.
[10] Rafael Heitor Bordini. Contributions to an Anthropological Approach to the Cultural
Adaptation of Migrant Agents. PhD thesis, University of London, 1999.
[11] Rafael Heitor Bordini, Renata Vieira, and lvaro Freitas Moreira. Fundamentos de
sistemas multiagentes. In Carlos Eduardo Ferreira, editor, Anais do XXI Congresso da
Sociedade Brasileira de Computao (SBC2001), Volume 2, XX Jornada de Atualizao
em Informtica (JAI), 30 de julho 3 de agosto, Fortaleza-CE, Brasil, chapter 1, pages
341. Sociedade Brasileira de Computao, 2001.
[12] Michael E. Bratman. Intentions, Plans and Practical Reason. Harvard University Press,
Cambridge, MA, 1987.
[13] Michael E. Bratman, David J. Israel, and Martha E. Pollack. Plans and resourcebounded practical reasoning. Computational Intelligence, 4:349355, 1988.
[14] John A. Campbell and Mark dInverno. Knowledge interchange protocols. In Yves Demazeau and Jean-Pierre Mller, editors, Decentralized A.I.Proceedings of the First
European Workshop on Modelling Autonomous Agents in a Multi-Agent World (MAAMAW89), 1618 August, Cambridge, 1989, pages 6380. Elsevier Science B.V., Amsterdam, 1990.

32

RITA Volume 10 Nmero 1 2003

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

[15] Cristiano Castelfranchi. Social power: a point missed in multi-agent DAI and HCI.
In Yves Demazeau and Jean-Pierre Mller, editors, Decentralized A.I.Proceedings of
the First European Workshop on Modelling Autonomous Agents in a Multi-Agent World
(MAAMAW89), 1618 August, Cambridge, 1989, pages 4962. Elsevier Science B.V.,
Amsterdam, 1990.
[16] Cristiano Castelfranchi, Maria Miceli, and Amadeo Cesta. Dependence relations among
autonomous agents. In Eric Werner and Yves Demazeau, editors, Decentralized A.I.
3Proceedings of the Third European Workshop on Modelling Autonomous Agents in
a Multi-Agent World, 57 August, 1991, Kaiserslautern, Germany, pages 215227. Elsevier Science B.V., Amsterdam, 1992.
[17] Philip R. Cohen and Hector J. Levesque. Intention is choice with commitment. Artificial
Intelligence, 42(3):213261, 1990.
[18] Giuseppe de Giacomo, Yves Lesprance, and Hector J. Levesque. ConGolog: A concurrent programming language based on the situation calculus. Artificial Intelligence,
121:109169, 2000.
[19] Yves Demazeau. From cognitive interactions to collective behaviour in agent-based
systems. In Proceedings of the European Conference on Cognitive Science, Saint-Malo,
April 1995.
[20] Daniel C. Dennett. The Intentional Stance. The MIT Press, Cambridge, MA, 1987.
[21] Mark dInverno, David Kinny, Michael Luck, and Michael Wooldridge. A formal specification of dMARS. In Munindar P. Singh, Anand S. Rao, and Michael Wooldridge,
editors, Intelligent Agents IVProceedings of the Fourth International Workshop on
Agent Theories, Architectures, and Languages (ATAL-97), Providence, RI, 2426 July,
1997, number 1365 in Lecture Notes in Artificial Intelligence, pages 155176. SpringerVerlag, Berlin, 1998.
[22] Mark dInverno and Michael Luck. Engineering AgentSpeak(L): A formal computational model. Journal of Logic and Computation, 8(3):127, 1998.
[23] Jacques Ferber. Multi-Agent Systems: An Introduction to Distributed Artificial Intelligence. Addison-Wesley, 1999.
[24] Michael Fisher. A survey of concurrent METATEMthe language and its applications.
In Dov M. Gabbay and H. J. Ohlbach, editors, Temporal LogicsProceedings of the
First International Conference, number 827 in Lecture Notes in Artificial Intelligence,
pages 480505. Springer-Verlag, Berlin, 1994.

RITA Volume 10 Nmero 1 2003

33

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

[25] Michael Fisher and Chiara Ghidini. The ABC of rational agent modelling. In Cristiano
Castelfranchi and W. Lewis Johnson, editors, Proceedings of the First International
Joint Conference on Autonomous Agents and Multi-Agent Systems (AAMAS-2002), 15
19 July, Bologna, Italy, pages 849856, New York, NY, 2002. ACM Press.
[26] Michael Fisher, Chiara Ghidini, and Benjamin Hirsch. Organising logic-based agents.
In Proceedings of the Second NASA/IEEE Goddard Workshop on Formal Approaches
to Agent Based Systems (FAABS 2002), Greenbelt, MD, October 29-31, 2002.
[27] Stan Franklin and Art Graesser. Is it an agent, or just a program?: A taxonomy for autonomous agents. In Jrg P. Mller, Michael J. Wooldridge, and Nicholas R. Jennings, editors, Intelligent Agents IIIProceedings of the Third International Workshop on Agent Theories, Architectures, and Languages (ATAL96), ECAI96 Workshop, Budapest, Hungary, number 1193 in Lecture Notes
in Artificial Intelligence, pages 2135. Springer-Verlag, Berlin, 1997.
URL:
http://www.msci.memphis.edu/franklin/aagents.html.
[28] Michael R. Genesereth and Steven P. Ketchpel.
Communications of the ACM, 37(7):4853,
July
http://logic.stanford.edu/sharing/papers/.

Software
1994.

agents.
URL:

[29] Michael P. Georgeff and A. L. Lansky. Reactive reasoning and planning. In Proceedings
of the Sixth National Conference on Artificial Intelligence (AAAI87), 1317 July, 1987,
Seattle, WA, pages 677682, Manlo Park, CA, 1987. AAAI Press / MIT Press.
[30] Koen V. Hindriks and Frank S. and de Boer. Formal semantics for an abstract agent
programming language. In Munindar P. Singh, Anand S. Rao, and Michael Wooldridge,
editors, Intelligent Agents IVProceedings of the Fourth International Workshop on
Agent Theories, Architectures, and Languages (ATAL-97), Providence, RI, 2426 July,
1997, number 1365 in Lecture Notes in Artificial Intelligence, pages 215229, Berlin,
1998. Springer-Verlag.
[31] Gerard J. Holzmann. Design and Validation of Computer Protocols. Prentice Hall,
1991.
[32] Nick Howden, Ralph Rnnquist, Andrew Hodgson, and Andrew Lucas. JACK intelligent agentsTM summary of an agent infrastructure. In Proceedings of Second International Workshop on Infrastructure for Agents, MAS, and Scalable MAS, held with the
Fifth International Conference on Autonomous Agents (Agents 2001), 28 May 1 June,
Montreal, Canada, 2001.
[33] Marcus J. Huber. JAM: A BDI-theoretic mobile agent architecture. In Proceedings
of the Third International Conference on Autonomous Agents (Agents-99), 15 May,
Seattle, WA, pages 236243. ACM Press, 1999.

34

RITA Volume 10 Nmero 1 2003

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

[34] Jomi Fred Hbner. Um Modelo de Reorganizao de Sistemas Multiagentes. PhD


thesis, Universidade de So Paulo, Escola Politcnica, 2003.
[35] David Kinny. The distributed multi-agent reasoning system architecture and language
specification. Technical report, Australian Artificial Intelligence Institute, Melbourne,
Australia, 1993.
[36] David Kinny. The calculus: An algebraic agent language. In John-Jules Meyer and
Milind Tambe, editors, Intelligent Agents VIII Proceedings of the Eighth International
Workshop on Agent Theories, Architectures, and Languages (ATAL-2001), August 13,
2001, Seattle, WA, number 2333 in Lecture Notes in Artificial Intelligence, pages 32
50, Berlin, 2002. Springer-Verlag.
[37] David Kinny. ViP: A visual programming language for plan execution systems. In Cristiano Castelfranchi and W. Lewis Johnson, editors, Proceedings of the First International Joint Conference on Autonomous Agents and Multi-Agent Systems (AAMAS-2002,
featuring 6th AGENTS, 5th ICMAS and 9th ATAL), 1519 July, Bologna, Italy, pages
721728, New York, NY, 2002. ACM Press.
[38] Sanjeev Kumar, Philip R. Cohen, and Marcus J. Huber. Direct execution of team specifications in STAPLE. In Cristiano Castelfranchi and W. Lewis Johnson, editors, Proceedings of the First International Joint Conference on Autonomous Agents and MultiAgent Systems (AAMAS-2002), 1519 July, Bologna, Italy, pages 567568, New York,
NY, 2002. ACM Press. Short paper.
[39] Jean Lave. Cognition in Practice: Mind, Mathematics and Culture in Everyday Life.
Cambridge University Press, 1988.
[40] Joo Alexandre Leite. Evolving Knowledge Bases: Specification and Semantics, volume 81 of Frontiers in Artificial Intelligence and Applications, Dissertations in Artificial Intelligence. IOS Press/Ohmsha, Amsterdam, 2003.
[41] Joo Alexandre Leite, Jos Jlio Alferes, and Lus Moniz Pereira. MIN ERVAa
dynamic logic programming agent architecture. In John-Jules Meyer and Milind Tambe,
editors, Intelligent Agents VIII Proceedings of the Eighth International Workshop on
Agent Theories, Architectures, and Languages (ATAL-2001), August 13, 2001, Seattle,
WA, number 2333 in Lecture Notes in Artificial Intelligence, pages 141157, Berlin,
2002. Springer-Verlag.
[42] Rodrigo Machado and Rafael H. Bordini. Running AgentSpeak(L) agents on
SIM_AGENT. In John-Jules Meyer and Milind Tambe, editors, Intelligent Agents VIII
Proceedings of the Eighth International Workshop on Agent Theories, Architectures,
and Languages (ATAL-2001), August 13, 2001, Seattle, WA, number 2333 in Lecture
Notes in Artificial Intelligence, pages 158174, Berlin, 2002. Springer-Verlag.

RITA Volume 10 Nmero 1 2003

35

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

[43] John-Jules Ch. Meyer. Agent languages and their relationship to other programming
paradigms. In Jrg P. Mller, Munindar P. Singh, and Anand S. Rao, editors, Intelligent Agents VProceedings of the Fifth International Workshop on Agent Theories,
Architectures, and Languages (ATAL-98), held as part of the Agents World, Paris, 4
7 July, 1998, number 1555 in Lecture Notes in Artificial Intelligence, pages 113131,
Heidelberg, 1999. Springer-Verlag. UCL-CS [RN/98/29].
[44] Robin Milner, Joachim Parrow, and David Walker. A calculus for mobile processes
(parts I and II). Information and Computation, 100(1):140 and 4177, September
1992.
[45] lvaro F. Moreira and Rafael H. Bordini. An operational semantics for a BDI agentoriented programming language. In Proceedings of the Workshop on Logics for AgentBased Systems (LABS-02), held in conjunction with the Eighth International Conference on Principles of Knowledge Representation and Reasoning (KR2002), April 22
25, Toulouse, France, pages 4559, 2002.
[46] lvaro F. Moreira, Renata Vieira, and Rafael H. Bordini. Extending the operational
semantics of a BDI agent-oriented programming language for introducing speech-act
based communication. In Proceedings of the Workshop on Declarative Agent Languages and Technologies (DALT-03), held with AAMAS-03, 15 July, 2003, Melbourne,
Australia, 2003.
[47] Gordon D. Plotkin. A structural approach to operational semantics. Technical report,
Computer Science Department, Aarhus University, Aarhus, 1981.
[48] Anand S. Rao. AgentSpeak(L): BDI agents speak out in a logical computable language. In Walter Van de Velde and John Perram, editors, Proceedings of the Seventh
Workshop on Modelling Autonomous Agents in a Multi-Agent World (MAAMAW96),
2225 January, Eindhoven, The Netherlands, number 1038 in Lecture Notes in Artificial Intelligence, pages 4255, London, 1996. Springer-Verlag.
[49] Anand S. Rao. Decision procedures for propositional linear-time belief-desire-intention
logics. In Michael Wooldridge, Jrg P. Mller, and Milind Tambe, editors, Intelligent
Agents IIProceedings of the Second International Workshop on Agent Theories, Architectures, and Languages (ATAL95), held as part of IJCAI95, Montral, Canada,
August 1995, number 1037 in Lecture Notes in Artificial Intelligence, pages 3348,
Berlin, 1996. Springer-Verlag.
[50] Anand S. Rao and Michael P. Georgeff. An abstract architecture for rational agents.
In Charles Rich, William R. Swartout, and Bernhard Nebel, editors, Proceedings of

36

RITA Volume 10 Nmero 1 2003

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

the Third International Conference on Principles of Knowledge Representation and Reasoning (KR92), 2529 October, Cambridge, MA, pages 439449, San Mateo, CA,
October 1992. Morgan Kaufmann.
[51] Anand S. Rao and Michael P. Georgeff. BDI agents: From theory to practice. In
Victor Lesser and Les Gasser, editors, Proceedings of the First International Conference
on Multi-Agent Systems (ICMAS95), 1214 June, San Francisco, CA, pages 312319,
Menlo Park, CA, 1995. AAAI Press / MIT Press.
[52] Anand S. Rao and Michael P. Georgeff. Decision procedures for BDI logics. Journal of
Logic and Computation, 8(3):293343, 1998.
[53] Mara Ribeiro Rodrigues, Antnio Carlos da Rocha Costa, and Rafael Heitor Bordini.
A system of exchange values to support social interactions in artificial societies. In
Proceedings of the Second International Joint Conference on Autonomous Agents and
Multi-Agent Systems (AAMAS-2003), Melbourne, Australia, 1418 July, 2003. To appear.
[54] J.S. Rosenschein and G. Zlotkin. Rules of Encounter: Designing Conventions for Automated Negotiation among Computers. MIT Press, Cambridge, MA, 1994.
[55] Yoav Shoham. Agent-oriented programming. Artificial Intelligence, 60:5192, 1993.
[56] Munindar P. Singh, Anand S. Rao, and Michael P. Georgeff. Formal methods in
DAI: Logic-based representation and reasoning. In Gerhard Wei, editor, Multiagent
SystemsA Modern Approach to Distributed Artificial Intelligence, chapter 8, pages
331376. MIT Press, Cambridge, MA, 1999.
[57] V. S. Subrahmanian, Piero Bonatti, Jrgen Dix, Thomas Eiter, Sarit Kraus, Fatma Ozcan, and Robert Ross. Heterogeneous Agent Systems. The MIT Press, 2000.
[58] Jorge A. R. Torres, Luciana P. Nedel, and Rafael H. Bordini. Using the BDI architecture
to produce autonomous characters in virtual worlds. In Proceedings of the Fourth International Conference on Interactive Virtual Agents (IVA 2003), Irsee, Germany, 1517
September, Lecture Notes in Artificial Intelligence, Berlin, 2003. Springer-Verlag. Short
paper, to appear.
[59] Birna van Riemsdijk, Wiebe van der Hoek, and John-Jules Ch. Meyer. Agent programming in dribble: from beliefs to goals using plans. In Jeffrey S. Rosenschein, Tuomas
Sandholm, Wooldridge Michael, and Makoto Yokoo, editors, Proceedings of the Second International Joint Conference on Autonomous Agents and Multi-Agent Systems
(AAMAS-2003), Melbourne, Australia, 1418 July, pages 393400, New York, NY,
2003. ACM Press.

RITA Volume 10 Nmero 1 2003

37

Linguagens de Programao Orientadas a Agentes: AgentSpeak(L)

[60] Willem Visser, Klaus Havelund, Guillaume Brat, and SeungJoon Park. Model checking programs. In Proceedings of the Fifteenth International Conference on Automated
Software Engineering (ASE00), 11-15 September, Grenoble, France, pages 312. IEEE
Computer Society, 2000.
[61] Gerhard Wei, editor. Distributed Artificial Intelligence Meets Machine Learning
Learning in Multiagent Environments. Number 1221 in Lecture Notes in Artificial Intelligence. Springer-Verlag, Berlin, 1997.
[62] Gerhard Wei, editor. Multiagent SystemsA Modern Approach to Distributed Artificial Intelligence. MIT Press, Cambridge, MA, 1999.
[63] Michael Wooldridge. Intelligent agents. In Gerhard Wei, editor, Multiagent Systems
A Modern Approach to Distributed Artificial Intelligence, chapter 1, pages 2777. MIT
Press, Cambridge, MA, 1999.
[64] Michael Wooldridge. Reasoning about Rational Agents. The MIT Press, Cambridge,
MA, 2000.
[65] Michael Wooldridge. An Introduction to MultiAgent Systems. John Wiley & Sons, 2002.
[66] Michael Wooldridge and Nicholas R. Jennings. Intelligent agents: Theory and
practice.
The Knowledge Engineering Review, 10(2):115152, 1995.
URL:
http://www.elec.qmw.ac.uk/dai/pubs.
[67] Michael J. Wooldridge, Nicholas R. Jennings, and David Kinny. The Gaia methodology
for agent-oriented analysis and design. Autonomous Agents and Multi-Agent Systems,
3(3):285312, 2000.
[68] Franco Zambonelli and H. Van Dyke Parunak. Signs of a revolution in computer science
and software engineering. In Paolo Petta, Robert Tolksdorf, and Franco Zambonelli,
editors, Proceedings of the Third International Workshop on Engineering Societies in
the Agents World (ESAW 2002), Madrid, Spain, 1617 September, number 2577 in
Lecture Notes in Artificial Intelligence, pages 1328, Berlin, 2003. Springer-Verlag.

38

RITA Volume 10 Nmero 1 2003

Você também pode gostar