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

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 mais

HISTÓRIA DO VOLEIBOL - Marcelino Champagnat

HISTÓ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