SMA para posicionamento de jogadores Voleibol via
Transcrição
SMA para posicionamento de jogadores Voleibol via
SMA para posicionamento de jogadores Voleibol via AgentSpeak e Jason Vanessa Menegotto1, Renan Spencer Trindade2, Alexandre de O. Zamberlam2 1 Universidade Feevale – Novo Hamburgo – RS – Brasil 2 Centro Universitário Franciscano – Santa Maria – RS – Brasil [email protected], [email protected], [email protected] Abstract. This paper describes the research made about the use of Multi-Agent Systems in Volleyball environment. In this paper, by the language AgentSpeak(L) and its interpreter Jason, it was possible specify and implement features of volleyball players (agents) using the BDI theory for cognitive agents. As a result, in this paper, there is a report of the construction of a simulation model (multi-agent system) simply to an action of a volleyball game. Resumo. Este artigo descreve parte da pesquisa realizada sobre Sistemas Multiagentes no Voleibol. Através da linguagem AgentSpeak(L) e do seu interpretador Jason foi possível modelar e implementar características e comportamentos de jogadores de voleibol (agentes) obedecendo a teoria BDI de agentes cognitivos. Assim, no texto há um relato de uma parte da construção de um modelo de simulação (sistema multiagente) simplificado para uma dinâmica de um jogo de voleibol. 1. Introdução Com as evoluções tecnológicas, os softwares apresentam comportamentos cada vez mais sofisticados. Com a finalidade de atender as necessidades da sociedade tecnológica, a Inteligência Artificial possui sistemas que agem em prol de um usuário ou de outros programas, seguindo regras de relacionamento do ambiente em que está inserido. Esse tipo de software pode ser invocado não apenas por comandos (do sistema ou usuário), mas também por decisão própria, tendo sua origem relacionada ao conceito de agentes. Na investigação que originou este artigo, optou-se em trabalhar com agentes cognitivos com arquitetura BDI (Belief, Desire and Intention), por existir uma linguagem e um interpretador estáveis e com suporte comprovados. Então, a proposta da pesquisa, em que este artigo faz menção, é modelar e implementar agentes BDI utilizando a linguagem de programação AgentSpeak(L) e o interpretador Jason. Um ambiente multiagente foi modelado e implementado seguindo a abordagem citada, mas neste texto somente detalhes de um agente Levantador são tratados. Esse ambiente construído é de simulação de posicionamento em quadra de atletas em equipes de voleibol. O texto está dividido em 5 seções. A seção 2 apresenta o contexto do trabalho, ou seja, a motivação da pesquisa e conceitos referentes ao jogo de voleibol. A seção 3 aborda alguns conceitos introdutórios sobre Sistemas Multiagentes e a teoria BDI. Na seção 4, são descritos a linguagem AgentSpeak(L) e seu interpretador Jason. Na seção 5, é descrito parte do sistema desenvolvido, enfatizando características e comportamentos do agente Levantador. Finalmente, algumas considerações sobre este trabalho são apresentadas. 2. Contexto As disciplinas de voleibol, dos cursos de Educação Física, possuem conteúdo de gestão de equipes de voleibol. Nesse tópico, são abordadas a organização e a execução de treinamentos, táticas, estratégias para o jogo (jogadas, posicionamentos em quadra dos atletas, tipos de saques e ataques), entre outros. Porém, a visualização do que é estudado é dificultado pela quantidade de informações que devem ser avaliadas. Por isso, a idéia da pesquisa referente a este trabalho - modelar e implementar um sistema multiagente que simule o posicionamento de atletas em posições de ataque/bloqueio na zona de rede, possibilitando que os acadêmicos criem situações utilizando atletas virtuais por meio da teoria BDI. Assim sendo, os acadêmicos terão a possibilidade de acompanhar visualmente o comportamento dos agentes (jogadores) em relação as suas posições e jogadas na zona de rede. 2.1. Voleibol De acordo em Voleibol.Org (2008), a quadra do jogo de voleibol é um retângulo medindo 18 por 9 metros, circundada por uma zona livre de no mínimo 3 metros de largura em todos os lados. A quadra é dividida em zonas e áreas: zona de ataque (dentro da linha dos 3 metros) e zona de defesa (saque). Em relação a dinâmica do jogo, no momento em que a bola é golpeada pelo sacador, cada equipe deve estar posicionada dentro de sua própria quadra na ordem definida pela rotação. A posição dos jogadores é numerada, sendo que os três jogadores junto à rede são os jogadores da linha de frente e ocupam as posições 4(frente-esquerda), 3(meio) e 2(frente-direita); os outros três são os jogadores da linha de trás, ocupando as posições 5(atrás-esquerda), 6(atrás-centro) e 1(atrás-direita). A Figura 1 ilustra uma quadra de voleibol e as posições de ocupação. Figura 1 – Quadra de voleibol. 2.2 Descrição do sistema O sistema multiagente projetado comporta-se como um simulador, fazendo referência ao cenário de uma quadra de voleibol. Nesse ambiente, existem quatro tipos de agentes: i) agentes levantadores, ii) agentes opostos (saídas de rede), iii) agentes meios, iv) agentes pontas (entrada de rede). Nesse cenário, o objetivo comum dos agentes é trocar de posição com outros agentes, buscando a melhor posição para vencer a jogada. Sendo que, em quadra, são totalizados doze jogadores, seis para cada equipe: 1 levantador, 1 oposto, 2 meios e 2 pontas. Para a criação do sistema foi necessário desenvolver quatro agentes diferentes e um ambiente. Dessa forma, o desenvolvimento do sistema multiagente de voleibol passou por quatro etapas: i) descrição geral do sistema e especificação informal do comportamento dos agentes; ii) especificação em AgentSpeak(L) do conjunto de crenças e planos de cada tipo de agente; iii) implementação em Java do ambiente (para exibição no modo console/texto da ferramenta Jason); iv) execução do sistema no interpretador Jason. Contudo, para este artigo, somente a modelagem e implementação do Levantador foram apresentados. 3. Sistemas Multiagentes e a Teoria BDI Atualmente, percebe-se, cada vez mais, o desenvolvimento de softwares com comportamentos mais sofisticados, utilizados em várias áreas do conhecimento (como em sistemas de tomada de decisão), conhecidos como agentes. Segundo Hübner (2003), um agente é um software que age em prol do usuário ou de outro programa, obedecendo a regras de relacionamento da sociedade em que está inserido. Tais ações comportamentais são decididas quando melhor lhe convir. Essa idéia é que agentes não são somente invocados exclusivamente por uma tarefa, mas também ativados por decisão própria. Existem diversos tipos de agentes, entre eles os cognitivos, que podem ser baseados em estados mentais, com capacidade de raciocínio, ou seja, capazes de construir um plano, ou planos, de ações que os levam a um estado pretendido. Esse tipo de agente possui características particulares como [Bordini e Vieira, 2003]: - autonomia funcional; - encontra-se continuamente em funcionamento; - é sociável, ou seja, possui capacidade de comunicação/interação; - o mecanismo de controle é deliberativo; - possui memória; - as sociedades são formadas por poucos agentes. As estruturas desses agentes são de entidades cujo estado é constituído por componentes mentais, tais como crenças, desejos, capacidades, escolhas e compromissos. Dentro das arquiteturas baseadas em estados mentais encontra-se a abordagem de BDI, que tem sua origem no modelo de raciocínio prático humano. O nome atribuído ao modelo é justificado pelos estados mentais: crenças (believe), desejos (desires) e intenções (intentions). Essa arquitetura representa seus processos internos através desses estados mentais e define um mecanismo de controle que seleciona de maneira racional o curso das ações [Giraffa, 1999]. Os Sistemas Multiagentes (SMA), baseados em agentes da arquitetura BDI, possuem o comportamento de um grupo de agentes projetados com técnicas de IA clássica, influenciadas pela sociologia que possibilita a concepção de sistemas com propriedades que somente as sociedades possuem [Hübner, 2003]. O principal enfoque dos Sistemas Multiagentes é promover mecanismos que possibilitem a criação de sistemas computacionais a partir de entidades de softwares autômatos que interagem através de um ambiente compartilhado por todos agentes de uma sociedade, e sobre o qual os agentes atuam alterando seu estado [Bordini; Vieira; Moreira, 2001]. Este trabalho, dessa forma, descreve a modelagem e a implementação de um agente baseado no modelo BDI de agentes inteligentes (cognitivos). Esse modelo de agente é bastante estudado e se encontra consolidado, mas são poucos os ambientes de programação que dão suporte adequado. Portanto, para desenvolver um agente, logo um sistema multiagente, baseado na arquitetura BDI, há a necessidade de compreender, pelo menos, uma linguagem orientada a esse paradigma, para que sirva tanto como especificação, quanto de implementação. 4. AgentSpeak(L) e Jason Com base no modelo de cognição, fundamentado nas três principais atitudes mentais as crenças, desejos e as intenções (BDI) - foram criadas várias linguagens com a finalidade de modelar e implementar agentes baseados nessas atitudes, entre elas, a linguagem AgentSpeak(L). Para consultar as diferentes linguagens e ambientes de desenvolvimento de agentes desse paradigma, sugere-se consultar [Zamberlam, 2001]. 4.1. A linguagem AgentSpeak(L) A linguagem foi projetada somente para programação de agentes BDI, sendo uma extensão da programação em lógica [Rao, 1996]. Essa linguagem tem sido a mais utilizada na implementação de agentes inteligentes. De acordo com o que foi apresentado em Bordini e Vieira (2003), em AgentSpeak(L) um agente corresponde à especificação de um conjunto de crenças que formarão a base de crenças inicial e um conjunto de planos. A base crenças de um agente é formada pela coleção de átomos de crenças e literais de crença: um átomo de crença forma um predicado de primeira ordem na notação lógica usual; as literais de crença são formadas por átomos de crenças ou suas negações. Os planos fazem referência a ações básicas que um agente é capaz de executar em seu ambiente. Essas ações são definidas por atributos com símbolos predicativos especiais (símbolos de ação) usados para atingir ações de produtos predicados. Um plano é formado por um evento ativador (propósito do plano), seguido de uma conjunção de literais de crença que representam um ‘contexto’. O contexto deve ser conseqüência lógica do conjunto de crenças do agente no momento em que o evento é selecionado pelo agente para o plano ser considerado ‘aplicável’. O restante do plano é seqüência de ações básicas ou sub-objetivos que o agente deve atingir ou testar quando uma instância do plano é selecionada para execução [Bordini; Vieira; 2003]. A Figura 2 ilustra a gramática essencial para declaração de agentes, suas crenças e seus planos. agente ::= crenças planos crenças ::= crença1 ... crençan planos ::= plano1 ... planon plano ::= evento : contexto -> corpo evento ::= +crença | -crença | +!objetivo contexto ::= crença | not(crença) | contexto {& ou |} contexto | true corpo ::= objetivo | ?objetivo | -crença | ação | corpo crença ::= átomo objetivo ::= átomo átomo ::= predicado(termo1,...termon) Figura 2 – Gramática AgentSpeak(L) [Hübner; Bordini; Vieira, 2004] 4.2. O interpretador Jason Jason permite desenvolver e por em funcionamento agentes cognitivos baseados no modelo BDI programados em AgentSpeak(L). Esse ambiente inclui comunicação entre agentes baseada na teoria de atos de fala [Hübner; Bordini; Vieira, 2004]. A ferramenta Jason, de fato, é um plugin da ferramenta JEdit. Com a utilização do SACI (Simple Agent Communication Infrastructure), um sistema multiagente desenvolvido via Jason pode funcionar de maneira distribuída. Uma característica importante do Jason, comparando com outros sistemas BDI, é que ele é multi-plataforma (característica herdada de sua implementação em Java) e está disponível como Open Source sob a licença GNU LGPL [Hübner; Bordini;Vieira, 2004]. A Figura 3 mostra a interface do ambiente Jason como plugin do editor JEdit. Figura 3 – Construção do projeto do SMA na ferramenta Jason 5. Organização do sistema proposto Em relação ao processo de desenvolvimento do sistema, criou-se um projeto com extensão ‘.mas2j’, em que foram definidos a infraestrutura do SMA e seus agentes. A Figura 3 também ilustra a criação do projeto. A comunicação entre os agentes e o ambiente é realizada através da troca de mensagens, sendo que a maior parte das ações realizadas consiste em inserir, atualizar e consultar dados (crenças). Para isso, foi desenvolvido um ambiente que, além das características normais, permite a inserção manual (em tempo de execução) da equipe responsável pelo saque e a posição dos atletas na quadra. O objetivo principal dessa interação é a simulação de situações reais. Pela característica do Jason em interpretar código Java, o ambiente foi desenvolvimento nessa linguagem. O código que descreve a criação do ambiente (VoleiEnv) segue na Figura 4. O principal método da classe ‘VoleiEnv’ é o executeAction(). Esse método é responsável pela execução de ações no ambiente solicitadas pelos agentes. Ele recebe como parâmetro o nome do agente e a ação que deve ser executada. O método init() é responsável pelas percepções iniciais dos agentes. Nele, são informados a equipe que inicia o jogo e as posições iniciais dos agentes (jogadores), sendo que essas informações são informadas pelo usuário por meio de caixas de diálogo. O que torna possível a interação com o usuário e, posteriormente, gerando as percepções para os agentes nos ambiente. //Criação e manipulação do Ambiente import java.util.*; import jason.*; public class VoleiEnv extends Environment { private Logger log = Log.getLogger("Voleibol.mas2j."+VoleiEnv.class.getName()); public void init(String[] args) { //rotina que recebe qual time sai sacando //rotina que recebe as posições iniciais dos jogadores //rotina que adiciona as percepções para os agentes addPercept(...); } public boolean executeAction(String ag, Structure act) { /* rotinas para implementar as ações de ambiente solicitadas/enviadas pelos agentes */ return true; } } Figura 4 – Código java para definição do ambiente VoleiEnv. 5.1. Especificação de agentes Nesta seção, são apresentadas as especificações das crenças, percepções e planos do agente Levantador. Para melhor compreensão, observe a Figura 5 que ilustra quais são as ações, percepções e mensagens que o agente envia a outros (Diagrama de Visão Geral). Para a realização de cada ação, devem ser atendidas as condições, que validam as percepções que o agente possui. No Quadro 1 estão todas as ações, percepções e condições relacionadas ao agente Levantador. Para que ocorra a simulação, a primeira percepção que o agente possui é a do início do jogo, aqui chamada de saque, que é disparada pelo ambiente após ser informado o time responsável pelo saque inicial e a posição de cada agente em quadra. No momento em que o agente percebe que o saque foi realizado, a bola está em jogo e a primeira ação é armazenar a sua posição original (ou posição inicial), ou seja, adicionar a base de crenças, conforme Quadro 1. Figura 5 – Diagrama de Visão Geral do agente Levantador Quadro 1 – Percepções, ações e condições do agente Levantador. Percepção (evento ativador) Ação realizada (corpo do plano) Condição (contexto) saque(_) guardarPosicaoOriginal - saque(_) moverPosicao(levantador, 1) posicaoOriginal(levantador, 5) ou posicaoOriginal(levantador, 6) saque(_) moverPosicao(levantador, 2) posicaoOriginal(levantador, 3) ou posicaoOriginal(levantador, 4) ponto(_) voltarPosicao levantador(PosicaoOriginal, P) diferente levantador(Posicao, P) ponto(suaEquipe) moverPosica(posição - 1) saque(outraEquipe) ponto(suaEquipe) sacar posicao = 1 Após a adição da crença, é necessário que o agente verifique se está na sua posição ideal (no caso do levantador as posições idéias são: posição 2, se estiver na linha de frente; posição 1, se estiver no fundo). Caso o agente não esteja ocupando a posição correta, ele deve verificar qual o agente está ocupando sua posição e enviar instrução de troca de posição ao agente. Por exemplo, “.send(meioA,achieve,posicao([agente],POS))”. Com isso, o agente que estiver ocupando a posição ideal do levantador, move-se para a posição original do levantador e o levantador passa a ocupar a sua posição ideal, ambos posteriormente adicionam a crença de nova posição. Quando o agente Levantador estiver ocupando a sua posição ideal, dispara a ação “ pontuar”, que é enviada ao ambiente, que por sua vez sorteia o ponto e devolve aos agentes qual equipe pontuou. No momento em que o agente percebe que alguém pontuou, adiciona a percepção para voltar as posições originais “!voltaposicao(_)”. No momento em que o agente perceber que deve voltar à posição original, o plano para voltar posição é ativado. No caso da posição atual ser diferente da original, há um plano que realiza a troca “ moverPosicao(levantadorA,POSICAO)” e adiciona a nova crença indicando a posição atual “+posicao(levantadorA, POSICAO)”. A última verificação realizada, antes de ocorrer um novo saque pela equipe que pontuou, é verificar qual foi a equipe que realizou o saque anterior. Caso o agente perceba que foi a equipe contrária, deve efetuar o movimento de rotação. Para isso, o agente adiciona nova ação para que todos os agentes da equipe percebam e realizem o movimento, que consiste em diminuir 1 de sua posição, movendo-se no mesmo sentido dos ponteiros do relógio “+saque(_): pontoEquipe(_) <rotacaoEquipe”. Figura 6 – Exibição do console para o início do jogo Enfim, na Figura 6 é possível acompanhar o console da ferramenta Jason em relação as mensagens trocadas pelos agentes a partir de um saque de equipe. 5. Considerações finais Com a realização da pesquisa que gerou este artigo, foi possível perceber que: i) é viável a modelagem e a implementação dos aspectos comportamentais e estruturais de jogo de voleibol (saque, trocas de posição, ponto e rotação) com AgentSpeak(L) e Jason; ii) é possível realizar comunicação entre os agentes/jogadores para o processo de deliberação e negociação de trocas de posição; iii) há inúmeras situações de comportamento reativo dos agentes, devido ao contexto do próprio voleibol, não obrigando, dessa forma, o uso exclusivo de agentes BDI. Atualmente, está se trabalhando para estender a simulação de mais situações existentes, como por exemplo, o contra-ataque e defesa do contra-ataque. Também, em paralelo, procura-se aperfeiçoar o projeto para simular maior número de situações do jogo, como: a definição do ataque do time contrário (qual agente irá atacar). Com isso, os agentes do time contrário deverão trocar de posição de acordo com a direção do ataque. Sendo que os agentes também podem utilizar as posições intermediárias, assim como existe no voleibol. Finalmente, como uma das justificativas do trabalho é criar um software para auxiliar no curso de Educação Física, neste sentido, um trabalho futuro fundamental é fazer um estudo de caso com o presente software junto aos alunos e professores do curso referido. Referências bibliográficas Bordini, R. H.; Vieira, R.; Moreira, A. F. (2001) Fundamentos de Sistemas Multiagentes. Anais do XXI Congresso da Sociedade Brasileira de Computação – UFRGS. Porto Alegre, 30 p. Bordini, R. H.; Vieira R. (2003) Linguagens de Programação Orientada a Agentes: uma introdução baseada em AgentSpeak(L). Revista de Informática Teórica e Aplicada – UFRGS, V 10, N. 1, 32 p. Giraffa, L. M. M. (1999) Uma arquitetura de tutor utilizando estados mentais. Porto Alegre: 177 p. Tese de doutorado (Doutorado em Ciência da Computação), Universidade Federal do Rio Grande do Sul (UFRGS), Porto Alegre. Hübner, J. F.; Bordini, R. H.; Vieira, R. (2004) Introdução ao desenvolvimento de sistemas multiagentes com Jason. XII Escola de Informática da SBC – UNICENTRO. Guarpuava, v.2, p. 51 – 89. Hübner, J. F. (2003) Um modelo de reorganização de sistemas multiagentes. São Paulo: 2003. 246 p. Tese de doutorado (Engenhara Elétrica), Escola Politécnica da Universidade de São Paulo. Disponível em < http://www.teses.usp.br/teses/disponiveis/3/3141/tde-17052004-151854/ >. Acesso em: 29 agosto. 2007. São Paulo. Rao A. S. (1996) AgentSpeak(L): BDI agents speak out in a logical computable language. Proceedings of the SeventhWorkshop on Modelling Autonomous Agents in a Multi-Agent World (MAAMAW’96), London, n. 1038, p. 42 – 55, London. Voleibol.Org. (2008) Site oficial da confederação brasileira de voleibol. Disponível em http:// http://www.volei.org.br/. Acesso em abril e maio de 2008. Zamberlam, A. O. (2001) Em direção a uma técnica para programação orientada a agentes BDI. Porto Alegre: 2001. 85 p. Dissertação de Mestrado, PUCRS.
Documentos relacionados
VOLEIBOL do marcão RADIER
deve ser mantida durante todo o set. No momento do saque, cada equipe deve estar posicionada corretamente, seguindo a ordem de rodízio (posição de saque). Após o saque os jogadores podem se desloca...
Leia maisHISTÓRIA DO VOLEIBOL - Marcelino Champagnat
Quais são as posições de rodízio? As posições de rodízio vão de 1 a 6. Sendo que o jogador que ocupar a posição N° 1, sempre será o responsável, obrigatoriamente, de realizar o saque da equipe. Re...
Leia mais