implementação de um sistema multi-agente para um jogo...

33
Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras. Dezembro 2005 Agentes e Inteligência Artificial Distribuída Joana Vieira Valente Simão Cardoso Espinheira Rio

Upload: phungdang

Post on 09-Feb-2019

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras.

Dezembro 2005

Agentes e Inteligência Artificial Distribuída

Joana Vieira Valente

Simão Cardoso Espinheira Rio

Page 2: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

Resumo

Este trabalho foi efectuado no âmbito da disciplina de Agentes e Inteligência Artificial Distribuída, do 4º ano do curso de Engenharia Informática e Computação da Universidade do Porto.

O trabalho desenvolvido consiste num sistema multi-agentes, onde estes desempenham o papel de concorrentes de um concurso em que o objectivo é a formação de palavras, negociando as letras necessárias para a sua formação com os restantes agentes (concorrentes) participantes.

No presente relatório será exposta uma análise exaustiva da implementação do SMA em questão. Serão referidos os objectivos a atingir no fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades, a sua estrutura, os esquemas de representação de conhecimento e metodologias usadas e finalmente os detalhes de implementação que incluem a transmissão de mensagens entre agentes, a validação de jogadas e alguns algoritmos usados.

Finalmente serão tiradas todas as conclusões inerentes à realização deste projecto assim como possíveis melhoramentos que poderão ser efectuados ao longo do tempo.

Na secção de apêndices serão encontrados exemplos de uma execução do jogo e as regras completas do jogo.

1

Page 3: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

Índice

1. Objectivo ................................................................................................................. 3 2. Descrição ................................................................................................................ 4

2.1 Funcionalidades ............................................................................................. 4 2.2 Estrutura do Programa.................................................................................. 5

2.2.1 Arquitectura em três camadas............................................................. 5 2.2.2 Divisão modular ..................................................................................... 6

3. Esquemas de Representação de Conhecimento e Metodologia .................. 7 3.1 Arquitectura de comunicação jogador / gestor ......................................... 7 3.2 Calculo do valor de um estado de jogo para um jogador:....................... 8 3.3 Escolha do negócio a executar em cada momento: ................................ 8 3.4 Colaboração entre agentes:......................................................................... 8

4. Detalhes de Implementação ............................................................................... 9 4.1 Informação transmitida entre agentes ........................................................ 9 4.2 Algoritmo de selecção de letras para o jogo ............................................. 9 4.3 Validação das jogadas ................................................................................ 10 4.4 Algoritmo de melhoria iterativa das prioridades de um agente ............ 11

5. Ambiente de Desenvolvimento .......................................................................... 13 6. Conclusão ............................................................................................................. 15 7. Melhoramentos..................................................................................................... 16 8. Bibliografia ............................................................................................................ 17 Apêndices ..................................................................................................................... 18

Manual de Utilização ............................................................................................... 18 Instruções para Execução Local com Interface .............................................. 18 Instruções para Execução Local sem Interface .............................................. 18 Instruções para Execução Remota com Interface ......................................... 18 Instruções para Execução Remota sem Interface ......................................... 18

Exemplo de uma Execução ................................................................................... 19 Explicação dos elementos contidos na interface:........................................... 22 Negociação entre Agentes: ................................................................................ 23 Fim do Jogo: ......................................................................................................... 26 Particularidades do jogo: .................................................................................... 28 Mensagens do gestor:......................................................................................... 30

Regras do Jogo ........................................................................................................ 31

2

Page 4: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

1. Objectivo

O objectivo do projecto consiste na implementação de um Sistema Multi-agente (SMA) que realize um jogo estratégico de palavras.

Um SMA é um sistema computacional onde os agentes cooperam ou competem para atingir objectivos pessoais e/ou colectivos.

Os Sistemas Multi-agente são sistemas compostos por múltiplos agentes, que exibem um comportamento autónomo mas ao mesmo tempo interagem com os outros agentes presentes no sistema. Estes agentes exibem duas características fundamentais:

• São capazes de agir de forma autónoma, tomando decisões, levando à satisfação dos seus objectivos;

• São capazes de interagir com outros agentes utilizando protocolos de interacção social inspirados nos dos humanos e requerendo coordenação, cooperação e negociação;

No caso concreto do Sistema a desenvolver, poderão participar três a seis jogadores (agentes). O Sistema deverá permitir a participação de qualquer tipo de agente que obedeça a um conjunto de critérios e que reconheça alguns tipos de mensagens, sendo garantida a segurança das regras do jogo por um agente exterior (agente gestor) responsável por todas as tarefas de controlo e gestão do jogo.

Como objectivo do projecto foi tomado contacto com a programação usando sistemas multi-agente, no caso concreto a plataforma utilizada para o desenvolvimento dos agentes foi o JADE.

Os agentes desenvolvidos são suficientemente inteligentes de forma a serem capazes de competir entre si para obtenção de uma maior pontuação individual e de cooperar uns com os outros para que um determinado agente não se distancie em termos de pontuação dos restantes adversários.

A aplicação consiste num simulador no qual o jogo decorrerá com jogadores seleccionados pelo utilizador num estado inicial, sendo seguidamente apresentado em tempo de execução o desenrolar do jogo, tentando apresentar todo este processo de uma forma cativante para o observador.

3

Page 5: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

2. Descrição

2.1 Funcionalidades

O programa referido baseia-se num sistema no qual inicialmente são seleccionadas as personagens (jogadores) que irão participar no jogo, sendo seguidamente apresentada uma aplicação que segue todas as regras descritas no manual (apêndices).

É disponibilizada uma interface dinâmica onde é apresentado o estado actual do jogo nas suas diferentes fases, bem como todo o processo negocial entre agentes, sendo muito útil para verificação de correcta execução.

O sistema permite a participação de qualquer agente compatível com a plataforma, bastando implementar o protocolo utilizado nas negociações e actualizações de estado (comunicação entre jogador e gestor).

Os seis agentes oferecidos pela aplicação foram seleccionados após a realização de vários jogos, de forma a serem disponibilizados apenas agentes inteligentes capazes de competir arduamente uns com os outros.

Durante a realização do presente trabalho, foi feito um longo estudo relativamente ao processo de raciocínio a aplicar nos agentes desenvolvidos.

Inicialmente foram criados agentes que executavam jogadas aleatórias, em seguida criaram-se agentes que efectuavam sempre os negócios mais lucrativos, isto é, os que lhes proporcionavam maior quantidade de pontos instantânea.

Numa fase posterior, desenvolveram-se agentes com noção de estado de jogo que escolhiam o negócio que melhor estado de jogo lhes proporcionava, isto é, quantificando o jogo actual e um jogo após cada uma das jogadas possíveis no momento, executando assim uma pesquisa em largura com um nível de profundidade.

Finalmente foram construídos agentes baseados nestes últimos que evoluem de jogo para jogo utilizando um algoritmo de melhoria iterativa, baseado num algoritmo genético, descrito futuramente.

De forma a tornar o jogo mais real, foram criados seis jogadores distintos cuja inteligência inicial difere, utilizando cada um deles, uma estratégia de jogo diferente. Por exemplo, um jogador pode optar por tentar possuir muitas letras e outro tentar obter sempre muitos pontos. No desenrolar dos jogos os agentes vão-se modificando adaptando a sua inteligência e por consequência a sua estratégia em jogo, tentando em cada estratégia distinta obter um maior aperfeiçoamento do modo de a aplicar.

4

Page 6: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

2.2 Estrutura do Programa

Para uma melhor organização e estruturação do sistema optou-se pela utilização de uma divisão em módulos, sendo cada módulo responsável por um conjunto de funcionalidades. De forma a obter um sistema mais flexível utilizou-se uma arquitectura em três camadas (interface, lógica de negócio e aceso a dados), permitindo facilmente substituir qualquer uma delas, bastando manter os canais comunicacionais “inter-camada”.

Figura 1 - Estrutura em 3 Camadas

2.2.1 Arquitectura em três camadas

• Interface - Esta camada é responsável pela apresentação ao utilizador do estado do jogo, bem como da visualização das diferentes negociações entre jogadores. Esta camada também possui todas as funcionalidades relativas à escolha de jogadores no início do jogo.

• Lógica de Negócio - Esta camada é responsável por todas as funcionalidades relativas ao funcionamento do jogo, desde a execução de jogadas, a sua validação, a comunicação entre os agentes, a execução das regras, etc.

• Acesso a Dados – Esta camada é responsável pelo acesso à informação guardada nos ficheiros que acompanham a aplicação, tais como a extracção das palavras dos dicionários, a extracção e actualização dos genes, bem como o acesso aos dados enviados pelos agentes através da sua comunicação.

5

Page 7: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

2.2.2 Divisão modular No “módulo de Interface” são implementadas todas as funcionalidades relativas à parte visual do jogo. É criada uma interface inicial onde é possível a selecção dos três a seis jogadores predefinidos que disputarão um jogo. É implementada também a interface principal, responsável por permitir a visualização dinâmica do jogo, apresentando os jogadores, os seus nomes, a pontuação, as palavras a realizar no momento e as letras disponíveis. Em cada instante serão sempre apresentadas frases que representam cada passo do jogo. Para a realização da interface foi utilizada uma biblioteca gráfica, “G“ (GeoSoft), que permite criar objectos gráficos e adicioná-los a cenas criadas. As classes de maior relevância neste módulo são a “InterfaceInicial” e a “InterfaceJogo”. No “módulo de Jogo” são implementadas todas as funcionalidades relativas à iniciação do jogo, desde a invocação dos jogadores à chamada dos métodos oferecidos pela interface. Este módulo possui também funcionalidades que o permitem mapear um estado de jogo num objecto, de forma a facilmente poder ser transmitido pelos jogadores. As classes deste módulo são a “Jogo”, a “EstadoJogo” e a “AgenteGestor”. No “módulo de Jogador” são implementadas todas as funcionalidades relativas aos jogadores, desde aquelas que executam os processos de raciocínio às que acendem e validam as informações utilizadas nos raciocínios. As classes deste módulo são a “Jogador” e a “AgenteJogadorInteligente”. No “módulo Negocial” são implementadas todas as funcionalidades relativas aos negócios entre jogadores, tais como mapear a os negócios para uma estrutura e obter negócios possíveis. As classes deste módulo são a “Negocio” e a “ListaNegocios”. No “módulo de Extracção” são implementadas funcionalidades relativas à extracção de palavras dos dicionários, bem como o seu sorteio e a atribuição de letras aos jogadores. As classes deste módulo são a “Palavras” e a “Letras”. No “módulo Evolutivo” são implementadas funcionalidades relativas à extracção e submissão da informação histórica guardada nos ficheiros de cada jogador, bem como às operações genéticas a aplicar aos valores extraídos. As classes deste módulo são a “DNA” e a “Genes”.

6

Page 8: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

3. Esquemas de Representação de Conhecimento e Metodologia

3.1 Arquitectura de comunicação jogador / gestor

De forma a manter actualizado o estado de jogo em cada um dos jogadores e a executar as jogadas que estes pretendam fazer foi estipulada uma arquitectura de comunicação baseada em mensagens ACL.

Os jogadores inicialmente esperam por uma mensagem, após a sua recepção é feita uma validação do receptor ao emissor desta, rejeitando todas as mensagens de emissores desconhecidos ou emissores fora do seu turno de execução. As mensagens recebidas por um jogador estão divididas em diferentes tipos, conforme a sua “performative”, podendo ser:

• INFORM – caso o gestor pretenda enviar o estado do jogo ao jogador, de forma a este o actualizar;

• PROPAGATE – caso o gestor pretenda informar o jogador que o jogo terminou, indicando os vencedores;

• QUERY_IF – caso o gestor pretenda perguntar se o jogador aceita um determinado negócio e qual o valor e/ou as letras que pretende em troca;

• CPF – caso o gestor pretenda saber quais as propostas que este jogador faz;

O gestor inicialmente, após calcular as variáveis base do jogo, envia uma mensagem aos jogadores indicando o estado de jogo actual, seguida de uma mensagem de pedido de propostas ao jogador actual. As mensagens recebidas pelo gestor estão divididas em diferentes tipos, conforme a sua “performative”, podendo ser:

• INFORM – caso o jogador actual pretenda notificar a conclusão da construção de uma palavra;

• PROPOSE – caso o jogador actual pretenda saber quais os negócios possíveis;

Esta arquitectura permite discretizar o fluxo do jogo, validando sempre os emissores das mensagens após a sua recepção. Uma arquitectura que poderia ser utilizada seria a não utilização de um agente gestor, comunicando os jogadores directamente entre si, contudo não seria possível validar as jogadas e seria perdida a sequencia de jogo.

7

Page 9: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

3.2 Calculo do valor de um estado de jogo para um jogador:

De forma a em cada instante um jogador possa saber a sua situação em jogo e/ou possa saber qual a alteração do seu estado de jogo após determinado negócio, foi implementado um mecanismo de calculo de um valor a atribuir a cada estado de jogo.

Tal como descrito anteriormente o conhecimento do mundo por parte do jogador é restrito, sendo por isso apenas possível basear o cálculo em:

• letras que possui no momento, sendo atribuído um valor diferente a cada letra conforme a sua probabilidade de aparecer em palavras, por exemplo a letra “a” é mais provável que a letra “w” (atribuição de um valor positivo por cada letra);

• percentagem da palavra objectivo construída até ao momento (atribuição de um valor positivo por percentagem concluída);

• pontuação que possui (atribuição de um valor positivo por pontuação);

• pontuação que cada adversário possui (atribuição de um valor negativo por pontuação);

• ser o jogador com a maior pontuação (atribuição de um valor positivo por pontuação);

• ter terminado o jogo (atribuição de um valor positivo por pontuação);

• ter esgotado todas as suas letras (atribuição de um valor negativo por pontuação);

3.3 Escolha do negócio a executar em cada momento:

Baseando-se no cálculo do valor de cada estado de jogo, no seu turno de compra um jogador efectua o cálculo do valor após cada um dos negócios que lhe são oferecidos e opta por aquele que mais o beneficia.

No caso de se encontrar num turno de venda de letras, o jogador calcula o decréscimo de valor após a venda da letra pretendida pelo jogador comprador e a partir desse valor calcula o preço que pede pelo negócio, sendo no caso de negócio com trocas feito também um pedido de uma letra, podendo oferecer dinheiro no seu negocio de venda caso tenha uma forte necessidade de uma letra.

3.4 Colaboração entre agentes:

Os agentes desenvolvidos não efectuam jogadas tendo em conta apenas o seu estado de jogo, estes observando as pontuações dos restantes jogadores exercem o seu processo de raciocínio tendo em conta o facto de serem o jogador com maior pontuação, facto este que leva a uma colaboração por parte de todos os agentes no sentido de reduzir a pontuação do jogador que em determinado momento se encontra “a ganhar”.

8

Page 10: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

4. Detalhes de Implementação

No desenrolar da implementação deste projecto foram tomadas decisões que implicaram a utilização de alguns algoritmos complexos, entre eles destacam-se:

4.1 Informação transmitida entre agentes Toda a informação transmitida entre agentes será de dois tipos distintos,

sendo um relativo à indicação do estado do jogo e o outro aos negócios efectuados entre os agentes:

• EstadoJogo – esta classe possui uma listagem do nome dos jogadores, sua pontuação, letras e palavras objectivo, bem como uma indicação de qual o jogador cujo turno se encontra em execução e qual a ordem de jogadores pela qual o jogo prosseguirá.

• Negocio – esta classe possui toda a informação que define uma negociação, sendo ela uma letra, um preço e um jogador com o qual esta é feita no caso de um negócio de compra/venda e no caso de negócio com troca de letra possui informações extra relativamente à letra a trocar.

Sobre cada uma destas estruturas de representação de conhecimento estão definidos procedimentos que possibilitam a sua passagem através de mensagens, bem como a extracção do seu conhecimento.

4.2 Algoritmo de selecção de letras para o jogo Para o sorteio das letras necessárias para o jogo em todas as fases para as

diferentes palavras de cada jogador, foi necessário implementar um algoritmo que garantisse que existiam em jogo todas as letras necessárias para todas as palavras e que a sua quantidade fosse suficiente para a construção de cada palavra nos casos de palavras com letras repetidas.

Com o objectivo de assegurar esta situação foi criado um algoritmo que adicionava a uma lista de palavras a quantidade máxima existente de cada letra nas diferentes palavras, por exemplo, existindo a palavra “gata” e a palavra “tacada” a lista criada seria “gaaatcd”, de forma a garantir a existência de três “a” para criar a palavra tacada e existindo apenas um “t” de forma a incentivar a negociação de letras úteis para vários jogadores.

No final da execução do algoritmo é verificado se o comprimento desta lista é superior à quantidade de letras que estarão em jogo e caso afirmativo serão sorteadas novas palavras, caso negativo são sorteadas novas letras de forma a preencher o resto da lista.

9

Page 11: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

4.3 Validação das jogadas De forma a criar um sistema mais resistente a falhas e permitir a

participação de agentes produzidos por qualquer pessoa, foi implementado um sistema de detecção de batota que assegura que cada jogador apenas efectua as suas jogadas nos seus devidos turnos e que as jogadas que estes executam pertencem ao tipo de jogadas que lhes foi pretendido.

Outra forma de assegurar a estabilidade e a devida participação de cada jogador foi a centralização das alterações sobre o estado de jogo no agente gestor (AgenteGestor), sendo este responsável por seleccionar as jogadas possíveis do conjunto de jogadas que um jogador seleccionou e reencaminhar apenas aquelas que são válidas, sendo também responsável por no final de cada turno de jogo actualizar o estado de jogo em cada agente. Tal como é demonstrado no esquema seguinte:

Figura 2- Diagrama de Sequência de uma Jogada

10

Page 12: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

4.4 Algoritmo de melhoria iterativa das prioridades de um agente

Foi criado um conceito de factores associados às importâncias de possuir letras, possuir letras constituintes da palavra e possuir pontos, relativos à importância de cada uma destas características na análise de um estado de jogo, de forma a escolher as jogadas a tomar de acordo com o estado seguinte de valor mais favorável. Para tal esses factores foram seleccionados conforme o jogador se encontrasse a construir a primeira palavra, a segunda palavra, a ultima palavra ou já tivesse acabado o jogo, de forma a adaptar a sua “inteligência” a cada uma destas diferentes fases.

Para teste do algoritmo foi criado um agente (AgenteJogadorInteligente) que apenas possuía um gene de opção, cujos factores eram iguais aos dos restantes agentes jogadores (AgenteJogadorPro), sendo estes já bastante capazes de efectuar bons negócios e com boa capacidade de “anti-jogo”.

Partindo do gene inicial em cada jogo foi sorteada uma operação sobre esse gene, sendo 90% provável usar um gene sorteado do conjunto de genes guardados (selecção), 8% provável sortear dois genes do conjunto e usar um gene cujo conteúdo era o cruzamento dos dois genes numa posição sorteada (cruzamento) e 2% provável sortear um gene do conjunto e incrementar ou decrementar de 0 a 2 factores contidos no gene (mutação). Sempre que um gene utilizado após este processo selectivo foi vitorioso, este foi adicionado à base de genes (dna/genes.txt), aumentando a sua probabilidade de ser futuramente sorteado.

O formato utilizado no ficheiro relativo ao conjunto de genes vitoriosos guardados é o seguinte: “5*26*9*5*10*10*6*11*12*5*12*3”, no qual o primeiro elemento representa o peso da importância a dar a possuir letras aquando da construção da primeira palavra, o segundo corresponde ao peso a dar à importância de possuir uma parte da palavra construída e o terceiro ao peso da importância atribuída a possuir pontos, sendo esta ideia mantida para as restantes fases do jogo excepto na fase final em que a importância dada a construir a palavra é nula uma vez que não existe palavra a construir. O valor final representa o número de vitórias que este gene obteve, utilizado na fase de sorteio de genes de forma a atribuir a cada gene um peso respectivo na roda de probabilidades.

11

Page 13: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

Toda esta representação poderá ser mais facilmente perceptível no seguinte esquema:

1ª Palavra 2ª Palavra 3ª Palavra Final nº vitórias

5 26 9 5 10 10 6 11 12 5 12 3

Importância de possuir letras

Importância de construir palavras

Importância de possuir pontos

Figura 3 - Explicação da Representação dos Genes

Como resultados práticos da utilização deste algoritmo podemos apresentar o nosso sucesso através da percentagem de jogos vitoriosos, uma vez que na situação inicial, em que todos os agentes partilhavam os mesmos factores de selecção existia uma equiprobabilidade de vitória, sendo no caso de jogos com seis jogadores um valor de cerca de 16,7% e após a execução deste algoritmo cerca de 10000 vezes, de forma a criar centenas de genes e de forma a aumentar a sua probabilidade de selecção, a percentagem média de jogos ganhos ascendeu para os cerca de 35,3%, sendo por isso válido dizer que a utilização do algoritmo foi um sucesso.

12

Page 14: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

5. Ambiente de Desenvolvimento

Jade (Java Agent Development framework) é um ambiente para desenvolvimento de aplicações baseado em agentes, conforme as especificações da FIPA (Foundation for Intelligent Physical Agents), para interoperabilidade entre sistemas multi-agentes, totalmente implementado em Java.

A plataforma Jade foi desenvolvida pela Universidade de Parma na Itália, continuando actualmente a sofrer actualizações.

O principal objectivo do Jade é facilitar e simplificar o desenvolvimento de SMA, garantindo um padrão de interoperabilidade entre SMA através de um conjunto abrangente de agentes de serviços de sistema, os quais tanto facilitam como possibilitam a comunicação entre agentes, de acordo com as especificações da FIPA: serviço de nomes e páginas amarelas, transporte de mensagens, serviços de codificação e descodificação de mensagens e uma biblioteca de protocolos de interacção pronta para ser usada. Toda comunicação entre agentes é feita via troca de mensagens. Além disso, o Jade lida com todos os aspectos que não fazem parte do agente em si e que são independentes das aplicações, tais como transporte de mensagens, codificação e interpretação de mensagens e ciclo de vida dos agentes.

O Jade pode ser considerado como um “middle-ware” de agentes que implementa um framework de desenvolvimento e uma plataforma de agentes.

Algumas características que o Jade oferece para a programação de SMA são:

• GUI ou graphical user interface: interface visual que gere vários agentes e containers de agentes inclusive remotamente;

• Ferramentas de “debugging”: ferramentas que ajudam o desenvolvimento e depuração de aplicações multi-agentes baseados em Jade;

• Plataforma distribuída de agentes: O Jade pode ser dividido em vários “hosts” ou máquinas, desde que eles possam ser ligados via RMI (Remote Method Invocation). Apenas uma aplicação Java e uma Java Virtual Machine é executada em cada host. Os agentes são implementados como threads Java e inseridos dentro de repositórios de agentes chamados de containers (Agent Containers) dos quais provêm todo o suporte para a execução do agente;

• Ambiente de agentes: no qual se incluem o sistema que gere os agentes (AMS - Agent Management System), o directório facilitador (DF - Directory Facilitator) e o canal de comunicação dos agentes (ACC - Agent Communication Channel). Todos esses três componentes são automaticamente carregados quando o ambiente é iniciado;

• Biblioteca de protocolos FIPA: para a interacção entre agentes, oJade dispõe de uma biblioteca de protocolos prontos para ser usados;

• Suporte a execução de múltiplas, paralelas e concorrentes actividades

13

Page 15: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

de agentes: através dos modelos de comportamentos;

• Transporte de mensagens: transporte de mensagens no formato FIPA-ACL dentro da mesma plataforma de agentes;

• Automação de registos: registo e cancelamento automático de agentes com o AMS;

• Integração: mecanismo que permite aplicações externas carregarem agentes autónomos Jade.

O Jade, além das características acima citadas, que por si só já facilitam muito o desenvolvimento de sistemas multi-agentes, possui também algumas ferramentas muito úteis que simplificam a administração da plataforma de agentes e o desenvolvimento de aplicações.

No caso concreto do sistema desenvolvido, o sistema inicia-se pela criação de um container local e a criação de agentes (gestor e jogadores) no seu interior. Se a aplicação for executada com selecção de serviço remoto, os agentes jogadores são enviados para uma máquina previamente conectada com a plataforma, ficando o processamento, das acções dos jogadores, distribuído.

Após o processo inicial descrito, os agentes definem uma acção base que é repetida durante toda a execução do jogo (SimpleBehaviour), no qual utilizando mensagens ACL comunicam utilizando o protocolo descrito anteriormente.

14

Page 16: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

6. Conclusão

A implementação deste projecto foi um desafio bastante interessante até ao último minuto de desenvolvimento, tendo em conta a diversidade de conceitos novos a aprender e o reduzido número de elementos no grupo.

No terminar do projecto foram atingidos todos os objectivos a que nos propusemos, entre eles, a implementação de um sistema multi-agente que contem agentes capazes de realizarem o jogo proposto de uma maneira eficiente, cooperando os agentes uns com os outros no sentido de cada um atingir melhor o seu objectivo pessoal.

As questões principais com que nos deparamos foram numa primeira fase com a arquitectura a usar e qual o modo de aprendizagem adequado para os agentes desenvolvidos.

Como descrito anteriormente foram estudados e efectuados testes em várias estratégias implementadas, acabando por ser seleccionada a que melhor correspondia às expectativas.

Uma parte do trabalho foi também dedicada ao estudo de caminhos para a cooperação e negociação entre os agentes, tópico este que também foi satisfeito pela adopção de uma estratégia baseada num leilão fechado.

Realizou-se uma interface bastante dinâmica que permite ao “observador” seguir o jogo, acompanhando e percebendo como são efectuados os negócios e a cooperação entre todos os agentes.

Como extras ao trabalho especificado foram implementados mecanismos de trocas de letras entre os jogadores (não se reduziu o problema à venda), desenvolveu-se um agente bastante inteligente (usando estratégias de melhoria por algoritmos genéticos), introduziu-se a possibilidade de guardar uma sequência do jogo em logs, permitindo a posterior análise e finalmente desenvolveu-se uma interface bastante dinâmica que possibilita a observação do seguimento das jogadas.

15

Page 17: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

7. Melhoramentos

Como em qualquer projecto existem muitos melhoramentos possíveis que podem ser efectuados com mais tempo e estudo.

Entre eles destacamos alguns que pensamos ser interessantes para a realização estratégica do jogo:

• Incluir situações de bónus no jogo, incluindo palavras secretas que poderiam ser realizadas por um jogador, ou seja, num determinado momento a palavra secreta seria “casa”, e todos os jogadores que conseguissem adquirir as letras que formem esta palavra adquiria instantaneamente pontos extra.

• Optimizar o mecanismo associado à inteligência, uma vez que a estratégia evolutiva actual permite gerar genes com características aleatórias, obtendo por vezes genes fracos provenientes da evolução, filtrar alguns desses genes sempre que se pretendesse obter o melhor jogador.

• Em termos de eficiência o jogo mostra-se bastante rápido, sendo possível em média executar um jogo em 2,3 segundos sem interface. As estruturas de informação utilizadas bem como os protocolos de comunicação implementados são pouco dispendiosos.

• Melhoramento gráfico da interface, conseguindo implementar mais algumas animações dando um carácter mais dinâmico ao jogo.

16

Page 18: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

8. Bibliografia

Para a realização do projecto foi necessária a consulta de diversas fontes bibliográficas, sendo elas:

1. Manual de JADE para utilizadores em iniciação: http://jade.tilab.com/doc/JADEProgramming-Tutorial-for-beginners.pdf

2. Manual de JADE para utilizadores intermédios: http://jade.tilab.com/doc/programmersguide.pdf

3. Site com a API do JADE: http://jade.tilab.com/doc/api/index.html

4. Site com a API do JAVA: http://java.sun.com/j2se/1.5.0/docs/api/

5. Projecto de mestrado sobre utilização de agentes num sistema: Faé, Ricardo Daniel – “Projeto de Diplomação” – Universidade de Caxias do Sul - “Centro de Ciências exatas e tecnologia”

6. Apontamentos da Disciplina http://paginas.fe.up.pt/~eol/AIAD/aiad0506.html

7. Site da Biblioteca Gráfica “G”, da GeoSoft http://geosoft.no/

8. API da Biblioteca Gráfica “G”, da GeoSoft http://geosoft.no/graphics/G/docs/index.html

17

Page 19: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

Apêndices

Manual de Utilização

Instruções para Execução Local com Interface Correr o Jade numa consola >java jade.Boot Executar a aplicação > java jade.Boot (ou duplo click sobre o Jogo.jar)

Instruções para Execução Local sem Interface Correr o Jade numa consola >java jade.Boot Executar a aplicação > java jade.Boot -shell

Instruções para Execução Remota com Interface Correr o Jade numa consola >java jade.Boot Correr o Jade numa máquina remota, indicando a máquina local >java jade.Boot –host:<host_local> -container Executar a aplicação > java jade.Boot –remote:<host_local>

Instruções para Execução Remota sem Interface Correr o Jade numa consola >java jade.Boot Correr o Jade numa máquina remota, indicando a máquina local >java jade.Boot –host:<host_local> -container Executar a aplicação > java jade.Boot –remote:<host_local> -shell

18

Page 20: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

Exemplo de uma Execução No início do jogo será apresentada a seguinte interface, onde deverão ser seleccionados os jogadores pretendidos:

Como referido o jogo terá de 3 a 6 jogadores, portanto será necessário a selecção de pelo menos três jogadores. Quando houver no mínimo três jogadores seleccionados aparecerá um botão que bastará pressionar para iniciar o jogo quando for pretendido:

19

Page 21: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

Quando premido o botão “Iniciar Jogo” será apresentada a interface seguinte:

Nesta janela é possível acompanhar o desenrolar de todo o jogo, até todos os concorrentes formarem as suas palavras, de 3, 4 e 5 letras e então determinarem o vencedor de acordo com o ou os jogadores que obtiverem a maior pontuação:

20

Page 22: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

21

Page 23: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

Explicação dos elementos contidos na interface:

22

Page 24: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

Negociação entre Agentes:

23

Page 25: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

Situação em que o jogador passa, pois acha que as propostas são pouco aliciantes.

24

Page 26: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

Situação em que o jogador contém todas as letras necessárias para a formação da sua palavra objectivo e a apresenta. O Agente gestor indica que ele passa para a sua próxima palavra e no mostrador da palavra aparece a palavra seguinte com 5 letras.

25

Page 27: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

Fim do Jogo:

26

Page 28: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

27

Page 29: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

Particularidades do jogo: Quando um jogador apresentar uma palavra a banca mudará para vermelho e o apresentador congratula o concorrente e apresenta-lhe a sua próxima palavra:

Quando o jogador conseguir completar todas as suas palavras ficará com uma barra no local onde estaria a sua palavra objectivo, mas poderá continuar a vender as suas letras:

28

Page 30: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

Na sua vez de jogar, o jogador actual tem a banca amarela:

Quando o jogo terminar o apresentador indicará o(s) vencedor(es) do concurso:

29

Page 31: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

Mensagens do gestor:

30

Page 32: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

Regras do Jogo

O jogo proposto consiste num jogo de palavras para 3, 4, 5, ou 6 jogadores.

O jogo tem como objectivo a formação de palavras (propostas pelo agente gestor) por cada agente participante em cada um dos três níveis.

No caso de um jogador não possuir as letras necessárias para a formação da palavra proposta, deverá negociar com os seus adversários, tentando obter as letras em falta.

Os jogadores poderão apenas fazer uma aquisição por jogada.

Sempre que um jogador no seu turno contenha todas as letras necessárias à formação da sua palavra objectivo, poderá indicar a sua conclusão passando a sua jogada ao próximo concorrente.

Cada jogador deve tentar obter a pontuação mais alta, formando as palavras propostas e avançando de nível, e/ou ganhando pontos vendendo letras a outros jogadores.

No início do jogo o agente gestor determinará quem será o primeiro jogador, assim como a ordem de todos os outros concorrentes.

Inicialmente serão distribuídas oito letras por cada agente em jogo, sendo assegurada a possível formação de todas as palavras propostas a cada agente no decorrer do jogo com as letras existentes, bem como 10 pontos que assegurem a possível negociação.

O jogo é constituído por três níveis. No primeiro nível os jogadores deverão formar palavras com quatro letras, no segundo nível as palavras a formar terão cinco letras e no último nível as palavras serão constituídas por seis letras.

Quando um jogador passa do primeiro nível para o segundo recebe dez pontos. Quando passa do segundo para o terceiro, receberá 50 pontos adicionais. Na terminação do terceiro e último nível o agente receberá um bónus de 200 pontos a somar aos pontos adquiridos durante o jogo.

Cada jogador apenas está consciente da palavra que pretende construir no momento, das letras que possui no momento e das pontuações de todos os jogadores.

Em qualquer momento, o jogador poderá decidir passar a sua vez, tentando formar a palavra na jogada seguinte.

As palavras serão todas sorteadas no início, contudo os jogadores apenas terão conhecimento da sua palavra actual.

No seu turno de jogo, o jogador poderá apresentar um conjunto de letras que pretende e para cada uma dessas letras os restantes jogadores poderão dizer um preço de venda e/ou dizer uma letra pela qual trocam essa letra e qual a quantia que pretendem receber ou estão dispostos a dar, de forma a que um jogador no seu turno de compra de letras possa lucrar dinheiro numa troca favorável. Após receber a listagem de negócios possíveis o jogador poderá optar pelo negócio pretendido ou avançar o turno.

31

Page 33: Implementação de um Sistema Multi-Agente para um Jogo ...eol/AIAD/TRABALHOS_ANT/SMAjogo_0506.pdf · fim da realização do projecto, a descrição do trabalho incluindo as funcionalidades,

Implementação de um Sistema Multi-Agente para um Jogo Estratégico de Palavras

O protocolo de negociação baseia-se num leilão fechado, isto é, um “mecanismo para determinação de preços permitindo acordos entre pares comprador/vendedor por intermédio de um leiloeiro” [6] (gestor).

Pode acontecer uma situação de bloqueio do jogo, isto é, após sucessivos negócios ou falta deles o jogo não evolua, sendo retiradas as letras de cada jogador e sorteadas novas letras, atribuindo uma pontuação de 5 valores por cada letra que um jogador possua. O bloqueio acontece quando existem duas situação de impasse consecutivas.

O jogo termina quando todos os agentes em jogo terminarem o terceiro nível ou quando o jogo tende para uma situação de bloqueio, isto é, quando após dois novos sorteios de letras os jogadores tenderem novamente para um impasse, o jogo terminará sendo vitorioso o jogador com maior pontuação.

O vencedor do jogo é o jogador que quando o jogo termina possui o maior número de pontos.

32