Beruflich Dokumente
Kultur Dokumente
, , S, S
0
, , >, onde ?:
o alfabeto de entrada um conjunto de smbolos nitos no vazio;
3
2.1. TCNICAS DE INTELIGNCIA ARTIFICIAL APLICADAS A JOGOS 4
o alfabeto de sada um conjunto de smbolos nitos no vazio;
S umconjunto nito de estados no vazio;
S
0
o estado inicial, e um elemento de S;
a funo de transio de estados : S
S;
a funo de sada. No modelo de Mealy, a sada uma funo composta pelo
alfabeto de entrada e o estado atual( : S
(t ) a partir de P(t 1)
8: Aplicar operadores genticos de cruzamento, mutao e inverso a P
(t )
9: P(t ) P
(t )
10: Calcular avaliao dos cromossomos de P(t )
11: end while
12: end procedimento R
Os dados manipulados pelo Algoritmo ?? representam a populao e os indivduos,
sendo os ltimos correspondentes a vetores binrios de tamanho m, enquanto a populao
representada por uma matriz de nm onde cada linha da matriz representa umindivduo
?. Uma populao e seus indivduos podem ser denidos da seguinte maneira:
Denio 2.2.1 Indivduo - Umindivduo i de uma populao P uma cadeia b
1
, b
2
, . . . , b
m
,
tal que, j {1, 2, . . . , m} b
j
{0, 1}
Denio 2.2.2 Populao - Uma populao P uma matriz b
11
, . . . , b
1m
, . . . , b
n1
, . . . ,
b
nm
, onde cada linha j {1, 2, . . . , n} representa umindivduo da populao.
O Algoritmo ?? comea inicializando uma varivel t com o valor zero, e a populao P
gerada aleatoriamente. Umexemplo de populao P seria a da Figura ??, comcinco cadeias
de tamanho oito representando cinco indivduos.
Em seguida, o algoritmo calcula o valor da funo de adaptao (tness) de cada indiv-
duo dessa populao. A adaptao de um indivduo denida pela funo objetiva e pela
inteno do problema. A funo objetiva do problema denida por o : DR
+
. Ela recebe
um elemento do domnio do problema D e retorna a medida do grau de satisfao do ele-
mento ao problema em questo.
2.2. ALGORITMO GENTICO 11
Figura 2.4: Populacao P.
A inteno do problema dene se o resultado desejado o elemento com maior ou me-
nor grau de satisfao. Se a inteno do problema for encontrar o elemento com maior grau
de satisfao, ento a funo de adaptao f do algoritmo ser igual a o, do contrrio a fun-
o de adaptao f do algoritmo ser igual a o. Essa conveno necessria uma vez que
o algoritmo gentico est sempre em busca do indivduo mais adaptado.
Denio 2.2.3 Funo de Adaptao- a funo de adaptao f de umindivduo dada por
uma funo do tipo f : I IR de forma que,
f (i ) =
_
o(decod(i )) se a inteno for encontrar o indivduo mais adaptado.
o(decod(i )) se a inteno for encontrar o indivduo menos adaptado.
(2.3)
onde I o conjunto de todos os vetores binrios de tamanho m considerados para o
problema, e decod uma funo que recebe umindivduo e retorna o elemento do domnio
do problema que este indivduo representa.
Por exemplo, tome os indivduos da populao P apresentada na Figura ?? e supo-
nha que representem a codicao binria dos nmeros inteiros pertencentes ao intervalo
[0, 255]. Suponha tambm que a funo objetiva do problema est a procura do nmero in-
teiro cuja codicao em binrio contenha a maior ocorrncia da subcadeia 01. Neste caso
a funo adaptao seria dada pelo nmero de ocorrncias da subcadeia 01 em cada indiv-
duo. A Figura ?? mostra o valor da adaptao dos indivduos da populao apresentada na
Figura ??.
Figura 2.5: Populacao P e seu valor de adaptao.
Aps calcular o valor de adaptao dos indivduos de P, o algoritmo verica se a condi-
o de parada foi satisfeita. Em caso positivo ele encerra sua execuo. Caso contrrio, ele
inicia seu lao enquanto-faa. A satisfao de sua condio de parada indica um resultado
aceitvel para o problema, seja este um valor de adaptao x ou atingir a j-sima iterao.
2.2. ALGORITMO GENTICO 12
O lao enquanto-faa do Algoritmo ?? compreende o processo evolutivo propriamente
dito. A cada execuo do lao, t incrementado e a populao alterada pela sucessiva ao
dos operadores genticos de cruzamento, mutao e inverso sobre os indivduos da popu-
lao P
seria formada pelos indivduos <0, 1, 0, 0, 1, 1, 1, 0 >, <1, 0, 1, 0, 1, 1, 1, 0>, <0, 1, 0, 1, 0, 1, 0, 1>.
Em seguida, temos os operadores genticos. O operador de cruzamento tem como ob-
jetivo misturar o material gentico de dois ou ais indivduos em busca de um indivduos
melhor. A funo de cruzamento recebe como entrada alguns indivduos da populao P
e pelos n k indivduos
mais adaptados da populao P, sendo n o tamanho mximo da populao.
No algoritmo gentico de Holland, os indivduos eram apenas amostras do espao de
busca, e os operadores eram mecanismos para levar o algoritmo em direo a melhores
amostras, utilizando-se da preservao das caractersticas dos indivduos mais adaptados
obtidas pela operao de cruzamento e da alterao de determinadas caractersticas pre-
sentes em tais indivduos atravs das operaes de mutao e de inverso.
2.2.2 Algoritmos Genticos emJogos
No contexto de jogos, algoritmos genticos costumam ser usados para ajustar prioridades,
comportamentos ou parmetros de personagens, e a utilizao da informao recolhida por
eles tende a ser uma operao do tipo caixa-preta
1
.
Um dos jogos que se utiliza de AGs para ajuste de comportamento o Quake 3. Nele, os
AGs servem para otimizar a IA do controlador de lgica fuzzy dos adversrios controlados
pela IA do jogo, ou bots. Por exemplo, o bot pode estar 45% a favor de pegar um lana-
foguetes e 62% a favor de pegar uma armadura.
Entretanto, possvel utiliz-los massivamente, como demonstrado nos jogos Black and
White e Creatures, mas comum restringir o aprendizado ou as caractersticas genticas
herdadas pelos indivduos, de modo a controlar a direo do aprendizado ou da evoluo o
tanto quanto possvel.
importanteressaltar que os algoritmos genticos podem, e algumas vezes iro, atuar da
pior forma possvel. Por exemplo, devido a natureza dos dois ltimos jogos citados, temos
uma certa imprevisibilidade nas aes tomadas pelos personagens controlados pela IA. Isso
pode gerar aes inapropriadas ou estpidas a serem tomadas. Essas escolhas se devem ao
elemento de aleatoriedade inerente ao algoritmo.
1
Caixa-Preta em computao um termo que signica uma operao que tem sua funcionalidade comple-
tamente abstrada, normalmente omitindo de seus usurios sua implementao. Neste contexto isto signica
que, ainda que se tenha acesso a seus resultados da operao e se saiba o que ela faz, o conhecimento de como
o procedimento realizado desconhecido ?.
2.3. ABORDAGEMS DA IA APLICADAS AO JOGO DE DAMAS 15
Esse elemento aleatrio inserido de modo a direcionar a busca, tornandoos algoritmos
genticos parte de uma classe de mtodos de busca chamada "buscas estocsticas", cuja ca-
racterstica e a necessidade de numerosas interaes a m de localizar a melhor soluo
possvel, visto que o prprio elemento aleatrio pode levar a busca para longe do melhor
resultado possvel. Ainda assim, a tcnica diminui em muito as chances de que o algoritmo
que preso ao redor de uma possvel soluo em particular, o que costuma ocorrer em pro-
blemas que geram muitos bons resultados e que no sejam o melhor possvel. Isso porque
o elemento aleatrio tende tambm a levar a busca para fora de tais regies sendo capaz
mesmo de alcanar a melhor soluo possvel, conhecida como mximo global.
Outra caracterstica dos algoritmos genticos que, diferentemente de outros mecanis-
mos de busca, so capazes de separar inteiramente seu algoritmo da representao do pro-
blema, o que lhes permite localizar facilmente solues em sistemas com diferentes tipos
de variveis. Ainda que algumas estruturas sejam mais comumente utilizadas, como, por
exemplo, vetores de caracteres, possvel usar qualquer tipo de dado desde que cada in-
divduo, deste possa ser codicado em uma soluo completa e que operadores genticos
possamser construdos para aquela estrutura de dados ?.
2.3 Abordagems da IA aplicadas ao jogo de damas
Dentre os projetos de IA aplicada ao jogo de damas, destacam-se os seguintes:
2.3.1 CHINOOK
CHINOOK o agente jogador de damas mais famoso e atual campeo mundial ? ?. Os obje-
tivos inerentes a sua criao foramdesenvolver, a curto prazo, umprograma capaz de vencer
o campeo mundial humano e resolver, a longo prazo, a teoria do jogo de damas. Seu de-
sempenho consiste de quatro aspectos fundamentais:
Utiliza o algoritmo de poda alfa-beta paralelo para busca;
Sua funo de avaliao ajustada manualmente, sendo capaz de decidir quo boa
uma posio;
Possui uma grande base de dados de nais de jogos;
Possui uma outra grande base de dados, desta vez acerca de diretrizes para incio de
jogos.
2.3.2 ANACONDA
Os autores de ANACONDA, Chellapilla e Fogel, exploraram o potencial de aprender a jogar
damas de forma independente da percia humana ? ?, utilizando-se de caractersticas do
2.3. ABORDAGEMS DA IA APLICADAS AO JOGO DE DAMAS 16
jogo que eles acreditavamser importantes para se jogar bem?. Foi desenvolvido utilizando-
se redes neurais, onde, aps aproximadamente 800 geraes, o processo evolucionrio gerou
uma rede neural capaz de jogar damas em um nvel especialista.
Captulo 3
AbordagemProposta
A abordagem que propomos consiste da aplicao de algoritmos genticos para auxiliar
o aprendizado do usurio, no contexto de um jogo. Para a aplicao deste projeto, optamos
pela implementao de um jogo de Damas, que chamamos de AG Checkers. No decorrer
desde captulo sero discutidas as alteraes realizadas no modelo proposto por Holland,
de modo a adequ-lo s estruturas e regras do jogo. Tambm foram implementados uma
mquina de estados nitos, para controlar determinadas caractersticas e regras do jogo, e
uma estrutura em rvore, para permitir a visualizao de jogadas frente da atual na busca
por solues. Ainda que no seja apresentada uma explicao mais detalhada sobre essas
tcnicas, acredita-se que os conceitos presentes na seo ?? desta monograa e a explicao
da implementao da mquina de estados e da estrutura de rvore utilizada, a serem feitos
neste captulo, sejam sucientes para dar ao leitor a compreenso necessria das tcnicas.
A aplicao tambmpossui umsistema para vericar o nvel de habilidade do jogador e,
assim, balancear a diculdade do jogo. Ele utiliza-se de informaes sobre as partidas joga-
das pelo usurio, que so salvar numbanco de dados local. Essas informaes so aplicadas,
tambm, no algoritmo gentico, como ser explicado em sees posteriores.
Primordialmente, acreditamos ser necessrio que se tenha conhecimento pleno dos con-
ceitos bsicos do jogo de Damas. Portanto, inicialmente sero apresentadas as regras do
jogo, explicitando quais foram implementadas ou no, e o porqu de tal deciso.
3.1 Regras do Jogo de Damas
Existemdiversas variaes das regras do jogo ao redor do planeta. Diante disto, foi decidido
adotar o conjunto de regras divulgadas pela Confederao Brasileira de Jogo de Damas ?,
descritas a seguir:
1. O jogo de damas praticado em um tabuleiro de 64 casas, claras e escuras. A grande
diagonal sempre deve car esquerda de cada jogador. Oobjetivo do jogo imobilizar
17
3.1. REGRAS DO JOGO DE DAMAS 18
ou capturar todas as peas do adversrio.
2. O jogo praticado entre dois parceiros, com 12 pedras brancas de um lado e com 12
pedras pretas do lado oposto. O lance inicial cabe sempre s peas brancas. A oitava
linha no tabuleiro denominada de casa de coroao.
Figura 3.1: Tabuleiro de Damas com a grande diagonal marcada.
3. A pedra anda uma casa de cada vez, sempre para frente em diagonal. Quando a pedra
atinge a ltima linha do tabuleiro, ela promovida dama.
4. A dama anda para frente e para trs, em diagonal, quantas casas desejar. Ela no pode
saltar uma pea de mesma cor.
Figura 3.2: a) Movimentao da pea em direo casa de coroao. b) Movimentao da
dama.
5. Se houver possibilidade de captura, esta obrigatria. Duas ou mais peas juntas, na
mesma diagonal, no podemser capturadas.
6. A pedra captura a dama e a dama captura a pedra. Pedra e dama tmo mesmo valor para
capturaremou serem capturadas.
7. A pedra e a dama podem capturar tanto para frente como para trs, uma ou mais peas.
8. Se num mesmo lance existir mais de uma possibilidade de capturar peas, obrigatrio
executar o lance que capture o maior nmero de peas.
3.1. REGRAS DO JOGO DE DAMAS 19
Figura 3.3: Captura de uma pea.
9. A pedra que, durante o lance de captura de vrias peas, apenas passe por qualquer casa
de coroao, sem a parar, no ser promovida dama.
Figura 3.4: Exemplo da regra nmero 9, onde a pea no promovida a dama.
10. Na execuo do lance de captura, permitido passar mais de uma vez pela mesma casa
vazia.
11. Na execuo do lance de captura, no permitido capturar duas vezes a mesma pea e
as peas capturadas no podem ser retiradas do tabuleiro antes de completar o lance
de captura
Figura 3.5: a) Captura de mltiplas peas onde uma mesma casa vazia visitada duas vezes.
b) Outra captura de mltiplas peas. Nota-se que no possvel capturar a pea novamente.
12. Aps 20 lances sucessivos de damas de cada jogador, sem captura ou deslocamento de
pedra, a partida declarada empatada. Almdisso, nais de: 2 damas contra 2 damas;
3.2. IMPLEMENTAODE UM JOGO DE DAMAS POR MEIODE ALGORITMOS
GENTICOS 20
2 damas contra uma dama; 2 damas contra uma dama e uma pedra; uma dama contra
uma dama e uma dama contra uma dama e uma pedra, so declarados empatados
aps 5 lances de cada jogadors
3.2 Implementao de um jogo de damas por meio de Algo-
ritmos Genticos
Ojogo de damas criado para este trabalho foi implementado por meio da linguagemde pro-
gramao Java?, utilizando-se das regras de jogo, discutidas na seo ?? do presente cap-
tulo, e os conceitos da tcnica de algoritmo gentico discutidos no captulo ?? deste traba-
lho.
Nesta seo sero discutidas as principais caractersticas, ou mesmo classes e mtodos,
responsveis pela interface grca, o controle da animao do jogo, a transio, entre os es-
tados que identicam a vez de jogar do computador e a do usurio que interage com a apli-
cao, e nalmente aquela responsvel pelo comportamento e desempenho da inteligncia
articial da aplicao.
3.2.1 Ferramentas utilizadas para o desenvolvimento do projeto
Para desenvolver a aplicao proposta por este trabalho, foram utilizados o kit de desenvol-
vimento da linguagem Java, verso 1.7.0, distribudo pela Sun Microsystems?, em conjunto
com a ferramenta de programao Eclipse?, verso 3.7.0.
As imagens utilizadas na aplicao foramcriadas utilizandoa ferramenta PhotoshopCS3
Extended ?, verso 10.0.1, software proprietrio da Adobe Systems, e as animaes foram
feitas a partir dessas imagens e do uso da ferramenta Beneton Movie GIF?, verso 1.1.2, dis-
tribudo pela empresa Beneton.
Foi utilizado o sistema de gerenciamento de banco de dados MySQL ?, de modo a permi-
tir o armazenamento das jogadas em um banco de dados.
Links para realizar o download desses programas, para aqueles que isto permitido,
apresentam-se disponveis na bibliograa deste trabalho.
3.2.2 Da interface e da animao da aplicao
Ao iniciar a aplicao, requisitado o nome do usurio. Em seguida, questionado se o
mesmo deseja realizar ou no o lance inicial. Emcaso armativo, lhe so atribudas s peas
brancas; caso contrrio, ele recebe as peas pretas. Uma terceira opo, denominada "Sair",
permite ao usurio encerrar a aplicao. As caixas de dilogo descritas acima so exibidas
na Figura ??.
3.2. IMPLEMENTAODE UM JOGO DE DAMAS POR MEIODE ALGORITMOS
GENTICOS 21
Figura 3.6: a) Escolha do nome do usurio. b) Tela de escolha do lance inicial.
Deste momento em diante, o usurio torna-se participante do jogo. Sua interao coma
aplicao ocorre por meio de uma interface, mostrada na Figura ??. Na parte central direita
apresentado o histrico de movimentos da partida. No canto superior esquerdo mostrado
o nmero atual de peas dos jogadores, que pode estar entre 0 e 12 para cada um, e uma
miniatura de suas respectivas pedras.
No canto superior direito mostrado de quem a jogada atua, e um boto para reini-
ciar a aplicao. Para o caso da jogada pertencer ao usurio ser exibida a mensagem "SUA
VEZ!"e para a jogada pertencente ao computador a mensagem"AGUARDE..."ser exibida ao
usurio no lugar da mensagem anterior. Ao m da partida exibida a mensagem "FIM DE
JOGO", seguida por uma mensagem indicando o resultado da partida. Caso seja vitria do
usurio, exibido "VOC VENCEU!!". Caso seja vitria do computador, "VOC PERDEU!!".
Emltimo caso, ser exibido "EMPATE!!", indicando que no houve vencedor. Nesta rea da
tela tambmso exibidos o nmero de peas atual do usurio e do computador, variando de
12 a zero para cada um,
O lado direito inferior contm uma rea de texto que exibe um histrico do jogo, mos-
trando a disposio do tabuleiro logo aps o usurio ou o computador teremrealizado uma
jogada. O histrico exibido como uma sequncia de caracteres dispostos no formato do
tabuleiro, oito linhas por oito colunas. Os caracteres utilizados pra dispor o tabuleiro do
histrico correspondem queles utilizados pelo algoritmo gentico da aplicao, sendo que
cada tipo de caractere corresponde a um elemento de jogo. Este alfabeto ter o signicado
de seus caracteres explicado na seo ?? deste captulo.
Existe, ainda, ummenu superior, que possui duas opes: "Mudar usurio", que permite
a troca de usurio e reinicia a partida, e "Mudar nvel", que permite alterar o nvel de busca
da rvore de solues, a ser descrita em sees posteriores.
A interao do usurio com a aplicao se d por meio desta interface, onde possvel
arrastar as peas atribudas a ele do local de origem ao destino desejado. Independente de
estar utilizando peas brancas ou pretas para jogar, as peas do usurio so sempre inici-
alizadas na parte inferior do tabuleiro, procurando manter a sensao de proximidade das
mesmas em relao a ele. Essa caracterstica benecia a simulao, pois ajuda a aumentar a
sensao de se estar realmente disputando uma partida do jogo.
Quando houver a possibilidade de captura de pea adversria, ser permitido apenas
mover a pea ou peas que possam realizar tal captura, de acordo com as regras descritas
3.2. IMPLEMENTAODE UM JOGO DE DAMAS POR MEIODE ALGORITMOS
GENTICOS 22
Figura 3.7: Interface grca da aplicao durante uma partida.
em ??. As peas da aplicao so mostradas na Figura ??. Para o caso da captura de vrias
peas adversrias em uma nica jogada, tanto para o computador como para o jogador, as
peas so mantidas no tabuleiro at a ltima captura ser realizada. Entretanto estas peas
sero exibidas em preto-e-branco no tabuleiro, de modo a indicar que foram capturadas. A
captura da ltima pea da sequncia resulta na imediata remoo de todas aquelas captura-
das.
Figura 3.8: Aparncia das peas da aplicao.
Ainda utilizando-se das regras descritas em ??, o lance realizado pelo usurio permitido
ou no. Caso no seja permitido, o jogador e informado sobre a impossibilidade de tal lance
atravs de uma caixa de texto exibindo a informao em questo, mostrada na Figura ??. A
interface do jogo tambm garante que no seja permitido mover quaisquer peas que no
as suas.
Figura 3.9: Alerta ao usurio sobre jogada no permitida.
3.2. IMPLEMENTAODE UM JOGO DE DAMAS POR MEIODE ALGORITMOS
GENTICOS 23
3.2.3 Da rvore de jogadas
Esta aplicao foi desenvolvida de modo que a formar uma rvore de jogo. Uma rvore de
jogo, ou game tree, um grafo direcionado cujos ns consistem em posies do jogo e as
arestas so movimentos. Cada n no-terminal associado a um jogador, cujo movimento
gerar um n de posse de outro jogador ?. Uma rvore de jogo completa aquela cuja qual
comea na posio inicial e possui todos os movimentos possveis a partir de cada posio.
Nesta aplicao, cada n da rvore possui informaes acerca do tabuleiro atual, da
quantidade de peas, e sua avaliao, utilizada pelo algoritmo gentico na escolha da pr-
xima jogada. Os ns tambm possuem uma ag indicando se a jogada pertencente a ele
do jogador ou computador. Conforme o jogo progride, a rvore expande-se. Mais acerca da
implementao da rvore ser descrito em sees posteriores.
3.2.4 Do controle da vez atual e do encerramento da partida
O controle sobre quem a vez de jogar feito pela mquina de estados nitos da aplicao,
onde a vez de cada participante do jogo pode ser denida como um estado da aplicao.
Devido ao modelo tradicional no trabalhar com aes, sendo um modelo de aceitao ou
reconhecimento de palavras, a FSM da aplicao est de acordo com os Modelos de Moore
e Mealy. Ela segue o modelo de Moore, onde a sada depende somente do estado atual, e
denida pela classe FiniteStateMachine da aplicao desenvolvida, a qual corresponde nos
fontes da aplicao ao arquivo de mesmo nome e extenso .java.
A implementao de uma estrutura prpria ao controle das jogadas mostrou-se necess-
ria, uma vez que determinadas caractersticas da qualidade e quantidade das peas do usu-
rio e do computador, em conjunto com a quantidade de lances realizados, deveriam ser ve-
ricadas a mde dar ou no continuidade ao jogo. A mquina de estados desenvolvida para
a aplicao segue os conceitos exibidos na seo ?? deste trabalho e possui trs estados de
jogo que podemser denidos como VEZ_JOGADOR, VEZ_COMPUTADOR e FIM_DE_JOGO.
Da funo de transio
Antes de iniciarmos uma discussoacerca destes estados, julga-se necessrio falar umpouco
sobre o mecanismo que permite a transio entre eles. A funo de transio entre os esta-
dos desta aplicao pode ser considerada como o ato de validar ou no uma jogada, em
conjunto com o grupo de mtodos denidos na classe FiniteStateMachine responsveis por
identicar o nal da partida.
A validao de umjogada responsabilidade das classes denidas emJogada.java e Mo-
vimentacao.java, que constituem o conjunto de mtodos responsveis por validar o movi-
mento de uma pea para uma dada posio, alm de identicar e armazenar informaes
sobre peas em posio de realizar captura. Informao essa cuja simples existncia su-
3.2. IMPLEMENTAODE UM JOGO DE DAMAS POR MEIODE ALGORITMOS
GENTICOS 24
ciente para assegurar que o prximo movimento do jogador atual, quer seja computador ou
usurio, tenha que tomar providncias para satisfaz-la.
A classe Jogada uma superclasse da aplicao herdada pela classe Jogador, que con-
trola as jogadas do usurio. Movimentacao.java, por outro lado, utilizada pela classe Al-
goritmoGenetico para validar as jogadas do computador. Jogador e AlgoritmoGenetico so
encontradas em arquivos de extenso .java de mesmo nome.
Encerrado o movimento, o prximo passo vericar se a partida deve ou no ser encer-
rada. O estado corrente chama ento a funo mDeJogo. Este mtodo, do tipo boolean,
pertencente classe FiniteStateMachine verica inicialmente se, de acordo com as regras
expostas na seo ??, houve vitria do jogador ou do computador. Caso no identique
vitria este mtodo chama o mtodo isEmpate e devolve um resultado com o mesmo valor
do fornecido por este mtodo, o qual tambm do tipo boolean e verica a existncia de
empate de acordo com o conjunto de regras j citado.
Pode-se, com base no que foi exibido aqui, observar que, inicialmente, a funo de tran-
sio da mquina de estados nito da aplicao trabalha coma simples validao da jogada,
onde a jogada invlida impossibilitaa mudana de estado forando o jogo permanncia no
estado atual. Em seguida observa se houve ou no condio que satisfaa o encerramento
do jogo. Em caso armativo, ocorre a transio para o estado FIM_DE_JOGO, que atua de
forma a encerrar a partida. Caso contrrio, ocorrer ou no mudana de estado de acordo
com o que ser observado em relao ao comportamento de cada estado.
Os estados do jogo
As aes tomadas pelos estados do jogo so denidas pelo mtodo update, pertencente
classe da mquina de estados, o qual contm os trs estados da aplicao. interessante
destacar que o mtodo no dene diretamente os comportamentos de cada estado, sendo
responsvel na verdade apenas por gerenciar quando e como cada uma destas aes so
tomadas. O conjunto das aes de cada estado implementado em suas classes chamadas
AcaoComputador e AcaoJogador. Estas classes fazem acesso direto respectivamente as clas-
ses AlgoritmoGenetico e Jogador, e a partir do uso de seus mtodos montamos seus prprios
de forma a criar os conjuntos de aes de cada estado. Explicado isso, vejamos agora como
cada estado atua.
Durante uma partida, a chamada do mtodo update da mquina de estados pode se dar
de trs formas. Continuamente a mquina de estados verica o valor da varivel VEZ que,
dentre outras funes, serve de ag para determinar se a jogada atual pertence ou no ao
computador. Quando identicado que a varivel possui um valor que corresponde vez do
computador, o mtodo update chamado e as aes referentes jogada do computador so
realizadas.
A segunda forma ocorre sempre que o usurio, durante a sua vez, interage com a inter-
3.2. IMPLEMENTAODE UM JOGO DE DAMAS POR MEIODE ALGORITMOS
GENTICOS 25
face de jogo pela ao de arrastar uma pea de uma casa a outra. Tal interao aciona um
mtodo da classe da mquina de estados responsvel por avaliar a jogada. Isto feito por
meio de acesso a um mtodo de AcaoJogador que, atravs de chamada a mtodos da classe
Jogador e aqueles que ela herda de Jogada, capaz de vericar se a entrada que a aplica-
o est recebendo vlida ou no. Caso seja determinada a validade da jogada, o mtodo
update chamado para desempenhar as aes referentes vez do jogador.
A ltima forma que se d a chamada do mtodo sempre que, ao nal das aes dos
estados do computador ou do jogador, for determinadopor avaliao feita pelo mtodo m-
DeJogo que a partida deve ser encerrada. Isso gera uma chamada de update especicando
que o estado a ser analisado agora o do encerramento da partida.
Oestado do jogador
Dentro do mtodo update, o estado atribudo ao usurio, VEZ_JOGADOR, quando selecio-
nado, informa a superclasse Jogada que as avaliaes que ela esta prestes a realizar dizem
respeito s peas controladas pelo usurio e em seguida realiza o movimento. Logo aps
ele promove a dama a pea do jogador que tenha alcanado o outro lado do tabuleiro, caso
exista, e informa ao adversrio a nova disposio do tabuleiro.
O estado ainda realiza uma vericao a m de determinar se o usurio encerrou sua
ao. Isso no ocorrer apenas para o caso de se estar realizando uma captura emsequncia
que ainda apresente adversrios a serem capturados. O valor dessa vericao ca arma-
zenado em uma varivel chamada updated. Em seguida realizada a vericao que de-
termina se houve ou no condio que satisfaa o m da partida, por meio do j discutido
mtodo mDeJogo que recebe, como um dos parmetros, o valor de updated. Este valor lhe
informa se determinadas vericaes devem ser realizadas ou no. A avaliao desse par-
metro presta-se a evitar que certos valores sejammodicados e prejudiquema avaliao das
regras do jogo.
Encerrada a avaliao de mDeJogo, se a varivel updated possui valor verdadeiro, e caso
tenha ocorrido captura, as conguraes do tabuleiro so salvas no banco de dados. Por
congurao, denimos o conjunto de peas alteradas durante a captura. Esse conjunto
representado pelo par ndice-caractere, denominamo Posio, tal qual se apresenta no ta-
buleiro anterior a modicao. Essas conguraes so utilizadas pelo algoritmo gentico
durante a avaliao de jogadas. Uma congurao possui vrias posies, e uma posio
pode estar associada a vrias conguraes. As classes Congurao e Posio podem ser
encontradas nos Cdigos ?? e ??, respectivamente.
Ainda no caso de update ter valor verdadeiro, realizada uma limpeza no tabuleiro,
substituindo qualquer caractere que indique uma pea capturada por aquele de um es-
pao vazio e o valor da varivel VEZ mudado para informar que chegou o momento do
computador realizar seus movimentos. O estado ainda incrementa o valor da varivel LAN-
3.2. IMPLEMENTAODE UM JOGO DE DAMAS POR MEIODE ALGORITMOS
GENTICOS 26
CES_REALIZADOS, que representa o nmero total de movimentos efetuados at o momento.
O valor falso para updated caracteriza que est ocorrendo uma captura de vrios adver-
srios que ainda no chegou ao m, e o usurio tem permisso de realizar um novo lance,
utilizando apenas a ltima pea movida, de forma a continuar a jogada. interessante des-
tacar que, ainda que este estado faa a vericao de m de jogo para ambos os valores de
updated, para o valor falso nunca ocorrer mde jogo, pois a jogada ainda no foi concluda.
Entretanto necessrio que essa vericao seja feita antes da vericao do valor de upda-
ted, visto que, do contrrio, poderia ocorrer a transferncia de vez ao computador, quando
na verdade a partida deveria ser encerrada.
Oestado do computador
O estado atribudo ao computador, VEZ_COMPUTADOR, possui algumas particularidades
comrelao ao anterior. Ele inicia comunicando a superclasse Jogada, que as avaliaes que
ela esta prestes a realizar dizemrespeito s peas controladas pelo computador. Emseguida,
ativa a ao do computador responsvel por iniciar uma nova jogada, a ao getProximaJo-
gada denida emAcaoComputador. Este mtodo retorna umn da rvore de jogo, cujo qual
possui a prxima jogada, gerada pelo algoritmo gentico. Este n recebido j possui a movi-
mentao da pea e as possveis capturas feitas.
Terminada esta ao vericada a possibilidade de promoo de uma pea para dama,
o nmero de lances total incrementado e caracteres representando peas capturadas que
existamnaqueles da congurao atual do tabuleiro so substitudos por espaos vazios. Se
houver existido captura, as conguraes do tabuleiro anteriores ao atual so salvas. Em
seguida, a varivel VEZ tem seu valor mudado para aquele que representa a vez do jogador,
e se verica se existe pea do jogador em posio de realizar captura. Essa medida deve ser
tomada de forma que ajustes necessrios a tal situao sejamidenticados antes de realizar-
se a animao do tabuleiro que reita a jogada que acaba de ser realizada pelo computador,
assegurando que caso tal situao seja verdadeira a animao correspondente a esse cen-
rio e suas caractersticas sejam devidamente representadas. A falta dessa vericao nesse
ponto acarretaria que o usurio, ao receber a vez, pudesse mover qualquer pea como bem
entendesse, mesmo que devesse estar realizando uma captura.
Finalmente realizada a vericao que determina se o jogo deve ser encerrado, tendo
no lugar do parmetro updated, utilizado no estado do jogador, o valor verdadeiro, j que ao
alcanar este ponto a jogada do computador estar sempre concluda.
Oencerramento da partida
O ltimo estado da mquina de estados, FIM_DE_JOGO, meramente substitui do tabuleiro
de jogo quaisquer peas capturadas que possa haver por espaos vazios. Em seguida rea-
nima o tabuleiro, que por sua vez redene as informaes exibidas na parte superior da tela,
3.2. IMPLEMENTAODE UM JOGO DE DAMAS POR MEIODE ALGORITMOS
GENTICOS 27
de forma a reetir corretamente o nmero de peas dos participantes e a situao nal da
partida, isto vitria, empate ou derrota. As informaes referentes partida, como nmero
nal de peas e damas de cada participante, resultado da partida, durao, entre outras, so
salvas a m de fornecerem base para a anlise da habilidade do jogador em questo, estas
conguraes aparecem na forma de uma classe chamada AtributoPartida, cujas proprie-
dades encontram-se no Cdigo ??.
Finalmente, encerrada a execuo da mquina de estados, impedindoque computador
ou jogador venhama realizar quaisquer jogadas posteriores.
Os cdigos dos mtodos update, mDeJogo e isEmpate podem ser encontrados, respec-
tivamente, nos Cdigos ??, ?? e ??.
3.2.5 Da anlise da habilidade e da escolha de diculdade
Como a presente abordagem prope-se a auxiliar o aprendizado do jogador, no caso espe-
cco do jogo de damas, julgou-se imperativo criar um mtodo de anlise das habilidades
atuais do jogador. Isso tornou necessrio a quanticao de tais habilidades. Foi denido
que o nvel de habilidade seria um valor real com mnimo em 0.0, para um jogador sem ne-
nhumconhecimento, e mximo em 100.0, para um jogador ideal.
A vericao da habilidade do jogador se d atravs da classe GerenciadorDiculdade,
umSingleton
1
que calcula e armazena o nvel de diculdade atual.
Devido ao fato de o aprendizado ocorrer com o decorrer de mais de uma partida, o cl-
culo da diculdade efetuado antes de n partidas, e no a cada uma delas. Esse nmero n foi
arbitrariamente denido como 3, com base em testes feitos com o objetivo de descobrir um
melhor desempenho. Assim, antes da chamada do mtodo feita uma vericao atravs
do mtodo precisaCalcular, que retorna um valor do tipo boolean. Esta vericao subtrai
o valor de um contador e, caso este contador seja igual ou menor a zero, reinicia o contador
e retorna verdadeiro, indicando que existe a necessidade de recalcular a diculdade. Caso
contrrio, retorna falso.
Caso o retorno seja positivo, feita uma chamada ao mtodo que efetura o clculo, cha-
mado calculaDiculdade. Este retorna um valor double e tem como parmetros um objeto
do tipo Usurio, cujas propriedades encontram-se no Cdigo ??. Esta classe possui, dentre
outras informaes, o conjunto de objetos do tipo Congurao coletados durantes as par-
tidas deste jogador, e um conjunto de objetos do tipo AtributosPartida, tais quais descritos
na seo ??.
Em posse deste usurio, calculaDiculdade, que pode ser encontrado em ??, dene,
inicialmente, pesos para cada objeto da coleo de AtributosPartida. Essa denio ocorre
como mostrada no Algoritmo ??.
1
Singleton um padro de projeto de software que garante a existncia de apenas uma instncia de uma
classe, mantendo um ponto global de acesso ao seu objeto.
3.2. IMPLEMENTAODE UM JOGO DE DAMAS POR MEIODE ALGORITMOS
GENTICOS 28
Algoritmo 2 Denio dos pesos para os atributos.
1: begin procedimento
2: Inicializa vetor fatores
3: i tamanho da coleo de atributos
4: fator 100.
5: while i >0 do
6: i i 1
7: fator fator 2
8: fatores[i ] fator
9: if i ==1 then
10: fatores[0] fator
11: end if
12: end while
13: end procedimento
Para exemplicar essa abordagem, suponhamos que tenhamos cinco objetos Atributo-
Partida: A, B, C e D, de partidas que ocorreram nessa respectiva ordem. Sendo assim, a
coleo seria composta por A,B,C,D, e o vetor fatores possuiria tamanho 4, semelhante ao
tamanho da coleo.
Na primeira iterao, com i = 3 e fator = 100, teramos fator = 1002 = 50, e fatores[4],
indicando D, receberia fator =50.
Na segunda iterao, com i = 2 e fator = 50, teramos fator = 50 2 = 25, e fatores[3],
indicando E, receberia fator =25.
A prxima iterao resultaria em fator= 25 2 = 12.5, e fatores[1] = 12, 5. Neste ponto,
a varivel i seria igual a 1, o que resultaria em fatores[0] = 12, 5. Esses valores sero, ento,
utilizados nas anlises posteriores, de modo a garantir que as partidas mais recentes sejam
mais relevantes para o clculo que as antigas.
Foi denido que cada anlise poderia resultar em um valor de no mnimo 0.0 e no m-
ximo 20.0. Isso se deve ao fato de que foram atribudos pesos a tais anlises, onde, multi-
plicadas por seus respectivos pesos e somadas, elas resultariam em um mximo de 100.00
pontos. Dito isso, feita uma soma da anlise de quatro fatores:
Resultado de todas as partidas do usurio em questo, com peso multiplicador 2.0;
Nmero de damas do usurio e do computador ao m da partida, com peso multipli-
cador 1.5;
Nmero de pedras do usurio e do computador ao m da partida, com peso multipli-
cador 0.5;
Ovalor de lances emrelao ao resultado de cada partida, compeso multiplicador 1.0.
3.2. IMPLEMENTAODE UM JOGO DE DAMAS POR MEIODE ALGORITMOS
GENTICOS 29
Da anlise dos resultados das partidas
Esta anlise pode retornar um valor entre um mnimo 0.0 e um mximo 40.0, devido ao seu
peso multiplicador de 2.0, e leva emconta o resultado nal das partidas jogadas pelousurio,
assumindo que quanto mais vitrias, melhor este jogador seria. Tambm levado em conta
a ordem de tais resultados, dando maior importncia aos resultados mais recentes, atravs
do pesos atribudos no Algoritmo ??. O clculo dado pela Equao ??:
f (u) =
_
n
i =0
R f at or es[i ]
MAX +MI N
_
_
MAX_POR_ANALI SE
MAX +MI N
_
(MULT I PLIC ADOR), (3.1)
onde u o usurio; n o nmero de itens AtributosPartida no conjunto de atributos
do usurio u; MAX o valor mximo, no caso atual equivalente a 100.0; MI N o valor
mnimo, no caso atual equivalente a 0.0; MAX_POR_ANALI SE o maior valor que cada
anlise pode resultar, sem o multiplicador, com valor atual de 20.0; MULT I PLIC ADOR o
multiplicador da anlise, com valor de 2.0, e R denido como se segue:
R(i ) =
_
_
MAX se o usurio venceu a partida i ;
MI N se o usurio perdeu a partida i ;
MAX+MI N
2
se houve empate na partida i .
3.2.6 Da anlise da quantidade de damas
Esta anlise pode retornar um valor entre um mnimo 0.0 e um mximo 30.0, devido ao seu
peso multiplicador de 1.5. Ela analisa a quantidade de damas aliadas e inimigas ao nal da
partida. Novamente, levado emconta a ordemdas partidas. Oclculo dado pela Equao
??:
f (u) =
_
g(u)
_
_
MAX_POR_ANALI SE
MAX+MI N
_
(MULT I PLIC ADOR), (3.2)
onde u o usurio; n o nmero de itens AtributosPartida no conjunto de atributos
do usurio u; MAX o valor mximo, no caso atual equivalente a 100.0; MI N o valor
mnimo, no caso atual equivalente a 0.0; MAX_POR_ANALI SE o maior valor que cada
anlise pode resultar, sem o multiplicador, com valor atual de 20.0; MULT I PLIC ADOR o
multiplicador da anlise, com valor de 1.5; e g(u) denida pela Equao ??.
g(u) =
_
n
i =0
V ALOR_ALf ator es[i ]
MAX+MI N
_
+
_
n
i =0
V ALOR_I Nf ator es[i ]
MAX+MI N
_
, (3.3)
onde, dados X e Y tal que X a quantidade de damas aliadas, e Y a quantidade de damas
inimigas, denimos V ALOR_AL e V ALOR_I N como se segue:
3.2. IMPLEMENTAODE UM JOGO DE DAMAS POR MEIODE ALGORITMOS
GENTICOS 30
V ALOR_AL(i ) =
_
_
0 se 0 X <2;
25 se 2 X <4;
50 se 4 X <7;
75 se 7 X <10;
100 se 10 X 12.
V ALOR_I N(i ) =
_
_
100 se 0 Y <2;
75 se 2 Y <4;
50 se 4 Y <7;
25 se 7 Y <10;
0 se 10 Y 12.
3.2.7 Do algoritmo gentico da aplicao e sua implementao
Captulo 4
Resultados Obtidos
31
Captulo 5
Concluso
5.0.8 Trabalhos Futuros
32
Apndice A
Cdigo do AGCheckers
Neste apndice apresentamos alguns trechos de cdigo do AGCheckers com o objetivo de
auxiliar a compreenso da implementao e dos algoritmos, portanto, ressaltamos que mui-
tas linhas de cdigo no relacionado diretamente como propsitodeste trabalho foramomi-
tidas.
Cdigo A.1: Classe AtributosPartida
1 public cl ass At ri but osPart i da {
2 private st at i c f i nal long serialVersionUID = 1L;
3
4 private Int eger i d ;
5 private St ri ng data ;
6 private i nt resul tado ;
7 private i nt numPecasAliadas ;
8 private i nt numDamasAliadas;
9 private i nt numPecasInimigas;
10 private i nt numDamasInimigas ;
11 private long duracao ;
12 private Usuario usuario ;
13 private i nt quantLances ;
14 }
Cdigo A.2: Mtodo update da classe FiniteStateMachine
1 public void update( i nt origem, i nt destino , i nt estado) {
2 boolean updated = true ;
3 switch ( estado) {
4 case FiniteStateMachine . VEZ_JOGADOR:
5 Jogada . setJogador ( Jogada .JOGADOR) ;
6 i f ( t abul ei roAuxi l i arJogador == null ) {
33
APNDICE 34
7 t abul ei roAuxi l i arJogador = new Individuo(
noAtual . getEstado ( ) . getTabul ei ro ( ) . clone ( ) ,
noAtual . getEstado ( ) . getNumPecasJogador( ) ,
noAtual . getEstado ( ) . getNumPecasComputador( ) ,
Jogada .JOGADOR) ;
8 t abul ei roAuxi l i arJogador .
set Posi coesIntermedi ari as (new ArrayLi st <
Integer >( ) ) ;
9 t abul ei roAuxi l i arJogador . setPecaMudada( origem) ;
10 t abul ei roAuxi l i arJogador .
getPosi coesIntermedi ari as ( ) . add( origem) ;
11 }
12 t abul ei roAuxi l i arJogador . getPosi coesIntermedi ari as ( ) .
add( destino ) ;
13
14 char ultima_peca_jogada = t abul ei roAuxi l i arJ ogador .
getTabul ei ro ( ) [ origem] ;
15 thi s . aJogador . doAcaoMovimento( origem, destino ,
ultima_peca_jogada , t abul ei roAuxi l i arJ ogador ) ;
16
17 updated = thi s . aJogador . completouAcao(
t abul ei roAuxi l i arJogador ) ;
18
19 i f ( updated) {
20 thi s . aJogador . doAcaoPromocao( destino ,
t abul ei roAuxi l i arJogador . getTabul ei ro ( ) ) ;
21 }
22
23 / / VERIFICA SE O ADVERSARIO AINDA PODE REALIZAR JOGADAS
24 i f ( thi s . fimDeJogo( updated , FiniteStateMachine .
VEZ_COMPUTADOR) ) {
25 setEstado (FIM_DE_JOGO) ;
26
27 t abul ei roAuxi l i arJogador . setTabul ei ro ( thi s .
aJogador . limparCapturas(
t abul ei roAuxi l i arJogador . getTabul ei ro ( ) .
clone ( ) ) ) ;
28 i f ( t abul ei roAuxi l i arJ ogador . getComeu( ) ) {
APNDICE 35
29 ArqConfiguracao . salvaConfiguracao(
t abul ei roAuxi l i arJ ogador .
getTabul ei ro ( ) , Jogador .JOGADOR) ;
30 }
31
32
33 noAtual = getNovoNo( noAtual ,
t abul ei roAuxi l i arJogador , destino ) ;
34
35 t abul ei roAuxi l i arJogador = null ;
36
37 aComputador. showAnimacao ( ) ;
38 thi s . update( origem, destino , FiniteStateMachine
. FIM_DE_JOGO) ;
39 } el se i f ( updated) {
40 t abul ei roAuxi l i arJogador . setTabul ei ro ( thi s .
aJogador . limparCapturas(
t abul ei roAuxi l i arJogador . getTabul ei ro ( ) .
clone ( ) ) ) ;
41
42 i f ( t abul ei roAuxi l i arJ ogador . getComeu( ) ) {
43 ArqConfiguracao . salvaConfiguracao(
t abul ei roAuxi l i arJ ogador .
getTabul ei ro ( ) , Jogador .JOGADOR) ;
44 }
45
46 noAtual = getNovoNo( noAtual ,
t abul ei roAuxi l i arJogador , destino ) ;
47 t abul ei roAuxi l i arJogador = null ;
48 aComputador. showAnimacao ( ) ;
49 FiniteStateMachine . setEstado ( FiniteStateMachine
.VEZ_COMPUTADOR) ;
50 LANCES_REALIZADOS++;
51 }
52 break;
53 / /