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.