Fasci-Tech - Fatec São Caetano do Sul

Transcrição

Fasci-Tech - Fatec São Caetano do Sul
Fasci-Tech
COMUNICAÇÃO DE AGENTES UTILIZANDO O PADRÃO FIPA
DE COMUNICAÇÃO COM APLICAÇÃO EM JOGOS DIGITAIS
Nilo Neregato1
Prof. Msc. Leandro Ramos da Silva 2
Resumo
Muitos jogos digitais oferecem um ambiente virtual que proporciona ao jogador interatividade com objetos autônomos baseados em inteligência artificial.
Tal recurso pode ser aplicado utilizando a tecnologia de sistemas multiagentes. Como se trata de vários agentes interagindo, a comunicação é fundamental para interagirem entre si e atuerem com o ambiente. Assim, este trabalho tem como objetivo apresentar o desenvolvimento de um jogo utilizando
conceitos e o paradigma de sistemas multi-agentes baseado em um framework
open source.
Palavras-chave: Sistemas multi-agentes; Cougaar; Jogos Digitais; Comunicação.
Abstract
Many digital games offer a virtual environment that gives the player interaction
with autonomous objects based on artificial intelligence. This feature can be
applied using the technology of multi-agent systems. As there are many interacting agents communication in these environments it is essential for interaction between them the acting with the environment. This paper aims to present
the development of a game using the technique of multi-agent systems based
on open source framework.
Keywords: Multi-agents Systems; Cougaar; Digital Games; Communication.
1.
Introdução
Apesar de bem difundidas as pesquisas sobre agentes, não há uma definição pre-
cisa sobre o termo. Mas há fontes como Russell e Norving, que definem o termo agente
de forma prática: “as ações autônomas são baseadas em sensores que interagem com o
1
Aluno de Iniciação Científica do Curso de Tecnologia em Jogos Digitais da FATEC-São Caetano do
Sul.
2
Professor da FATEC-São Caetano do Sul (Orientador do Trabalho).
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
105 a 115.
Fasci-Tech
ambiente e os atuadores que respondem ao ambiente” (2003, p. 33, tradução nossa).
Segue abaixo uma figura que representa um agente:
Figura 1. Agente.
Fonte: Russel e Norving (2003).
As percepções são as entradas de dados obtidas do ambiente por sensores. Uma
vez obtida uma determinada informação, o agente pode processá-la de acordo com seu
comportamento, que depende da função a ser desempenhada no ambiente. Já a ação é a
resposta ou retorno da informação processada que o agente envia ao ambiente.
Já Wooldridge define o conceito da seguinte forma: “Um agente é um sistema
computacional que está situado em algum ambiente, e é capaz de ter ações autônomas
neste ambiente, a fim de cumprir seus objetivos de projeto” (2004, p. 34, tradução nossa). A autonomia é uma das características que ajudam agentes a trabalharem em conjunto e agirem de forma independente.
Um jogo que utiliza o conceito de agentes em seus Non-player Characters
(NPCs) implementa este paradigma como um conjunto de agentes que têm um objetivo
comum a ser solucionado. Ou seja, cada agente ou NPC, neste caso, representa uma
entidade de software com funções adequadas a resolver uma parcela do problema e, em
conjunto com os demais, estas entidades formam um grupo que visão atingir um objetivo comum. O sistema que possui mais de um agente é classificado sistema multiagentes.
Quando um conjunto ou grupo de agentes trabalha para solucionar ou atingir um
objetivo comum, é fundamental a comunicação entre eles. Em sistemas com milhares de
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
105 a 115.
Fasci-Tech
agentes e distribuídos, torna-se difícil a comunicação sem a utilização de um padrão,
como uma linguagem comum. Por isso, em 1996 foi criado um grupo, composto por
grandes empresas do ramo, que discute e define os padrões de comunicação de agentes
a Foundation for Intelligent Physical Agents (FIPA).
A implementação de softwares com esta tecnologia ocorre muitas vezes por
meio de um framework adequado, que engloba funcionalidades genéricas à tecnologia e
até a um padrão de comunicação. Existem vários frameworks dedicados a sistemas multi-agentes, como: Cougaar, Jade, Jadex, Cybele, Soar, Nuin, Agent Factory, 2APL, Jam,
etc. Dentre as ferramentas existentes encontram-se as com código aberto e proprietário.
2.
Sistema Multi-agentes
Wooldridge define um sistema multi-agentes como “[...] aquele que consiste em
um número de agentes, que interagem uns com os outros, geralmente através da troca de
mensagens [...]” (2004, p. 3, tradução nossa). Bass também usa o termo interação na sua
definição, ou seja, “[...] uma rede flexível de solucionadores de problemas (agentes) que
interagem para resolver problemas que estão além das capacidades individuais ou o conhecimento de cada agente em solucionar tais problemas [...]” (2010, p. 2, tradução nossa). De acordo com as duas definições anteriores, podemos concluir que a interação
entre os agentes é fundamental em sistemas multi-agentes.
Como o comportamento de um agente representa sua função, dificilmente ele
realizará várias atividades. Assim, se um jogo implementa o conceito de agentes em
seus NPCs, os comportamentos dos agentes são diferenciados. Porém, quando as entidades agem em conjunto, um objetivo em comum pode ser atingido com maior probabilidade. Pode-se comparar com um time de futebol, onde temos os personagens desde o
goleiro até o atacante com funções diferentes; no entanto o objetivo é o mesmo – vencer
o jogo.
Uma forma de atribuir uma determinada função a um agente é adotar como base
o conceito de noção fraca e noção forte citada em Wooldridge e Jennings (1995, p. 4),
que definem os tipos possíveis de agentes existentes. Com base na noção fraca, podemos ter agentes com as seguintes características:
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
105 a 115.
Fasci-Tech
Autonomia: são agentes que operam sem a intervenção direta de humanos e
possuem algum controle sobre suas ações e estados internos;
Habilidade social: os agentes interagem com outros agentes ou até mesmo
com humanos através de algum tipo de linguagem de comunicação;
Reatividade: os agentes percebem o ambiente (que pode ser o mundo físico, a
internet, ou a combinação desses ou outros ambientes) e respondem em tempo hábil de acordo com as mudanças que ocorrem no ambiente;
Pró-atividade: quando os agentes não somente agem e respondem ao ambiente e, também, antecipam futuros problemas, necessidades ou mudanças no
ambiente e tomam suas decisões para agir;
Continuidade temporal: os agentes são processos em execução contínua, o
que significa que podem estar em execução em primeiro plano ou estarem
aguardando (adormecidos) algum pré-requisito em segundo plano. (tradução
nossa)
Essas características quando implementadas, definem o comportamento a ser
desempenhado pelo agente. Neste projeto, os NPCs devem atuar de forma independente
das intervenções humanas, trocar mensagens entre si e agir de acordo com as mudanças
do jogador.
Já a noção forte, “[...] é uma extensão da noção fraca com o incremento das propriedades mentais como: crença, desejo e intenção (BDI - Belief, Desire and Intention)
[...]” (WOOLDRIDGE e JENNINGS, 1995, p. 5, tradução nossa). BDI é uma arquitetura aplicada a sistemas de raciocínio, que aborda técnicas de inteligência artificial, porém
não faz parte do escopo do projeto.
3.
Framework
Para facilitar a programação em ambiente distribuído e a utilização de inteligên-
cia artificial, é comum usar um framework como ferramenta, como é comprovado em
Silva e Ito (2009). Isso porque a maioria das aplicações de sistema multi-agentes se enquadram nesses cenários. Muitos jogos digitais são desenvolvidos sob tais conceitos,
como jogos de Role Playing Game (RPG), citado em Silva (2005). Os jogos World of
Warcraft, Dungeons and Dragons Online e o brasileiro Erina são desenvolvidos com
base em frameworks, neste caso proprietário ou de código fonte fechado.
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
105 a 115.
Fasci-Tech
O framework escolhido para desenvolver este projeto é o Cougaar (Cognitive
Agent Architecture). Foi desenvolvido pela agência DARPA (Defense Advanced Research Projects Agency) para ser aplicado em programas de logística militar. Este framework foi desenvolvido em JAVA e também é livre. A sua arquitetura é robusta, porque
foi desenvolvido para gerenciar milhões de objetos, dezenas de milhares de processos
rodando, milhares de bancos de dados e sistemas com diferentes modelos de dados e
protocolos, sendo essas as principais características.
4.
Cougaar e sua Arquitetura
Bass (2010, p. 2, tradução nossa) afirma que desde o início da década de 1990 a
idéia de sistema multi-agentes começou a introduzir novos conceitos na área de ciência
da computação. Essa repercussão ocorre principalmente devido às novas arquiteturas
que esses sistemas implementam desde então. As arquiteturas de tais sistemas são robustas e muitas vezes comportam aplicações distribuídas.
De acordo com o Cougaar Architecture Document (CAD, 2004), um agente neste framework é uma entidade de software que possui comportamentos próprios à organização da qual faz parte. Já uma sociedade é uma coleção de agentes que interagem
para solucionar um problema comum. Com isso temos o conceito de comunidade que é
um conjunto de agentes com um propósito funcional comum, sendo que uma sociedade
pode ser composta por uma ou mais comunidades. Desta forma, se uma comunidade
tem determinada especialidade, ela pode ser usada em mais de uma sociedade.
Uma comunidade é composta por um ou mais nós, sendo que cada nó é representado por uma Java Virtual Machine (JVM) e contém vários agentes. Um host físico
ou um computador pode conter mais de um nó e os agentes que o compõem compartilham o mesmo processador, memória e periféricos. Um nó gerencia a troca de mensagens entre os agentes como um roteador, o que possibilita a comunicação entre agentes
no mesmo nó ou JVM e também a ambientes externos, ficando ao encargo de cada agente gerenciar suas filas de saída e entrada de mensagens.
O agente nesta arquitetura pode ser dividido em duas partes principais: plugins,
que representam os comportamentos e a lógica de negócio, sendo que um agente pode
possuir mais de um; blackboard, onde o conteúdo de cada plugin é publicado ou execuFasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
105 a 115.
Fasci-Tech
tado. Olhando pela ótica da Programação Orientação a Objetos (POO), um blackboard
tem o comportamento similar a um container, que contém uma coleção de componentes
ou objetos durante sua execução.
Figura 2. A arquitetura de um agente segundo o framework Cougaar.
Fonte: Cougaar Architecture Document (2004).
Essa arquitetura pode ser aplicada a jogos de diferentes dimensões, com conceito
de sistema distribuído ou não (este caso se aplicaria a jogos que utilizam uma rede de
computadores) e também pode ser aplicada a simuladores. Esse modelo de arquitetura
permite o desenvolvimento de games com possibilidade de expansão, porque é possível
iniciar um aplicativo com um pequeno conjunto de agentes que podem evoluir de nó
para comunidade ou até para sociedade dependendo da dimensão do projeto.
5.
Comunicação
A interação de um agente ocorre por meio de comunicação, seja na utilização de
sensores, que permitem que o agente interaja com o meio físico (câmeras, microfones,
etc), ou utilizando mensagens, que possibilitam a comunicação com outros agentes. Esta
última é fundamental em sistemas multi-agentes e foi relatada em Ito (1999), onde a
solução do problema depende da interação dos membros que compõem uma determinada comunidade de agentes. “Como em qualquer sociedade a comunicação entre os
membros é de fundamental importância. Isso não seria diferente numa sociedade de
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
105 a 115.
Fasci-Tech
agentes na qual estes se comunicam na busca de atingir seus objetivos [...]” (REZENDE, 2003, p. 38).
No Cougaar e em outros frameworks como JADE ( BATISTA, 2008), estão disponíveis os conceitos de Páginas Brancas e Amarelas, que viabilizam a comunicação e
agilizam a solução de problemas. As Páginas Brancas (White Pages) são um conjunto
de tabelas com o nome e o endereço de cada agente e seu funcionamento é similar ao de
uma lista telefônica, que permite os agentes realizem consultas na tabela e pesquisarem
por endereços de outros agentes para o envio de mensagens. Já as Páginas Amarelas
(Yellow Pages) são representadas por um diretório de serviços que trabalha com requisições de “capacidades”. Isto é, há um cadastro prévio das capacidades de cada agente e
isso possibilita que outros agentes realizem consultas e encontrem ajudantes ou serviços
de acordo com as habilidades disponíveis e o problema em questão, podendo-se comparar ao funcionamento de uma lista de classificados.
6.
O Padrão FIPA de Comunicação
A Foundation for Intelligent Physical Agents (FIPA) foi criada no ano de 1996
por um grupo de centros de pesquisa, empresas e universidades interessadas em criar
um padrão de comunicação que permitisse a implementação de sistemas baseados em
agentes. Este padrão é composto por cerca de 40 documentos, que são divididos em
cinco áreas principais, como na figura 3.
Figura 3. Organização do padrão FIPA.
Fonte: Gluz e Viccari (2003).
Na Arquitetura Abstrata, é descrito como dois agentes fazem para trocar mensagens. Antes de qualquer mensagem ser enviada, é necessário que o agente se registre
numa plataforma FIPA ou componente do sistema multi-agente, que dispõem o devido
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
105 a 115.
Fasci-Tech
suporte à linguagem, protocolo e serviços de comunicação. As figuras a seguir exemplificam o registro e a requisição de um agente em um diretório de serviços.
Figura 4 O registro de um agente com um diretório de serviço.
Fonte: FIPA Abstract Architecture Specification (2001).
Figura 5 A solicitação de um agente num diretório de serviço.
Fonte: FIPA Abstract Architecture Specification (2001).
O registro funciona como um cadastro do agente e normalmente ocorre quando o
agente é instanciado ou criado. Já a requisição ocorre por meio de troca de mensagem
de acordo com a necessidade de outros agentes. O diretório de serviços são as páginas
amarelas, representadas por um objeto. O agente envia uma mensagem a este objeto
para requisitar um agente com determinada função. Essa mensagem segue um padrão e
pode englobar vários campos de acordo com a necessidade. Segue um exemplo de mensagem onde Gluz e Viccari (2003, p. 39) exemplificam um agente i que pergunta se o
agente j está registrado no domínio d1:
(query-if
:sender (agent-identifier :name i)
:receiver (set (agent-identitfier :name j))
:content "((registered (server d1) (agent j)))"
:reply-with r09 )
O identificado query-if é denominado ato comunicativo e “representa uma ação
de pergunta a um agente”. Já os demais indicadores são parâmetros de mensagem, onde:
sender: é o emissor da mensagem;
receiver: é o receptor da mensagem;
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
105 a 115.
Fasci-Tech
content: é o conteúdo a ser transportado no envio da mensagem;
reply-with: é um contudo que será usado na resposta da mensagem para identificação;
A ação de registro tem a vantagem de tornar mais ágil a procura de um agente,
desde que esteja devidamente inserido em um diretório. Caso o agente faça parte de um
nó ou mesmo um host e o mesmo não esteja registrado, pode ser uma desvantagem,
porque a habilidade ou conhecimento existe no contexto, mas não será encontrada até
que o agente realize o cadastro. Para evitar esta situação, é interessante que o game ou
aplicativo tenha como rotina o registro de todos os agentes durante o processo de instância.
7.
Metodologia
A primeira etapa deste trabalho foi a pesquisa que se iniciou com a teoria e os
conceitos sobre sistemas multi-agentes. Após esta etapa foi possível identificar um framework que se adéque ao projeto. O estudo da arquitetura do framework é o próximo
foco de pesquisa e merece dedicação devido à complexidade. Juntamente com o estudo
do framework e a pesquisa dos padrões de comunicação FIPA foram iniciados. Após o
conhecimento do framework, segue em paralelo o projeto dos diagramas de comunicação e classes. E por último, a implementação, testes e ajustes.
8.
Considerações Finais
Até o presente momento, foi é possível averiguar que se justifica a aplicação de
sistema multi-agentes em jogos onde um conjunto de NPCs utiliza a comunicação como
estratégia para derrotar o jogador, de acordo com o estudo já realizado. Isto porque a
arquitetura de tal sistema é própria para aplicações deste tipo também, além de possibilitar a implementação comportamentos variados, como o exemplo do conceito de noção
fraca citado por Wooldridge e Jennings.
Com relação ao framework, sua configuração é trabalhosa, além de haver barreiras como sites de consulta da ferramenta desatualizados ou inacessíveis e não há um
fórum que esteja ativo para postar dúvidas. Um dos únicos sites ativos pertence à emFasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
105 a 115.
Fasci-Tech
presa Cougaar Software Inc., que oferece soluções baseadas neste framework. Isto pode
indicar a migração do framework de open source para privado, como ocorreu com o
sistema operacional Red Hat.
Como este é um trabalho em andamento, pretende-se ainda concluir a instalação
e configuração do framework assim como a implementação do jogo. Visto que será necessário realizar testes da primeira versão do projeto e talvez ajustes.
9.
Referências:
A BBN TECHNOLOGIES DOCUMENT. Cougaar Architecture Cocument (CAD).
2004.
BASS, Len. Architectute-Based Design of Multi-Agent Systems. Bélgica: Springer,
2010.
BATISTA, F. M. André. Manual Complementar do Projeto de Pesquisa: Sistemas
Multiagentes na Construção de um Middleware para Suporte a Ambientes Computacionais. Santo André: UFABC, 2008.
FIPA. Abstract Architecture Specification - SC00001L. v. 12.3, 2002. Disponível em
http://www.fipa.org/specs/fipa00001/SC00001L.html, Acesso em 15/05/2011.
GLUZ, C. João; VICCARI, M. Rosa. Linguagem de Comunicação entre Agentes:
Fundamentos, Padrões e Perspectivas. 2003. 50 f. Dissertação (Graduação em Engenharia de Sistemas Digitais) - Universidade Estadual do Rio Grande do Sul, Porto Alegre. 2003.
ITO, Márcia; Uma Análise do Fluxo de Comunicação em Organizações Dinâmicas
de Agentes. 1999. 172 f. Dissertação (Mestre em Engenharia) - Escola Politécnica,
Universidade de São Paulo, São Paulo. 1999.
REZENDE, M. Flávio. Utilizando padrões de comunicação entre agentes num framework de suporte a CLI. 2003. 85 f. Dissertação (Graduação em Ciência da Computação) - Universidade Tiradentes, Aracaju. 2003.
RUSSELL, J. Stuart; NORVIG, Peter. Artificial Intelligence: A Modern Approach.
New Jersey: Pearson Education, 2003.
SILVA, C. L. Felipe. Agentes Inteligentes em Jogos de Computadores. 2005. 23 f.
Dissertação (Graduação em Ciência da Computação) - Instituto de Matemática e Estatística, Universidade de São Paulo, São Paulo. 2005.
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
105 a 115.
Fasci-Tech
SILVA, R. Leandro; ITO, Márcia. Framework para o Desenvolvimento de Organizações de Sistemas Multi-agentes com Distribuição Autônoma de Tarefas. São Paulo: Centro Paula Souza-Etec,
WOOLDRIGE, Michael. An Introduction to Multiagents Systems. Univerity of Liverpool: John Wiley & Sons, 2004.
WOOLDRIDGE, Michael; JENNINGS, R. Nicholas. Intelligent agents: Theory and
Practice. Reino Unido: Universidade de Cambridge, The Knowledge Engineering Review, 1995.
Fasci-Tech – Periódico Eletrônico da FATEC-São Caetano do Sul, São Caetano do Sul, v. 1, n. 5, Out/Dez 2011, p.
105 a 115.