Sei sulla pagina 1di 55

Instituto Superior Tcnico

Licenciatura de Engenharia Electrotcnica e de Computadores Ramo de Sistemas Electrnicos e de Computadores

Trabalho Final De Curso Jogo De Xadrez Por Algoritmos Gentico-Evolutivos


(30 Novembro 2001)

Orientador : Autores:

Professor Agostinho Rosa 41159 Nuno Ramos 41203 Srgio Salvado

Agradecimentos
Com este capitulo pretende-se mostrar o nosso agradecimento por quem de forma directa ou indirecta contribuiu para a realizao deste projecto. Em primeiro lugar h que agradecer ao nosso orientador, Professor Agostinho Rosa a sua disponibilidade e toda a ajuda prestada sempre que solicitado. Foi uma pessoa que esteve sempre ao nosso lado tentando de todas as formas que o trabalho decorresse a bom ritmo. Em segundo lugar, queramos agradecer ao nosso Professor Pedro Santos a quem por algumas vezes recorremos, por ter um vasto conhecimento em linguagens de Programao. Por fim, com agrado que compartilhamos este momento com os nossos colegas e amigos de longa data, Jos Gomes Pereira, Daniel Pereira e Lus Gois que nos acompanharam ao longo deste ano e que com a sua opinio enriqueceram o nosso trabalho.

ndice
Instituto Superior Tcnico ........................................................................................................................................................0 Licenciatura de Engenharia Electrotcnica e de Computadores ...................................................................................0 Ramo de Sistemas Electrnicos e de Computadores..............................................................................................0 Trabalho Final De Curso .................................................................................................................................................0 Agradecimentos..........................................................................................................................................................................1 ndice............................................................................................................................................................................................2 Lista de Figuras ..........................................................................................................................................................................3 Lista de Tabelas..........................................................................................................................................................................4 1. Introduo..........................................................................................................................................................................5 2. Apresentao dos Algoritmos Genticos......................................................................................................................6 2.1. Introduo..............................................................................................................................................................6 2.2. Algoritmo Gentico Cannico ...........................................................................................................................7 2.3. Operadores Genticos..........................................................................................................................................8 2.3.1. Cruzamento ......................................................................................................................................................8 2.3.2. Mutao e Inverso.......................................................................................................................................10 2.4. Avaliao e Seleco de Cromossomas..........................................................................................................11 2.5. Parmetros de um Algoritmo Gentico ..........................................................................................................11 2.6. Melhorias de Desempenho do Algoritmo Gentico .....................................................................................12 2.6.1. Parmetros e Inicializaes .........................................................................................................................12 2.6.2. Operadores Genticos...................................................................................................................................13 2.6.3. Reparaes e Seleco..................................................................................................................................13 2.7. Domnios de Aplicao .....................................................................................................................................14 2.7.1. Problemas de Schedulling............................................................................................................................14 2.7.2. Outras reas de Aplicao..........................................................................................................................15 3. Estrutura ...........................................................................................................................................................................16 3.1. Estrutura do Jogo de Xadrez.............................................................................................................................17 3.2. Estrutura dos AGs ..............................................................................................................................................18 4. Implementao ................................................................................................................................................................22 4.1. Linguagem de programao proposta.............................................................................................................22 4.2. Estrutura dos Genes............................................................................................................................................22 4.3. Implementao do AG.......................................................................................................................................27 4.3.1. Parmetros e funcionamento do AG..........................................................................................................27 4.3.2. Operadores Genticos...................................................................................................................................29 4.3.3. Algoritmos de Recuperao ........................................................................................................................29 4.3.4. Algoritmo de Fitness ....................................................................................................................................30 4.3.5. Avaliaes Estticas do Algoritmo de Fitness.........................................................................................31 4.3.5.1. Avaliao Esttica do Peo...............................................................................................................31 4.3.5.2. Avaliao Esttica da Torre ..............................................................................................................34 4.3.5.3. Avaliao Esttica do Cavalo ...........................................................................................................36 4.3.5.4. Avaliao Esttica do Bispo.............................................................................................................37 4.3.5.5. Avaliao Esttica da Rainha ...........................................................................................................39 4.3.5.6. Avaliao Esttica do Rei .................................................................................................................40 4.3.5.7. Ameaa e Proteco de Peas ..........................................................................................................42 4.4. Implementao das regras do xadrez..............................................................................................................44 4.4.1. Implementao do Peo, Enpassant Move e Promoes........................................................................44 4.4.2. Implementao das restantes Peas............................................................................................................46 4.4.3. Implementao da Deteco dos Cheques e Empates Tcnicos...........................................................47 4.5. Outras Implementaes .....................................................................................................................................48 5. Explicao Resumida do Jogo......................................................................................................................................49 6. Resultados........................................................................................................................................................................50 7. Concluses.......................................................................................................................................................................51 7.1. Crticas..................................................................................................................................................................51 7.2. Melhorias .............................................................................................................................................................53 Referncias................................................................................................................................................................................54 Bibliografia ...............................................................................................................................................................................54

Lista de Figuras
Figura 2.1 Descrio de um AG...............................................................................................7 Figura 2.2 - Exemplo de um cruzamento uniponto.....................................................................9 Figura 2.3 - Exemplo de um cruzamento multiponto. ................................................................9 Figura 2.4 - Exemplo de um cruzamento uniforme. ...................................................................9 Figura 2.5 Exemplo de uma mutao. ...................................................................................10 Figura 2.6 Exemplo de uma inverso. ...................................................................................10 Figura 3.1 UML......................................................................................................................16 Figura 3.2 Exemplos de cromossomas...................................................................................19 Figura 3.3 Origem das novas geraes. .................................................................................19 Figura 3.4 Formao de uma populao misturada. ..............................................................20 Figura 4.1 Estrutura dos genes (1 verso).............................................................................22 Figura 4.2 - Movimentos possveis e codificaes para o Peo. ..............................................23 Figura 4.3- Direces possveis e codificaes para a Torre. ...................................................24 Figura 4.4- Movimentos possveis e codificaes para o Cavalo. ............................................24 Figura 4.5- Direces possveis e codificaes para o Bispo. ..................................................25 Figura 4.6- Direces possveis e codificaes para a Dama. ..................................................25 Figura 4.7- Movimentos possveis e codificaes para o Rei...................................................26 Figura 4.8 Funcionamento do AG. ........................................................................................28 Figura 4.9 Fase final do jogo. Figura 4.10 Roque Pequeno vs Roque Grande. ...............................................................................................................................33 Figura 4.11 Peo dobrado. Figura 4.12 Peo isolado. ........33 Figura 4.13 Peo passado e ligado. Figura 4.14 Cavalo bloqueia Peo passado. ..............................................................................................................................34 Figura 4.15 Duas Torres na stima linha. ..............................................................................35 Figura 4.16 Cavalo activo vs Cavalo passivo. .......................................................................37 Figura 4.17 Bispo livre vs Bispo bloqueado ..........................................................................38 Figura 4.18 - Rei protegido vs Rei desprotegido. ....................................................................42 Figura 4.19- Ameaa e proteco de uma pea. .......................................................................42 Figura 4.20 As brancas jogam bem. Figura 4.21 As brancas jogam mal. .43 Figura 4.22 Peo branco avanado. Figura 4.23 Peo negro avana duas casas. ..................................................................................................................................45 Figura 4.24 Execuo do enpassant move.............................................................................45 Figura 4.25 Preparao do roque pequeno. Figura 4.26 Execuo do roque. ..................................................................................................................................46 Figura 7.1 Ameaa e Proteco..............................................................................................52

Lista de Tabelas
Tabela 4.1 Codificao da identificao das peas................................................................23 Tabela 4.2 Codificao do deslocamento. .............................................................................26 Tabela 4.3 Pontuao antes da fase final do jogo. Tabela 4.4 Pontuao na fase final do jogo. ..........................................................................32 Tabela 4.5 Roque Pequeno vs Roque Grande. Tabela 4.6 Roque Grande vs Roque Pequeno. ......................................................................32 Tabela 4.7 Mobilidade da Torre.............................................................................................35 Tabela 4.8 - Proximidade da Torre ao Rei. ...............................................................................36 Tabela 4.9 Mobilidade do Cavalo. Tabela 4.10 Proximidade do Cavalo ao Rei. ..........................................................................36 Tabela 4.11 - Pontuao que o Cavalo recebe por ocupar determinada casa. ..........................37 Tabela 4.12 Mobilidade do Bispo. .........................................................................................38 Tabela 4.13- Pontuao que o Bispo recebe dependendo da casa que ocupa. ..........................39 Tabela 4.14 Mobilidade na fase inicial. Tabela 4.15 Mobilidade na fase final.....................................................................................40 Tabela 4.16 - Proximidade da Rainha ao Rei adversrio. .........................................................40 Tabela 4.17- Pontuao antes do final do jogo. Tabela 4.18 - Pontuao durante o final do jogo. .....................................................................41

1.

Introduo
Para ser possvel realizar o projecto que nos foi proposto foi necessrio, antes de mais,

saber tudo sobre o jogo de xadrez. Aprender a movimentar as peas e conhecer as regras bsicas algo que no leva mais de algumas horas a um jogador humano, no entanto saber jogar xadrez algo que demora uma vida inteira. A dificuldade do jogo de xadrez est em saber qual o melhor lance perante uma determinada posio que aparece no tabuleiro. O jogador humano responde a esta questo pegando na teoria que envolve o jogo e em toda a experincia acumulada ao longo de muitas partidas disputadas. O nosso projecto, da mesma forma que um xadrezista, vai tentar encontrar para uma posio especifica a melhor resposta possvel. Para conseguir atingir o seu objectivo vai recorrer ajuda preciosa dos algoritmos genticos. O Homem do sculo XXI o resultado de milhes de anos de evoluo ao longo de muitas geraes. Sabe-se da Gentica que um ser humano o resultado visvel da informao codificada nos seus genes e que estes, por sua vez, se organizam para formar cromossomas. Partindo deste raciocino e adaptando-o ao nosso problema, podemos concluir que um gene representa um possvel movimento de uma pea, num jogo de xadrez. Um cromossoma compreende um conjunto de genes (lances de xadrez) e uma populao constituda por um conjunto de cromossomas. O nosso objectivo gerar populaes cada vez mais evoludas, ou seja, conjuntos de lances que melhorem a posio presente no tabuleiro. A procura do melhor lance numa determinada posio implicaria calcular, para cada lance branco todas as respostas negras e para cada uma destes lances todas as respostas brancas, e assim sucessivamente. Para uma mdia de lances possveis de n, e uma profundidade de m, haveria que analisar nm posies. Para o caso especifico de (n=35, m=4) eram necessrias 1500625 avaliaes. Com os algoritmos genticos pretende-se com um nmero muito mais reduzido de clculos, obter respostas seguramente no to boas, mas pelo menos satisfatrias.

2.

Apresentao dos Algoritmos Genticos

2.1. Introduo
Os Algoritmos genticos so sistemas adaptativos que imitam alguns mecanismos observados na evoluo natural das espcies. Os primeiros passos neste campo foram dados por John Holland no incio do anos 70, que acreditou ser possvel resolver alguns problemas atravs de processos de evoluo semelhantes. Da Gentica sabe-se que os seres vivos tm, no ncleo das suas clulas, molculas de DNA onde esto gravados as suas caractersticas. Estas molculas so por sua vez constitudas por cromossomas. Em cada cromossoma encontram-se os genes organizados em cadeias. Durante a reproduo sexual existe troca de material gentico entre os dois progenitores, originando novos cromossomas que combinam as caractersticas dos cromossomas pais. Menos frequentemente ocorrem mutaes ao nvel dos gene. So pequenas alteraes acidentais ou induzidas, que podero ter repercusses nas caractersticas do novo ser. O fenmeno da mutao tem uma probabilidade muito reduzida. Quando acontece, o gene de um filho fica diferente do gene correspondente de ambos os pais. Uma reproduo sem mutaes implica que cada gene do cromossoma do filho seja igual ao correspondente gene de um dos pais. Da evoluo natural das espcies, sabe-se que os indivduos mais adaptados ao meio ambiente tm maior probabilidades de sobreviverem e de se reproduzirem. Assim, a sua informao gentica ser herdada por mais descendentes e ter menor probabilidade de se perder. Estas caractersticas retiradas da prpria evoluo das espcies serviram de inspirao para a criao dos algoritmos genticos. Usando sequncias binrias que se designam por cromossomas, e que representam possveis solues para um problema, simula-se a evoluo natural criando novas sequncias atravs da reproduo das j existentes.

2.2. Algoritmo Gentico Cannico


habitual designar como cannico o algoritmo gentico definido por Holland que tem as seguintes caractersticas: ? ? ? Representao binria os cromossomas so sequnc ias de 0s e 1s. Operadores genticos (fazem a recombinao dos cromossomas) cruzamento, mutao e inverso Existncia de uma funo de avaliao que mede a qualidade de um cromossoma em relao ao problema a resolver. Esta funo a nica ligao entre o AG e o problema.

Na Figura 2.1 podemos ver a descrio de um AG suficientemente genrica [Laseeb] para abranger a maioria de implementaes deste tipo de algoritmos.

Algoritmo Gentico 1. Inicializa uma populao de cromossomas. 2. Avalia cada cromossoma da populao. 3. Cria novos cromossomas cruzando os cromossomas actuais; aplica mutao e recombinao quando os cromossomas pais se cruzam. 4. Apaga cromossomas da populao para arranjar espaos para os novos. 5. Avalia a qualidade dos novos cromossomas e insere-os na populao. 6. Se o critrio de paragem for alcanado pra a execuo e retorna o melhor cromossoma; caso contrrio volta ao passo 3.

Figura 2.1 Descrio de um AG.

A populao composta pelos cromossomas existentes no incio do passo 3 da descrio da Figura 2.1. Em cada ciclo uma nova populao criada atravs da substituio de alguns, ou mesmo de todos os cromossomas da antiga populao por novos cromossomas criados atravs da recombinao gentica.

O critrio de paragem do passo 6 pode ser definido de vrias formas: ? ? ? ?

A soluo para o problema foi encontrada. No caso de existirem vrias solues a melhor foi encontrada. No caso de existirem vrias solues foi encontrada uma dentro de uma vizinhana em relao melhor. O nmero predefinido de geraes foi esgotado.

Um cromossoma representa uma soluo para o problema proposto, logo deve conter informao suficiente de modo que a sua qualidade possa ser avaliada depois de descodificado. O cromossoma constitudo por genes e ao valor que a descodificao de cada gene retorna d-se o nome de alelo. A codificao no AG cannico binria e a sua dimenso dada pelo nmero de bits que o constituem. A prpria complexidade da descodificao est associada ao problema que se pretende resolver.

2.3. Operadores Genticos


Os operadores genticos so os responsveis pela evoluo da qualidade das solues, durante a execuo do algoritmo. O cruzamento o responsvel pela convergncia dos AGs. A mutao tem como objectivo introduzir e manter variedade gentica. O operador inverso usa apenas um cromossoma para gerar um novo, invertendo a ordem de alguns bits. Os cromossomas para a reproduo so escolhidos em funo da sua qualidade. Melhores cromossomas tm maior probabilidade de serem escolhidos, propagando boas sequncias genticas pela populao e contribuindo para a evoluo da qualidade geral da mesma.

2.3.1.Cruzamento
O cruzamento o responsvel pela criao de novos cromossomas atravs da recombinao do material gentico de dois cromossomas j existentes na populao. Dos vrios tipos de cruzamento existentes salientam-se trs que se podem considerar os mais genricos cruzamento uniponto, cruzamento multiponto e cruzamento uniforme.
8

Na Figura 2.2 pode observar-se a representao uniponto. O ponto de cruzamento escolhido aleatoriamente. Os filhos herdam os bits de um dos pais at ao ponto de cruzamento e a partir deste, os bits de outro pai.
Pais: 1100111001101010 0111010000101100 Filhos: 1100111000101100 0111010001101010

Figura 2.2 - Exemplo de um cruzamento uniponto.

Semelhante ao cruzamento anterior existem os cruzamentos multiponto mas com vrios pontos de cruzamento conforme se pode observar na Figura 2.3.
Pais: 1001010111001101 0001110000100010 Filhos: 1001110111101010 0001010000000101

Figura 2.3 - Exemplo de um cruzamento multiponto.

No cruzamento uniforme, gerada uma mscara aleatria que indica quais os genes dos dois cromossomas que vo ser trocados (Figura 2.4).

Pais: 1101100000001111 0000111111110000 Filhos: 0000100110001111 1101111001110000

Figura 2.4 - Exemplo de um cruzamento uniforme.

O cruzamento considerado como o verdadeiro responsvel pela evoluo da qualidade das populaes do cromossomas. O facto de recombinar os bits dos melhores cromossomas implica que as melhores sequncias genticas da populao se propaguem criando novos cromossomas que exploram o espao de procura em direco s melhores solues. Estes processo corre, no entanto, o risco de ficar preso em mximos locais e outras operaes so necessrias para garantir diversidade na populao.

2.3.2.Mutao e Inverso
A mutao tem como objectivo assegurar a diversidade gentica de uma populao de cromossomas. Usando apenas cruzamentos pode chegar-se a um ponto em que 1 dos bits do cromossoma tem o mesmo valor em toda a populao. Se a determinada altura todos os cromossomas tiverem o primeiro bit a 1 e a melhor soluo tiver necessariamente esse bit a 0 o AG, usando cruzamentos, nunca atingir essa soluo. Esse problema pode ser resolvido com mutao que, normalmente com uma probabilidade muito baixa, altera o valor de um bit. Por outro lado um valor muito alto da mutao pode danificar boas sequncias genticas e tornar o AG numa procura quase aleatria.
Gene original: 1101100000001111 Gene mutado: 1001000010001110

Figura 2.5 Exemplo de uma mutao.

O operador inverso actua apenas num cromossoma invertendo a ordem dos bits entre dois escolhidos aleatoriamente.
Gene original: 1101100010001111 Gene invertido: 1101001000101111

Figura 2.6 Exemplo de uma inverso.

10

2.4. Avaliao e Seleco de Cromossomas


A avaliao da qualidade de um cromossoma e da soluo representada por ele feita por uma funo de avaliao (Fitness Function). A funo de avaliao a nica ligao que o AG cannico tem com o problema que se pretende resolver. Os valores retornados pela funo de avaliao so de seguida, argumento da funo de escalonamento (fitness scaling function). Esta funo tem como objectivo escalonar a qualidade dos cromossomas dentro de um intervalo definido. O valor que a funo de escalonamento retorna usual denominar esse valor por mrito usado na seleco de cromossomas que se cruzam para gerar descendncia. Quanto maior for esse valor, maior probabilidade o cromossoma tem de ser escolhido. Existem vrios mtodos para seleccionar o cromossoma segundo a sua qualidade. Um dos mais usados o mtodo da roleta. Com esta tcnica, a probabilidade de um cromossoma ser escolhido directamente proporcional ao valor do seu mrito.

2.5. Parmetros de um Algoritmo Gentico


A determinao dos valores mais adequados para os parmetros, de modo a maximizar o desempenho do algoritmo, uma questo que deve ser ponderada antes da implementao final do AG. Estes parmetros so: ? ? Codificao do cromossoma : Normalmente bin ria. Tamanho da populao : O nmero de cromossomas da populao afecta o

desempenho do AG. Populaes pequenas podem levar convergncia para mximos locais devido reduzida diversidade gentica. Por outro lado se o tamanho da populao for muito grand e pode levar a que o AG perca tempo desnecessrio a explorar o espao de procura. ? Probabilidade dos cruzamentos : Cada operador tem uma certa probabilidade de ser usado em determinada altura para produzir novos cromossomas. Dependendo do problema certos c romossomas so mais ou menos eficazes na evoluo da qualidade da populao.

11

Probabilidade de mutao : Uma probabilidade de mutao muito elevada pode levar a uma procura quase aleatria e uma probabilidade muito baixa pode reduzir a diversidade gentica da populao.

Funo de escalonamento : A funo de escalonamento define a probabilidade de os cromossomas serem escolhidos para se cruzarem. O desempenho do algoritmo afectado pelo nvel de selectividade da funo de escalonamento. Uma selectividade muito elevada, significando que existe maior diferena de probabilidades entre os melhores e os piores algoritmos, pode acelerar a convergncia do algoritmo mas lev- lo a convergir para mximos locais ao no explorar correctamente o espao de procura.

2.6. Melhorias de Desempenho do Algoritmo Gentico


At agora foi analisado com algum detalhe o AG cannico. Esta abordagem inicial do algoritmo gentico pode sofrer alteraes de modo a melhorar o seu desempenho. Nesta seco discutem-se possveis alteraes ao AG cannico bem como as razes que podero levar sua implementao.

2.6.1.Parmetros e Inicializaes
Normalmente a comparao entre os AGs feita atravs do nmero de cromossomas que foram avaliados at se atingir a soluo ptima ou at se atingirem solues com equivalente qualidade. A medida ideal seria o tempo de execuo, mas isso implicaria que os AGs a comparar teriam de ser executados na mesma mquina depois de implementados com o mesmo software. A eficcia do AG cannico, devido sua concepo e representao binria, pode ser vista como a relao entre nmero de avaliaes e espao de procura. Num AG com codificao binria o espao de procura dado por:
dimenso do cromossoma

Dimenso_espao_procura = 2

Quanto menor for a relao avaliaes/espao_procura, mais eficaz o AG, porque necessitou de uma menor explorao do espao de procura para encontrar a soluo.

12

Outra das medidas a ter em conta a possibilidade da representao de um cromossoma no ser obrigatoriamente binria, existindo casos em que uma representao de inteiros ou de reais pode ser vantajosa. No AG cannico os cromossomas da populao inicial so gerados de forma aleatria. No entanto, em alguns problemas pode ser vantajoso fazer a inicializao segundo uma determinada heurstica de modo a minimizar violaes de algumas restries. Por outras palavras, trata-se de uma iniciao no aleatria. Esta tcnica afasta-se do AG cannico na medida que usa informao relativa ao problema noutro mdulo para alm do de avaliao.

2.6.2.Operadores Genticos
Como as operaes de cruzamento se baseiam em troca de genes dos cromossomas (independentemente destes serem binrios, inteiros ou fraccionrios), os trs tipos de cruzamento definidos anteriormente, para a representao binria, podem tamb m ser utilizados na representao numrica cruzamento por mdia. Este tipo de cruzamento, parte de dois cromossomas para produzir um nico. Os genes do cromossoma filho so o resultado da mdia dos genes dos cromossomas pais. Em relao s operaes de mutao, as diferenas j so muito notrias. A mutao de um gene em binrio corresponde sua inverso. A mutao de um valor numrico j implica a substituio por outro valor[PiMo98].

2.6.3.Reparaes e Seleco
Por vezes os cromossomas gerados no representam solues vlidas para o problema. Existem duas abordagens que se podem utilizar nestas situaes de modo a minimizar a propagao de ms sequncias genticas. A primeira consiste na penalizao dos cromossomas que representam solues invlidas. Pretende-se deste modo atribuir uma probabilidade muito pequena a estes cromossomas de serem escolhidos para as operaes genticas. A segunda consiste no uso de algoritmos de reparao para validar o cromossoma. AGs deste tipo so considerados hbridos porque incluem processos para encontrar solues que no se baseiam exclusivamente na evoluo natural.

13

O mtodo da seleco da roleta implica que o melhor cromossoma tenha maiores probabilidades de ser escolhido, mas no garante que seja efectivamente escolhido. Mesmo que tal acontea no seguro que o melhor indivduo transite para a gerao seguinte j que a tcnica de reproduo pode levar sua eliminao. Para garantir que os melhores elementos de uma populao no so eliminados existe um operador designado por elitismo que coloca automaticamente os melhores elementos de uma gerao na gerao seguinte.

2.7. Domnios de Aplicao


Se o problema para o qual se pretende encontrar uma soluo for representado por uma funo com apenas um mximo, os mtodos determinsticos encontram a soluo qualquer que seja o ponto de partida. No entanto se a funo que representa o problema apresentar alm do mximo absoluto um mximo local, o sucesso de procura j no garantido uma vez que o xito vai depender do ponto de partida da procura. Se estiver na vizinhana do mximo local, ento a procura tende a caminhar para esse ponto. Uma vez atingido esse ponto, no existe processo pelo qual o mtodo encontre o mximo absoluto. Um AG pode contornar este problema porque alm de iniciar a procura em vrios pontos, tantos quantos os cromossomas da populao inicial, possui mecanismos de procura que no so determinsticos. Apesar dos processos de seleco orientarem no sentido de solues melhores, existe sempre uma componente aleatria que pode levar o AG a explorar novos caminhos e ultrapassar mximos locais. No caso de funes com apenas um mximo os mtodos determinsticos mostram-se a escolha mais apropriada, uma vez que os AGs podem explorar desnecessariamente o espao de procura.

2.7.1.Problemas de Schedulling
Os algoritmos genticos so frequentemente utilizados em problemas de schedulling, tais como gerao de horrios escolares e de horrios de transportes, gesto de stocks, planeamento de tarefas, etc. A dificuldade de gerao de horrios depende das restries que so feitas e que definem o espao de procura vlido. Quantas mais restries existem mais difcil se torna o
14

problema. Por restries entende-se o impedimento de uma turma ter duas aulas ao mesmo tempo, o limite mximo de horas que um professor pode ter por dia, a obrigatoriedade de um perodo de almoo entre outras. A complexidade deste problema depende tambm do nmero de horrios que necessrio gerar (nmero de turmas, professores e salas). Os problemas de schedulling tm vrios mximos locais e vrias solues possveis o que faz com que a sua resoluo seja complexa na maior parte dos casos. As dimenses dos cromossomas so extensas fazendo com que o tempo de execuo seja normalmente elevado. O objectivo quando se resolve problemas de schedulling reduzir o nmero de restries violadas. Tratam-se de problemas de minimizao de funes de custo com vrios mnimos locais onde os algoritmos genticos so por definio mecanismos teis para a sua resoluo.

2.7.2.Outras reas de Aplicao


Os algoritmos genticos tm sido usados em diversos jogos. Jogos simples que no necessitam de cromossomas de grandes dimenses nem tm um espao de procura muito extenso. Foi aplicado no jogo mastermind, em que um jogador tem que adivinhar uma sequncia de cores definida pelo adversrio. Foi utilizado tambm no puzzle pentominos, onde o problema foi resolvido em cerca de 50 000 avaliaes em poucos minutos. O problema n-queens frequentemente utilizado para testar o desempenho de AGs especialmente devido ao facto da sua complexidade ser regulada pelo nmero de rainhas que se utilizam. Devido sua flexibilidade os AGs tm sido utilizados em diversas reas de actividade com maior ou menor sucesso dependendo da facilidade de adaptao dos problemas a este tipo de algoritmos. Os AGs tm sido aplicados com sucesso em inteligncia artificial, vida artificial, engenharia biomdica, previso financeira, criao artstica, controle de movimentos ou processamento digital de sinal. Como se verifica os algoritmos genticos tm uma vasta aplicao em diversas rea da actividade humana.

15

3.

Estrutura
Um bom projecto qualquer que ele seja obedece a um rigoroso plano trabalho. No

nosso caso especfico, foi seguida uma filosofia orientada para objectos e como tal tornou-se necessrio e mesmo obrigatrio recorrer ao UML (Unified Modeling Language) como ferramenta auxiliar de modelao e desenvolvimento de projecto. O trabalho est repartido em trs blocos principais implementao do jogo de xadrez, AGs e interface grfica. Tanto os AGs, como a interface grfica servem de suporte estrutura principal que gere todo os processos e engloba os objectos do jogo, nomeadamente os jogadores, respectivas peas e o tabuleiro. O UML delineado deste projecto encontra-se representado na Figura 3.1. Nele podemos situar os trs blocos j descritos comeando pelo flanco esquerdo onde se encontram as populaes e os algoritmos do GA. No centro so visveis os objectos pertencentes ao jogo de xadrez, tais como Game, Player, Board e Pieces. Finalmente direita esto os vrios objectos constituintes da interface grfica ( GameInterface), que permitem a comunicao entre o programa e o utilizador.

GA Mutation

Chess

JFrame GameInterface

JDialog NewPlayerDialog JDialog BWDialog JDialog

Crossover

UniformMutation

Inversion

UniformCrossover

GAGame

Game

AdjustmentListener GALevelsDialog JDialog

PlayerData

promotionDialog JDialog

FitnessAlgorithm Cloneable Gene 0..* Cloneable Chromosome 0..* Population CPUplayer HUMANplayer GAPlayer Player 0..* 0..* Cloneable Piece Board

saveGameDialog JDialog continueDialog JDialog askNameDialog JDialog createPlayerDialog

WhiteBlackPop

BlackWhitePop

King Queen

Bishop

Knight

Rook

Pawn

Empty

Figura 3.1 UML.

16

3.1. Estrutura do Jogo de Xadrez


O objecto Chess no faz mais que gerar o objecto Game e a interface grfica (GameInteface) , limitando-se depois a fazer a manuteno dos mesmos e a funcionar como meio de comunicao entre os dois. Cada jogo constitudo por um tabuleiro e dois jogadores, humanos e/ou mquinas, contendo cada jogador 16 peas. O objecto Game encarrega-se ento de criar todos estes objectos, originando uma rede de comunicao entre todos, estabelecendo assim o processo do jogo de xadrez. O processamento do jogo, comandado por este objecto, envolve diversas responsabilidades tais como, orientar os jogadores de modo a que intercalem entre si os lances, verificar a validade desses lances e tambm verificar todas as ameaas de cada pea no tabuleiro. O tabuleiro, board, encarrega-se de memorizar as peas que esto em jogo e suas respectivas posies no mesmo. Recebe instrues dos jogadores para inserir, mover ou retirar peas e informa aos mesmos e ao Game o estado do tabuleiro. Existem dois tipos de jogadores possveis jogador humano (HumanPlayer) e jogador mquina (CPUPlayer). Est especificado ainda um terceiro jogador, GAPlayer que pertence ao AG, sendo por isso a sua existncia justificada mais adiante. O jogador humano recorre interface grfica para receber instrues do utilizador e tambm para lhe transmitir as informaes necessrias. Assegura a validade dos lances recebidos do utilizador, executa esses mesmos lances e verifica possveis situaes no jogo como sejam cheques, cheque mates, promoes e empates tcnicos. Todas estas responsabilidades so tomadas, sendo cumpridas com a cumplicidade dos objectos Game, Board e Pieces. O jogador mquina tem de recorrer ao AG para poder tomar decises. Todas as outras operaes de validao, execuo e anlise dos lances recebidos pelo AG so executadas de forma semelhante do jogador humano. Todos os jogadores, humanos e mquina, tm associada uma pequena base de dados (PlayerData) que criada no momento da sua gerao. Nesta base de dados consta, para alm da identificao do jogador, o seu historial onde registado o seu desempenho, traduzido nas derrotas, empates, vitrias alcanadas e o nmero de jogos efectuados pelos prprios. Trata-se apenas de mais uma caracterstica com o intuito de tornar o jogo mais aliciante. A cada jogador so atribudas dezasseis peas, de seis tipos diferentes; especificamente um Rei (King), uma Rainha (Queen), dois Bispos (Bishops), dois Cavalos (Knights), duas Torres (Rooks) e seis Pees (Pawns). Cada pea tem como atributos a sua

17

identificao e cor, guardando ainda informao de qual o jogador a que pertence, da sua posio no tabuleiro, caso ainda no tenha sido tomada, para alm de outras informaes caractersticas de cada tipo de pea. Os mtodos de anlise da sua posio no jogo ajustam-se, como natural, a cada tipo de pea. Como exemplo, a procura de peas inimigas, dentro de alcance, de uma Torre difere da do Cavalo que se limita a verificar os oito quadrados de destino possveis, face aos varrimentos verticais e horizontais efectuados pela primeira. Em relao aos AGs, os genes variam tambm as suas caractersticas de acordo com os diferentes tipos de peas que representam. Em consequncia, cada pea tem os seus prprios mtodos de tratamento e manipulao dos seus genes. Toda esta rede, constituda pelos objectos Chess, Game, Board, Player e Piece, funciona como motor de todo o jogo, que alimentado ou por instrues humanas atravs da interface grfica, ou por um AG cuja inteligncia varia de acordo com os parmetros que lhe so atribudos, conforme ser explicado de seguida, no captulo 3.2.

3.2. Estrutura dos AGs


Depois da introduo aos AGs efectuada no captulo 2, pode-se facilmente identificar os vrios objectos constituintes do AG apresentado no UML apresentado na Figura 3.1. As populaes, respectivos cromossomas e genes, os operadores genticos e o algoritmo de fitness esto presentes e representados em objectos distintos. Os genes tm representao binria e o seu tamanho e codificao variam de acordo com o tipo de pea que identificam. Cada gene representa um possvel lance, onde esto representados a identificao da pea e respectivo movimento. Os cromossomas so constitudos por genes, que variam em nmero de acordo com a profundidade do algoritmo. A profundidade representa o nmero de lances e o seu tamanho proporcional ao nvel do algoritmo. Um conjunto de vrios cromossomas representa uma populao. Na Figura 3.2 pode-se observar a constituio de dois cromossomas com diferentes nveis de profundidade. Este AG tem na sua base duas populaes, uma de lances brancos e outra para os lances negros. Os operadores genticos, cruzamento e mutao, vo operar nestas duas populaes separadamente, originando novas geraes, os chamados filhos da velha gerao. A avaliao das geraes feita tendo em conta no s a qualidade dos lances individuais da respectiva cor, mas tambm tem em considerao as possveis respostas do adversrio. No pode ser considerado um bom lance tomar um Cavalo adversrio, colocando em risco uma

18

pea de maior valor como por exemplo uma Dama. A resposta do adversrio sempre levada em conta. Para se conseguir avaliar estas sequncias de jogada-resposta criada, em cada ciclo de evoluo do AG, uma populao misturada, constituda por cromossomas das populaes branca e negra, intercalados. Esta populao uma sequncia de lances branconegro (WhiteBlackPop) ou negro-branco (BlackWhitePop) conforme a cor do jogador mquina, a que pertence este AG, seja branca ou negra, respectivamente. Nas Figuras 3.3 e 3.4 est exemplificado esta parte do AG.

Cromossoma com nvel de profundidade 3: 0110101000100111011101 gene1 gene2 gene3 Cromossoma com nvel de profundidade 5: 01101010001001110111011100001011110110 gene1 gene2 gene3 gene4 gene5

Figura 3.2 Exemplos de cromossomas.

Populao Branca (Velha gerao) Cromossoma 1 Cromossoma 2

Operadores genticos (Cruzamento e Mutao)

Populao Branca Cruzada e Mutada (Nova gerao) Cromossoma 3 Cromossoma 4 Populao Negra Cruzada e Mutada (Nova gerao) Cromossoma 3 Cromossoma 4

Populao Negra (Velha gerao) Cromossoma 1 Cromossoma 2

Figura 3.3 Origem das novas geraes.

O algoritmo de fitness opera na populao misturada realizando desta maneira mltiplas avaliaes a cada cromossoma da cor do jogador mquina. No exemplo da Figura 3.4, com populaes de dois cromossomas, so avaliadas quatro (nvel da populao 2) respostas do adversrio para cada cromossoma. No final obtm-se uma populao misturada com 16 cromossomas. A profundidade desta populao duplica pois passa a conter lances dos dois adversrios, tipo jogada-resposta.

19

Formao de um cromossoma misturado: Cromossoma Branco gene 1 gene2 gene3 Cromossoma Negro gene 1 gene2 gene3

gene 1

gene 1

gene2 gene2 gene3 Cromossoma Misturado

gene3

Populao Misturada: Cromossoma 1 Cromossoma 2 Cromossoma 3 Cromossoma 4 Cromossoma 5 Cromossoma 6 Cromossoma 7 Cromossoma 8 Cromossoma 9 Cromossoma 10 Cromossoma 11 Cromossoma 12 Cromossoma 13 Cromossoma 14 Cromossoma 15 Cromossoma 16 Cromossoma 1 intercalado com Cromossoma 1 Cromossoma 1 intercalado com Cromossoma 2 Cromossoma 1 intercalado com Cromossoma 3 Cromossoma 1 intercalado com Cromossoma 4 Cromossoma 2 intercalado com Cromossoma 1 Cromossoma 2 intercalado com Cromossoma 2 Cromossoma 2 intercalado com Cromossoma 3 Cromossoma 2 intercalado com Cromossoma 4 Cromossoma 3 intercalado com Cromossoma 1 Cromossoma 3 intercalado com Cromossoma 2 Cromossoma 3 intercalado com Cromossoma 3 Cromossoma 3 intercalado com Cromossoma 4 Cromossoma 4 intercalado com Cromossoma 1 Cromossoma 4 intercalado com Cromossoma 2 Cromossoma 4 intercalado com Cromossoma 3 Cromossoma 4 intercalado com Cromossoma 4

Figura 3.4 Formao de uma populao misturada.

Sendo obrigatrio a avaliao dos lances com uma resposta do adversrio, a utilizao de populaes separadas para cada cor foi a forma encontrada para evitar uma melhoria dos lances do jogador mquina e degradao das possveis respostas do adversrio. O objectivo centra-se em garantir que o adversrio responda sempre da melhor forma. De nada servia avaliar os lances sabendo-se partida que as respostas seriam ser sempre ms. Evoluindo as populaes separadamente e avaliando-as em conjunto, garante-se uma procura mais eficaz do melhor lance. Resumindo, as populaes sofrem o processo de evoluo individualmente mas so avaliadas em conjunto.

20

Dos vrios operadores genticos existentes, foram seleccionados trs para este AG cruzamento uniforme, mutao uniforme e inverso. A procura do melhor lance num jogo de xadrez consiste em achar a jogada que coloca maior dificuldades ao adversrio. Sabendo que nos genes que compem o cromossoma os primeiros bits identificam a pea, e os restantes a direco e o deslocamento, qualquer cruzamento em que determinados bits tivessem mais probabilidade de ser cruzados do que outros seria desaconselhvel uma vez que seria privilegiado a procura num determinado sentido em detrimento de outro. Como a soluo correcta parece ser o equilbrio entre a procura de novos movimentos para uma determinada pea e a procura de novas peas elegeu-se o cruzamento uniforme. No cruzamento uniforme (Figura 2.4), gerada uma mscara aleatria que indica quais os genes dos dois cromossomas que vo ser trocados. Quanto mutao foram utilizados dois mtodos, o operador inverso (Figura 2.6) e a mutao uniforme com negao de bit (Figura 2.5). O operador inverso actua apenas num cromossoma invertendo a ordem dos bits entre dois bits escolhidos aleatoriamente. Este operador foi escolhido por estar a demonstrar em aplicaes concretas baseadas em algoritmos genticos resultados bastante satisfatrios. Todos os jogadores mquina tm associado um GA que toma todas as decises dos primeiros. Como auxilio ao GA so criados jogos e jogadores paralelos ao jogo corrente (GAGame e GAPlayer), que so essenciais ao processamento deste.

21

4.

Implementao

4.1. Linguagem de programao proposta


Vrias so as linguagens que poderiam ser utilizadas para implementar este programa mas optou-se por escolher o Java porque ao contrrio de outras linguagens que criam programas especficos para um processador ( Pentium ou Motorola ), o Java cria um cdigomquina que o browser converte em cdigo binrio compreensvel por qualquer processador. As applets Java so completamente independentes do equipamento pois podem ser executadas tanto num PC como num Macintosh, qualquer que seja o sistema a correr nestas mquinas (Windows ou Unix). Por ser uma linguagem extremamente flexvel e amplamente utilizada na internet nos dias que correm, parece ser a linguagem indicada para a realizao do trabalho.

4.2. Estrutura dos Genes


A representao binria foi a representao escolhida porque, para alm de ser suficientemente genrica e aplicvel a qualquer problema, permitia suportar as codificaes binrias simples em que se baseiam os nossos algoritmos. Inicialmente, pensou-se codificar todos os genes com o mesmo nmero de bits, de modo a facilitar o algoritmo de cruzamento (Figura 4.1). Cada gene representa um movimento de uma determinada pea. Com dez bits o gene era codificado em trs partes distintas identificao da pea, com os quatro primeiros bits, direco do movimento, com trs bits e deslocamento do movimento, com os ltimos trs bits. Todos os genes depois de cruzados representariam peas e movimentos vlidos. O problema associado a esta medida era o excessivo nmero de bits redundantes que deste modo adviria.

Pea (4 bits)

Direco (3 bits)

Deslocamento (3 bits)

Figura 4.1 Estrutura dos genes (1 verso)

Com o compromisso de reduzir o nmero de bits ao mnimo indispensvel, houve a necessidade de arranjar um algoritmo de cruzamento e mutao muito mais elaborado e

22

complexo. Tanto a direco, como o deslocamento deixaram de ser codificados com trs bits fixos cada e dependem agora dos movimentos possveis da pea a que os genes se referem. Em algumas peas, como por exemplo o Peo, o movimento deixou mesmo de ser codificado em duas partes, direco e deslocamento, passando a ter apenas uma codificao nica que representa as duas anteriores. De salientar que para todas as codificaes e sempre que possvel foi escolhido o cdigo Gray. Assim garante-se que pequenas alteraes nos genes impliquem pequenas alteraes no seu comportamento (identificao da pea, direco e deslocamento). A identificao das peas codificada com quatro bits que representam cada uma das 16 peas do jogador (Tabela 4.1).

Cdigo 0000 0001 0011 0010 0110 0111 0101 0100

Pea Peo 1 Peo 2 Peo 3 Peo 4 Peo 5 Peo 6 Peo 7 Peo 8

Cdigo 1000 1001 1010 1011 1100 1101 1110 1111

Pea Torre 1 Torre 2 Cavalo 1 Cavalo 2 Bispo 1 Bispo 2 Rainha Rei

Tabela 4.1 Codificao da identificao das peas.

A codificao do movimento varia conforme o tipo de pea a que se refere o gene. Comeando pelo Peo (Figura 4.2), so necessrios apenas dois bits para codificar os seus movimentos pois esta pea s tem quatro possveis avanar uma ou duas casas (01 ou 11) e tomar esquerda ou direita (00 ou 10). Os genes que representem movimentos de Pees ficam assim reduzidos a seis bits, quatro para identificao e dois para o movimento.

11

00

01

10

Figura 4.2 - Movimentos possveis e codificaes para o Peo.

23

Em relao Torre (Figura 4.3), o movimento baseado na direco e no deslocamento. Dois bits so suficientes para codificar as quatro direces possveis, enquanto que para o deslocamento so necessrios trs bits. No total, os genes representantes das Torres so constitudos por nove bits.

00

10

01

11 Figura 4.3- Direces possveis e codificaes para a Torre.

O Cavalo (Figura 4.4), necessita de apenas 3 bits para codificar os seus oito movimentos possveis, resultando assim genes de sete bits.

100

000

101

001

111

011

110

010

Figura 4.4- Movimentos possveis e codificaes para o Cavalo.

24

O Bispo (Figura 4.5), em tudo semelhante Torre, variando apenas a direco dos seus movimentos. So necessrios genes de nove bits para codificar um movimento de um Bispo.
10 00

11

01

Figura 4.5- Direces possveis e codificaes para o Bispo.

A Rainha (Figura 4.6), a pea com maior liberdade de movimentos, sendo por isso a que necessita de mais bits de codificao. Como tem mais um grau de liberdade na direco que o Bispo e a Torre, necessita de mais um bit para a codificao do movimento, utilizando assim dez bits para codificar os seus genes.

000 100 001

011 101

111 110

010

Figura 4.6- Direces possveis e codificaes para a Dama.

O Rei (Figura 4.7), tem dez movimentos diferentes. Alm dos oito correspondentes a uma casa em todas as direces tem mais dois respeitantes ao roque esquerda e ao roque direita (dependendo da cor do Rei podem ser considerados roque pequeno ou roque grande) So necessrios quatro bits para codificar o seu movimento, que somados com os quatro da identificao, resultam oito bits para a codificao dos genes.

25

0000 0100 0001

10xx

0101

0011

11xx

Roque esquerda

Roque direita 0010 0111 0110

Grande

Figura 4.7- Movimentos possveis e codificaes para o Rei.

A Rainha, o Bispo e a Torre so as trs peas que necessitam codificar o deslocamento dos seus movimentos. No mximo vo ter um deslocamento de sete casas, como tal so necessrio trs bits para as codificar. Neste sentido sobra uma codificao que foi necessrio ponderar como seria aproveitada. A soluo chegada consistiu em atribuir esta codificao ao deslocamento de uma casa. Como a soluo chegada consistiu em beneficiar um deslocamento, parece ser uma medida de bom senso privilegiar a sada desta codificao em vez de outra qualquer.

Cdigo 000 001 011 010 110 111 101 100

Deslocamento 1 casa 1 casa 2 casas 3 casas 4 casas 5 casas 6 casas 7 casas

Tabela 4.2 Codificao do deslocamento.

A codificao dos genes apresentada, feita com a inteno de reduzir ao mximo a existncia de cromossomas invlidos, isto , impossibilitar que sejam atribudas movimentaes impossveis s peas de acordo com as suas caractersticas. No possvel que seja atribuda a uma Torre uma movimentao na diagonal, por exemplo. Deste modo espera-se acelerar bastante a procura de solues ptimas.

26

4.3. Implementao do AG
4.3.1.Parmetros e funcionamento do AG
Conforme foi explicado no captulo 2, o AG implementado vai ser baseado na evoluo de duas populaes distintas, uma para os lances brancos e outra para os lances negros. Ambas as populaes tm o mesmo nvel (tamanho), sendo este inquirido ao utilizador no lanamento do AG do jogador mquina. O nvel da populao equivalente ao nmero de cromossomas que a constituem. A profundidade do algoritmo representa o nmero de lances consecutivos que este analisa. Deste modo possvel ao algoritmo tentar adivinhar se as solues apresentadas tm perspectivas de retribuir bons resultados em lances futuros. Uma profundidade mais alta permite a seleco de solues que, mesmo apresentando maus resultados nos lances imediatos, obtenham resultados compensatrios a mdio prazo. Como exemplo, o sacrifcio de uma pea pode ser um bom lance se a curto ou mdio prazo permitir tomar uma pea de valor superior. O nvel de profundidade representa o nmero de genes (lances) que cada cromossoma possui. Inicialmente so geradas as duas populaes, branca e negra, com genes aleatrios e com os nveis de populao e de profundidade definidos. Formada a primeira gerao, iniciase o ciclo de evoluo do AG com o processo de recombinao dos cromossomas das populaes, atravs dos operadores genticos - cruzamento e mutao. Gera-se assim a prxima gerao de cromossomas. O algoritmo de fitness ento necessrio para avaliar e seleccionar as duas ltimas geraes (filhos e pais). Este algoritmo vai ser aplicado no nas duas populaes brancas e negras individualmente, mas sim numa nica populao (populao misturada), que formada com base nas duas ltimas geraes de cada cor. Os cromossomas com melhor fitness so seleccionados e passam a constituir a nova populao branca, ou negra, conforme a cor. Termina assim o primeiro ciclo do AG. O nmero de geraes que o algoritmo cria, depende do nvel de evolues, que tambm inquirido ao utilizador no lanamento do AG. Esse nvel representa o nmero de ciclos que o algoritmo vai executar, sendo o seu valor directamente proporcional ao nvel de aperfeioamento das solues encontradas.

27

Criao do AG: Formao aleatria das Populaes base

Novo turno. Pedido de um novo lance.

ltimo lance gerado invlido. Repetir processo.

Shift das Populaes base.

Processo de recombinao atravs dos operadores genticos

Avaliao e Seleco (Algoritmo Fitness)

Construo da Populao misturada

Fim da evoluo?

No

Sim

Fim do processo. Seleco do melhor lance.

Figura 4.8 Funcionamento do AG.

Findo o processo de evoluo, seleccionado da populao de cor idntica do jogador mquina, o cromossoma que obteve melhor fitness no ltimo ciclo. O AG termina assim a seu processo, devolvendo ao jogador mquina o lance seleccionado. No turno seguinte, quando o jogador mquina solicitar novamente ao seu AG um lance, o algoritmo comea o seu processo executando um shift s populaes branca e negra que concluram o processo no turno anterior. Deste modo no se perdem possveis sequncias de lances j estudados pelo AG, com boas hipteses de obterem resultados satisfatrios, melhorando assim o desempenho do algoritmo. Existe a hiptese de o lance seleccionado no ser v lido, devido ao fraco nvel do algoritmo ou mesmo dificuldade em obter respostas vlidas, como o caso de situaes de cheque ao Rei. Neste caso requerido ao AG para procurar novamente outro lance, sendo o seu arranque diferente pois no pode shiftar as populaes base (branca e negra). Na figura 4.8 encontra-se um esquema representativo do funcionamento deste AG.

28

4.3.2.Operadores Genticos
Durante a criao do AG, pedido ao utilizador para seleccionar o tipo de mutao (inverso ou mutao uniforme) e os nveis do cruzamento e mutao uniforme, caso tenha sido seleccionada. O nvel do cruzamento uniforme representa o nmero de bits que so cruzados em cada gene. O nvel da mutao uniforme equivale ao nmero de bits que devem ser negados. O cruzamento uniforme opera nas duas populaes base, uma de cada vez. Comeando por formar pares de cromossomas, cruza o primeiro gene do primeiro par de cromossomas, com o primeiro gene do segundo par de cromossomas. De seguida cruza os segundos genes, depois os terceiros e por a adiante at no existirem mais genes. Todos os pares de cromossomas so cruzados da mesma forma. O cruzamento propriamente dito portanto, executado nos genes. Comparando o tamanho do maior gene com o nvel do cruzamento seleccionado o menor nmero como o nmero de bits a cruzar (no possvel cruzar oito bits em dois pees de seis bits). So ento seleccionadas aleatoriamente as posies dos bits a cruzar. No caso do bit a ser trocado tenha um ndice maior que o tamanho do gene menor o bit correspondente a esse ndice no gene maior gerado aleatoriamente. A mutao vai ser aplicada nos cromossomas gerados pelo cruzamento (nova gerao). Em relao mutao uniforme, a sua aplicao ao nvel dos genes, como no cruzamento. So invertidos n bits de cada gene (n = tamanho do gene), em que n representa o nvel da mutao uniforme. O algoritmo de inverso difere da mutao uniforme na medida em que no possu um nvel de mutao. A sua aplicao tambm feita ao nvel do gene, seleccionando o intervalo de bits a ser invertido de forma aleatria.

4.3.3.Algoritmos de Recuperao
Tanto no cruzamento como na mutao esto implementados alguns algoritmos de recuperao que visam reduzir o processamento desnecessrio de avaliaes de lances invlidos. Aps a execuo de cada um destes operadores, existe a possibilidade de alteraes nos primeiros quatro bits do gene. Como estes bits representam a identificao da pea, alguma alterao nestes bits pode inutilizar o respectivo gene, por este no ter um comprimento vlido. No entanto est implementado um algoritmo de recuperao, que detecta

29

estas modificaes e rectifica o tamanho do gene cruzado, ou mutado, de acordo com a pea que representa. Outro algoritmo implementado, para evitar o processamento de lances invlidos, verifica se a pea resultante da mutao ainda se encontra em jogo. Em caso negativo, realizada uma busca, atravs do incremento unitrio da identificao da pea, para se encontrar uma pea vlida que substitua a anterior.

4.3.4.Algoritmo de Fitness
Depois de passarem pelos operadores genticos, os cromossomas das duas geraes tm de ser avaliados e seleccionados. A sua avaliao tem como meio a criao de uma populao misturada, onde os cromossomas das duas populaes, brancas e negras, sejam intercalados. Pretende-se, para cada cromossoma com lances do AG, avaliar o maior nmero possvel de respostas (geradas tambm pelo AG). Deste modo, cada cromossoma vai ser intercalado com todos os cromossomas de cor oposta, obtendo assim o leque de respostas que pode ter um nmero aceitvel, ou no, de acordo com o tamanho das populaes e com o estado do jogo no momento. Devido importncia deste algoritmo, no desempenho do AG, foram tomadas diversas direces na fase de testes, que convergiram em dois caminhos, que devolveram resultados mais satisfatrios. Esses resultados so comentados mais frente no relatrio, sendo por agora importante descrev- los. No primeiro mtodo, a avaliao das duas populaes feita da mesma maneira. feita uma avaliao geral de cada cromossoma face a todas as respostas do adversrio. Os cromossomas que obtm melhor desempenho face maior parte das respostas, so seleccionados. Da mesma forma, os cromossomas de respostas valorizados so aqueles que conseguem apresentam melhores respostas maioria dos lances do AG. Embora se trate de um mtodo um pouco generalista, os resultados alcanados foram bastante satisfatrios. No segundo mtodo, a avaliao guardada de modo diferente, para as populaes de lances do AG, e para as populaes de respostas. Para os lances do AG, feita uma procura, em todas as respostas geradas pelo algoritmo, da resposta com avaliao mais elevada. Subtraindo esta avaliao do melhor lance do cromossoma do AG, obtm-se um fitness que representativo das possibilidades deste cromossoma. Pretende-se com este mtodo procurar um objectivo nos lances do AG (lance com melhor fitness) e, por outro lado, supor que a

30

resposta do adversrio vai ser a que tiver o melhor fitness na populao de respostas avaliadas pelo algoritmo. O resultado de melhor lance - melhor resposta de todos os cromossomas da populao de lances ponderado de modo a seleccionar sempre, no os melhores lances individuais, mas sim a melhor relao de resultados. No fundo trata-se do mesmo processo que um jogador humano de nvel mdio-baixo utiliza para jogar xadrez. Dentro de uma profundidade baixa, procura conseguir o melhor lance possvel, fazendo um apanhado, limitado, das melhores respostas do adversrio. A avaliao das populaes de respostas feita, de modo a valorizar a qualidade das respostas aos lances do AG, no geral. Manteve-se o mesmo processo do mtodo anterior. mais til um cromossoma com respostas de bom nvel para quase todos os lances do AG, do que um cromossoma que apresente um par de respostas ptimas, obtendo respostas de menor qualidade para a maioria dos lances. A avaliao e seleco so ento feitas com base na mdia da qualidade das suas respostas.

4.3.5.Avaliaes Estticas do Algoritmo de Fitness


Esta atribuio de pontos feita de modo emprico, ou seja, baseada na observao de inmeras partidas e na nossa prpria opinio.

4.3.5.1.

Avaliao Esttica do Peo

A cada Peo presente no tabuleiro, atribuda uma pontuao de 100 pontos. Dependendo da fase em que o jogo se encontra, vo ser atribudos diferentes valores s posies que os pees ocupam no tabuleiro. Antes de se atingir o final do jogo, e caso os jogadores no tenham roques contrrios (um fez roque grande e o adversrio o roque pequeno), a pontuao a atribuir a cada peo no tabuleiro ser a que se encontra na Tabela 4.3. Pela observao da tabela verifica-se que o avano dos pees centrais recompensado com uma pontuao superior. Pode parecer estranho atribuir 0 pontos a um peo que se encontre prximo da casa de promoo, mas a prtica do jogo de xadrez mostra que um peo, antes de entrar na fase final do jogo, no deve estar muito longe do resto dos seus companheiros, uma vez que se torna difcil proteg- lo. Se o nmero de peas menores presentes no tabuleiro for inferior a 7, descontando o nmero de pees (as 7 peas contabilizam o nmero de Cavalos, Bispos e Reis),

31

consideramos que se atingiu a fase final de um jogo de xadrez. Nesta fase os pees assumem um papel fulcral no desenrolar da partida. O avano dos pees, aqui, claramente premiado como se pode observar na Tabela 4.4. Na Figura 4.9 ilustra-se com um exemplo prtico a fase final de um jogo de xadrez.

0 0 5 4 3 2 1 0

0 0 10 8 6 4 2 0

0 0 15 12 9 6 3 0

0 0 20 16 12 8 4 0

0 0 20 16 12 8 4 0

0 0 15 12 9 6 3 0

0 0 10 8 6 4 2 0

0 0 5 4 3 2 1 0

20 12 10 8 6 4 2 0

30 24 20 16 12 8 4 0

40 36 30 24 18 12 6 0

50 48 40 32 24 16 8 0

50 48 40 32 24 16 8 0

40 36 30 24 18 12 6 0

30 24 20 16 12 8 4 0

20 12 10 8 6 4 2 0

Tabela 4.3 Pontuao antes da fase final do jogo.

Tabela 4.4 Pontuao na fase final do jogo.

No caso dos jogadores terem feito roques para lados contrrios, haver alteraes a produzir na pontuao a atribuir a cada peo: As pontuaes encontram-se na Tabela 4.5, no caso de roque pequeno vs roque grande, e na Tabela 4.6, no caso roque grande vs roque pequeno.

0 0 5 4 3 2 1 0

0 0 10 8 6 4 2 0

0 0 15 12 9 6 3 0

0 0 20 16 12 8 4 0

0 0 20 16 12 8 4 0

0 0 -15 -12 -9 -6 3 0

0 0 -10 -8 -6 -4 2 0

0 0 -5 -4 -3 -2 1 0

0 0 -5 -4 -3 -2 1 0

0 0 -10 -8 -6 -4 2 0

0 0 -15 -12 -9 -6 3 0

0 0 20 16 12 8 4 0

0 0 20 16 12 8 4 0

0 0 15 12 9 6 3 0

0 0 10 8 6 4 2 0

0 0 5 4 3 2 1 0

Tabela 4.5 Roque Pequeno vs Roque Grande.

Tabela 4.6 Roque Grande vs Roque Pequeno.

As pontuaes negativas servem para penalizar o jogador que tente avanar os pees precisamente pelo lado em que o adversrio pretende atacar. Na Figura 4.10, em baixo, ilustram-se as estratgias adoptadas pelos jogadores quando se fazem roques contrrios.

32

Figura 4.9 Fase final do jogo.

Figura 4.10 Roque Pequeno vs Roque Grande.

Outras pontuaes, que dependem da situao de cada Peo em cada instante, so levadas em conta: ? +3 pontos por cada peo que esteja a proteg- lo. ? -7 pontos por cada peo que se encontre dobrado (se o peo tiver pees da mesma cor na mesma coluna). Ver exemplo na Figura 4.11. ? -3 pontos se o peo tiver isolado (o peo no pode ser protegido por nenhum peo da mesma cor) . Ver exemplo na Figura 4.12.

Figura 4.11 Peo dobrado.

Figura 4.12 Peo isolado.

? Se o peo alm de estar isolado no tiver pees adversrios na mesma coluna acrescenta-se uma penalizao de 10 pontos (esta penalizao tem justificao pelo facto de este peo ser um alvo bastante fcil para as peas inimigas).

33

? +15 pontos se o peo for passado (no existirem pees adversrios na mesma coluna sua frente nem pees adversrios em coluna s imediatamente direita nem esquerda que possam comer esta peo). ? +10 pontos se alm de ser passado for ligado (protegido por um peo da mesma cor). Ver exemplo na Figura 4.13. ? 7 pontos no caso do peo passado ser bloqueado por uma cavalo adversrio imediatamente sua frente, ou 3 pontos se for um bispo. Exemplo na Figura 4.14.

Figura 4.13 Peo passado e ligado.

Figura 4.14 Cavalo bloqueia Peo passado.

4.3.5.2.

Avaliao Esttica da Torre

Para cada Torre presente no tabuleiro, atribuda uma pontuao de 500 pontos. Diferentes pontuaes so atribudas dependendo das posies das restantes peas relativamente s Torres: ? ? ? ? ? ? +20 pontos por cada torre da mesma cor presente na stima linha (Figura 4.15). +15 pontos pela presena de mais de uma Torre da mesma cor na mesma coluna. +3 pontos se a torre tiver Pees adversrios em linha de vista. +4 pontos se a coluna onde se encontra a Torre estiver desobstruda de qualquer Peo. -12 pontos se a Torre do lado do Rei se mover primeiro que o Rei. -8 pontos se a Torre do lado da Dama se mover antes do Rei.

34

Figura 4.15 Duas Torres na stima linha.

No tabuleiro acima, o jogador branco tem duas Torres na stima linha, o que lhe traria um bnus de 40 pontos. Como se verifica a presena das Torres exerce grande presso sobre a posio negra. Dois factores a ter em conta na avaliao esttica da Torre so a sua mobilidade e a sua proximidade ao Rei. De acordo com a mobilidade (nmero de casas livres), que a Torre tenha em cada instante, atribuda a respectiva pontuao, de acordo com a Tabela 4.7 apresentada abaixo.

Mobilidade da Torre 0 1 2 3 4 5 6

Pontuao Atribuda -4 -3 -2 -1 0 1 2

7 8 9 10 11 12 13 14

3 4 5 6 6 6 6 6

Tabela 4.7 Mobilidade da Torre.

A proximidade ao rei adversrio contabilizada em funo da distncia dada pela diferena de linhas mais colunas, entre a torre e o rei adversrio. A pontuao a atribuir pela diferena de linhas igual atribuir pela diferena de colunas (Tabela 4.8). Desta forma pretende-se premiar a restrio de movimentos do rei. Como exemplo, uma Torre que se encontre distncia de 1 linha e 2 colunas do rei adversrio, vai- lhe ser atribuda uma pontuao de 24 pontos (14 + 10).

35

Proximidade ao rei adversrio 1 2 3 4 5 6 7

Pontuao atribuda 14 10 8 5 3 1 0

Tabela 4.8 - Proximidade da Torre ao Rei.

4.3.5.3.

Avaliao Esttica do Cavalo

Para o Cavalo so consideradas as seguintes pontuaes. ? ? ? +300 pontos por cada Cavalo presente no tabuleiro. De acordo com o nmero de movimentos que o Cavalo possa fazer para uma casa vazia atribuda uma determinada pontuao (Tabela 4.9). A Proximidade ao Rei inimigo (nmero de linhas mais nmero de colunas) pontuada de acordo com a Tabela 4.10.

Nmero de casas vazias 0 1 2 3 4 5 6 7 8

Pontuao atribuda -6 -2 1 2 3 4 5 6 7

Proximidade ao Rei inimigo 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Pontuao atribuda 12 10 8 6 4 2 0 0 -1 -2 -3 -4 -5 -6

Tabela 4.9 Mobilidade do Cavalo.

Tabela 4.10 Proximidade do Cavalo ao Rei.

Um Cavalo protegido por Pees numa posio avanada mostra-se uma arma muito forte, como tal atribudo trs pontos por cada Peo que proteja o Cavalo e este se encontre a uma distncia (linhas mais colunas) do Rei adversrio no superior a seis. A posio do Cavalo no tabuleiro pontuada de acordo com a Tabela 4.11.

36

-10 -5 -5 -5 -5 -5 -5 -10

-5 0 0 0 0 0 0 -5

-5 0 5 5 5 5 0 -5

-5 0 5 10 10 5 0 -5

-5 0 5 10 10 5 0 -5

-5 0 5 5 5 5 0 -5

-5 0 0 0 0 0 0 -5

-10 -5 -5 -5 -5 -5 -5 -10

Tabela 4.11 - Pontuao que o Cavalo recebe por ocupar determinada casa.

Pela tabela verifica-se que a posio ideal para o cavalo no centro do tabuleiro, onde o seu poder de aco proporcional ao nmero de casas que controla. Na Figura 4.16 abaixo, esta ideia compreende-se perfeitamente ao observar-se as inmeras possibilidades de manobra do Cavalo branco em comparao com a mobilidade restrita do Cavalo negro.

Figura 4.16 Cavalo activo vs Cavalo passivo.

4.3.5.4.

Avaliao Esttica do Bispo

Cada Bispo, presente no tabuleiro, tem um valor de 320 pontos. O Bispo no jogo de xadrez vale o mesmo que um Cavalo (3 pontos), no entanto a prtica mostra que o Bispo ligeiramente superior ao Cavalo, da a nossa escolha em atribuir 320 pontos ao Bispo e 300 ao Cavalo.

37

Dependendo da sua posio e da sua relao com as posies das restantes peas, vrias avaliaes so efectuadas: ? +20 pontos se os dois Bispos estiverem presentes (o jogador que disponha do par de Bispos pode numa situao ideal controlar grande parte das operaes. A experincia mostra que um jogador que disponha do par de Bispos, coloca em respeito o seu adversrio). ? ? -3 pontos por cada Peo de qualquer cor que se encontre na diagonal imediatamente adjacente (o Bispo perde todo o seu poder de aco quando se encontra obstrudo). De acordo com a nmero de casas livres que o Bispo tem sua volta atribui-se uma determinada pontuao, conforme est atribuda na Tabela 4.12.

Mobi lidade do Bispo 0 1 2 3 4 5 6

Pontuao Atribuda -4 -3 -2 -1 0 1 2

Mobilidade do Bispo 7 8 9 10 11 12 13

Pontuao Atribuda 3 4 5 6 6 6 6

Tabela 4.12 Mobilidade do Bispo.

Ilustra-se de seguida a diferena entre um bispo obstrudo e um bispo sem qualquer tipo de bloqueio sua aco.

Figura 4.17 Bispo livre vs Bispo bloqueado

38

A pontuao a atribuir ao Bispo independente da fase de desenvolvimento do jogo, mantendo-se constante ao longo de toda a partida. Na Tabela 4.13 encontra-se a pontuao que o Bispo recebe por ocupar determinada casa.

-1 -3 -1 -1 -1 -1 -3 -1

-5 10 3 10 10 3 10 -5

-3 0 6 10 10 6 0 -3

-5 10 10 3 3 10 10 -5

-5 10 10 3 3 10 10 -5

-3 0 6 10 10 6 0 -3

-5 10 3 10 10 3 10 -5

-1 -3 -1 -1 -1 -1 -3 -1

Tabela 4.13- Pontuao que o Bispo recebe dependendo da casa que ocupa.

4.3.5.5.

Avaliao Esttica da Rainha

A Rainha, a seguir ao Rei, a pea mais valiosa presente no tabuleiro. So considerados os seguintes valores: ? ? +900 pontos por cada Rainha presente no tabuleiro. +9 pontos no caso de existir um Bispo da mesma cor na mesma diagonal da Rainha (a experincia mostra que um Bispo e uma Rainha na mesma diagonal so uma forte ameaa principalmente para o Rei adversrio). ? -9 pontos caso a Rainha se mova antes de pelo menos duas peas menores da mesma cor o terem feito (Bispos ou Cavalos). A Rainha como uma pea muito poderosa, deve-se evitar exp- la prematuramente. ? ? +6 pontos se a Rainha se encontrar na stima linha. +6 pontos se a coluna onde se encontra a Rainha estiver desobstruda de qualquer Peo.

Outros dois factores a ter em conta na avaliao esttica da Rainha so a mobilidade e a sua proximidade ao Rei adversrio. A pontuao a atribuir mobilidade (nmero de casas vazias sua volta) no constante durante todo o jogo. Enquanto houver mais de oito peas em jogo sem contar com os Pees a contabilidade feita segundo as Tabelas 4.14 e 4.15.

39

Mobilidade Mobilidade Pontuao Pontuao da Rainha da Rainha 0 -1 14 1 1 -1 15 2 2 -1 16 2 3 -1 17 2 4 -1 18 2 5 0 19 2 6 0 20 4 7 0 21 4 8 0 22 4 9 0 23 4 10 1 24 4 11 1 25 4 12 1 26 4 13 1 27 4 Tabela 4.14 Mobilidade na fase inicial.

Mobilidade Mobilidade Pontuao Pontuao da Rainha da Rainha 0 -4 14 4 1 -4 15 8 2 -4 16 8 3 -4 17 8 4 -4 18 8 5 0 19 8 6 0 20 16 7 0 21 16 8 0 22 16 9 0 23 16 10 4 24 16 11 4 25 16 12 4 26 16 13 4 27 16 Tabela 4.15 Mobilidade na fase final.

Se o nmero de peas (sem contar com os Pees) for inferior ou igual a oito a pontuao relacionada com a mobilidade a atribuir Rainha quadruplica. Esta alterao tem justificao no facto de a Rainha ser uma pea em que o seu grande poder a sua mobilidade, caracterstica que s pode ser demonstrada quando o nmero de peas presentes no tabuleiro reduzido. A proximidade ao Rei inimigo (nmero de linhas mais nmero de colunas) pontuada da seguinte forma:

Proximidade ao Rei 1 2 3 4 5 6 7

Pontuao Atribuda 35 27 21 15 11 8 6

Proximidade ao Rei 8 9 10 11 12 13 14

Pontuao Atribuda 5 4 3 2 1 0 0

Tabela 4.16 - Proximidade da Rainha ao Rei adversrio.

4.3.5.6.

Avaliao Esttica do Rei

O Rei a pea mais valiosa presente num tabuleiro de xadrez, no entanto o seu valor no se encontra definido. Sabe-se apenas que tem um valor inestimvel (o Rei vale a partida). Como tal houve a necessidade de se escolher um valor para esta pea. Chegou-se a um valor

40

de 3000 pontos, como se poderia ter chegado a outro. A nica condio que tenha um valor muito mais elevado do que qualquer outra pea. So atribudas as seguintes pontuaes: ? ? ? -10000 pontos caso o Rei sofra cheque mate. +30 pontos se o Rei fizer roque. -30 pontos se o primeiro movimento do Rei no for o roque.

A pontuao que o Rei vai receber por ocupar determinada casa no tabuleiro depende da fase em que o jogo se encontre. No inicio do jogo o Rei deve estar o mais resguardado possvel de ataques inimigos por isso deve ser penalizado caso avance no tabuleiro. No final da partida como o nmero de peas reduzido o Rei pode e deve tomar parte no decurso dos acontecimentos. No caso geral vai ser adoptado a pontuao expressa na tabela do lado esquerdo (antes do final do jogo). Caso s existam peas menores (Bispos e Cavalos) em nmero no superior a 6 (sem contar com o nmero de Pees) a pontuao a atribuir ser a expressa no tabuleiro do lado direito (durante o final do jogo).

-35 -30 -25 -20 -15 -10 0 5

-35 -30 -25 -20 -15 -10 0 10

-35 -30 -25 -20 -15 -10 -3 10

-35 -30 -25 -20 -15 -10 -5 0

-35 -30 -25 -20 -15 -10 -5 0

-35 -30 -25 -20 -15 -10 -3 5

-35 -30 -25 -20 -15 -10 0 10

-35 -30 -25 -20 -15 -10 0 5

-10 -5 -3 -1 -1 -3 -5 -10

-5 0 0 0 0 0 0 -5

-3 0 5 5 5 5 0 -3

-1 0 5 10 10 5 0 -1

-1 0 5 10 10 5 0 -1

-3 0 5 5 5 5 0 -3

-5 0 0 0 0 0 0 -5

-10 -5 -3 -1 -1 -3 -5 -10

Tabela 4.17- Pontuao antes do final do jogo.

Tabela 4.18 - Pontuao durante o final do jogo.

Uma vez que a proteco do Rei um dos factores essenciais numa partida de xadrez, h que levar em conta o nmero de peas adversrias que rodeiam o Rei. O Rei ser penalizado se o nmero de peas inimigas for superior ao nmero de peas amigas que se encontram na sua proximidade. Para este caso especifico a Rainha vale trs peas. Outra medida tomada para preservar a segurana do Rei foi penalizar os avanos dos Pees que se encontram frente do Rei aps este ter feito o roque. Na Figura 4.18 abaixo ilustra-se a diferena entre um Rei bem protegido pelos seus Pees e por outro lado um Rei

41

que cedo se viu desprovido da proteco dada pelos seus Pees devido a um avano prematuro destes.

Figura 4.18 - Rei protegido vs Rei desprotegido.

4.3.5.7.

Ameaa e Proteco de Peas

Um dos pontos fundamentais, talvez o mais importante, na anlise de uma determinada posio que surja num tabuleiro de xadrez, a ameaa e proteco das peas. Um clculo mal feito acerca do balano de foras que rodeiam uma pea, conduz na grande maioria dos casos a uma desvantagem decisiva. Para melhor se compreender o que foi escrito observe-se a Figura 4.19 abaixo.

Figura 4.19- Ameaa e proteco de uma pea.

42

Analisando esta posio, repara-se que o Cavalo negro est a ser atacado por trs peas brancas e apenas defendido por duas peas negras. Supondo que so as brancas a jogar, elas podem conseguir uma vantagem decisiva eliminando o Cavalo negro com o seu Bispo ou o seu Cavalo mas nunca com a sua Rainha. Em ambos os casos as brancas ficam com uma pea de vantagem, no entanto no segundo caso a Rainha negra vale mais do que um Bispo mais um Cavalo. Nas figuras abaixo visvel a posio que resulta jogando de uma ou de outra forma.

Figura 4.20 As brancas jogam bem.

Figura 4.21 As brancas jogam mal.

A implementao no cdigo da ameaa e proteco de peas levou em conta esta particularidade. Em primeiro lugar h que determinar para todas as peas presentes no tabuleiro as peas da mesma cor que as estejam a proteger, de igual modo, as peas de cor contrria que as estejam a ameaar. Depois necessrio ordenar crescentemente o valor das peas que ameaam e que protegem. Caso alguma pea esteja a ser ameaada h que calcular a diferena entre o valor das peas que atacam e que defendem que se processa em traos gerais do seguinte modo: 1. Deduzir o valor da pea ameaada. 2. Adicionar o valor da pea que ataca. 3. Deduzir o valor da pea que protege. Como exemplo refira-se que no caso acima e supondo que o Cpu tinha jogado o Cavalo negro no ltimo lance, o algoritmo teria devolvido a seguinte pontuao: (-300 + 300 320 +320 900 = -900 pontos) apenas para a posio do Cavalo. Esta jogada seria bastante penalizada, como tal seria improvvel que o Cpu a fizesse. Caso a posio do tabuleiro tivesse surgido devido a um lance branco a pontuao devolvida seria 450 pontos. Com esta
43

diferena pretende-se destinguir entre um erro que surgiu provocado por uma manobra adversria e um erro deliberado (no provocado). Tanto numa como noutra situao a pontuao do tabuleiro entregue ao adversrio seria a mesma (-450 pontos), os outros 450 no caso mais desfavorvel seriam somados avaliao global do cromossoma. Esta medida uma forma de evitar pontuaes desmesuradas aquando da avaliao esttica do tabuleiro.

4.4. Implementao das regras do xadrez


Quando um jogador tenta fazer um determinado lance, o computador antes de o executar necessita de verificar se um lance possvel ou no. Cada pea vai ter o seu algoritmo prprio de validao.

4.4.1.Implementao do Peo, Enpassant Move e Promoes


Esta pea tem quatro movimentos possveis (uma ou duas casas no sentido ascendente e uma casa para qualquer das suas diagonais no sentido ascendente). Apenas pode deslocar-se diagonalmente se existir alguma pea adversria presente nessa casa. Para poder avanar uma ou duas casas tem de verificar se a casa destino est ocupada por qualquer pea . A possibilidade de avanar duas casas um beneficio apenas se for o primeiro lance do Peo. Quando chega oitava horizontal, o Peo atinge a casa de promoo sendo substitudo pela pea que o jogador desejar (Rainha, Torre, Bispo ou Cavalo). Por ltimo o Peo tem a possibilidade de comer na passagem (enpassant move). Para ser possvel realizar este lance h que reunir trs condies: ? ? ? Um jogador ter um Peo na quinta linha. O outro jogador movimentar um Peo duas casas e este ficar na coluna ao lado do Peo inimigo. Se as duas condies anteriores se reunirem, o enpassant move pode ser realizado se for feito no lance seguinte e apenas no lance seguinte. Como uma regra algo estranha, vamos proceder sua explicao com ajuda das Figuras 4.24-26. Este lance pode acontecer quando um dos lados tem o Peo avanado, neste caso lado branco (Figura 4.22). De seguida as negras avanam duas casas o Peo que se encontra frente da sua Rainha, e colocam- no esquerda do Peo branco (Figura 4.23). Neste instante as brancas podem tomar na passagem o Peo (executam o enpassant move) que se

44

encontra ao seu lado esquerdo (Figura 4.24). A fundamentao desta regra encontra-se no facto de o Peo negro antes de chegar ao seu destino passar por uma casa ameaada. O enpassant move s possvel se for execut ado no lance seguinte.

Figura 4.22 Peo branco avanado.

Figura 4.23 Peo negro avana duas casas.

Figura 4.24 Execuo do enpassant move.

Na codificao do enpassant move, quando se move um Peo duas casas, sinalizam-se automaticamente as peas que se encontram na mesma linha, imediatamente esquerda e direita. Caso essas peas sejam Pees adversrios, podem efectuar o enpassant move quando o jogador a que pertencem tiver a sua vez para jogar. No final de cada jogada efectuada, estas sinalizaes so removidas indicando deste modo que o j gador j no pode efectuar o o enpassant move. Outra regra implementada no Pees a da promoo. Quando um Peo chega ultima linha horizontal, criada uma nova pea (Bispo, Cavalo, Torre ou Dama), escolha do

45

jogador humano. O anterior Peo deixa de fazer parte do jogo e cede a sua posio e identificao (cdigo da pea) nova pea. No caso do jogador mquina, quando um peo chega casa de promoo, criada automaticamente uma Dama A prtica do jogo de xadrez mostra que salvo raras excepes esta a escolha acertada.

4.4.2.Implementao das restantes Peas


A torre desloca-se ao longo das linhas verticais e horizontais o nmero de casas pretendidas ou at encontrar alguma pea. Tem a possibilidade de fazer um movimento de nome roque que envolve a presena do rei. O Cavalo desloca-se em L e a nica pea que pode saltar por cima das outras peas. O Bispo desloca-se ao longo das suas diagonais o nmero de casas pretendidas ou at encontrar alguma pea. A Rainha pode deslocar-se em todas as direces (linhas verticais e horizontais e diagonais) o nmero pretendido de casas ou at encontra alguma pea. O Rei pode deslocar-se em todas as direces, mas apenas uma casa. No se pode deslocar para uma casa que esteja a ser ameaada por uma pea inimiga. Tem alm destes um movimento particular de nome roque. Nas Figuras 4.25 e 4.26 visvel o roque pequeno. O roque grande semelhante sendo feito na direco contrria.

Figura 4.25 Preparao do roque pequeno.

Figura 4.26 Execuo do roque.

Para se poder executar o roque so necessrias algumas condies: ? O Rei no se pode encontrar em cheque.

46

? ? ?

Nenhuma casa que o Rei vai passar para fazer este movimento pode estar ameaada por uma pea adversria. No pode haver peas entre a Torre e o Rei. O Rei e a Torre que vo entrar no roque no podem ter feito nenhum

movimento at ao momento.

4.4.3.Implementao da Deteco dos Cheques e Empates Tcnicos


A implementao da validao de um movimento exigiu a criao de dois tabuleiros. Um deles o tabuleiro real, onde se verifica se o lance no contraria as regras de movimentao da prpria pea. O segundo necessrio para verificar se os lances pretendidos no colocam em cheque o prprio Rei. S depois de verificadas estas duas condies que o lance pode ser executado, actualizando ento o tabuleiro real. A deteco do cheque feita partindo da posio do respectivo Rei. Verifica-se em todas as horizontais, verticais e diagonais, a presena de peas inimigas (com excepo do Cavalo, que detectado nas oito posies L que o circundam o Rei). Quando um jogador acaba de executar o seu lance, passa a vez ao adversrio e a primeira coisa que este faz verificar se pode realizar algum movimento vlido. Se no puder, e o seu Rei se encontrar em cheque, a partida termina com a vitria do oponente, por cheque mate. Caso o jogador no possa fazer nenhum movimento, mas o seu Rei no se encontre em cheque, a partida termina com um empate por Stalemate. Foram tambm tratados todos os empates tcnicos conhecidos. As posies que, pela sua natureza, impedem qualquer jogador de conseguir a vitria, acontecem nos seguintes casos: ? Repetio de movimentos por ambos os jogadores. Quando os dois jogadores repetem cada um os ltimos trs lances considera-se a partida empatada porque nenhum jogador mostra sinais de querer vencer a partida. ? Situaes em que deixa de ser possvel conseguir dar cheque mate, por insuficincia de peas. As situaes abaixo representam esses casos. ? ? ? Rei contra Rei. Rei e Cavalo contra Rei. Rei e Bispo contra Rei.
47

? ? ?

Rei e Bispo contra Rei e Bispo. Rei e Bispo contra Rei e Cavalo. Rei e dois Cavalos contra Rei.

Se houver a presena de Rainhas, Torres ou Pees no h a possibilidade de haver um empate tcnico. Se houver no tabuleiro mais de dois Cavalos ou Bispos tambm no existe essa possibilidade.

A verificao dos empates tcnicos executada sempre que uma pea tomada.

4.5. Outras Implementaes


Depois de implementado o jogo em si, foi necessrio, atribuir- lhe uma interface, de modo a tornar a interaco com o utilizador o mais simples e perceptvel possvel. A escolha recaiu nos componentes Swing, um novo conjunto de componentes que veio complementar a tecnologia AWT ( Abstract Windowing Toolkit). Os componentes Swing so, em principio, independentes da mquina onde correm apresentando o mesmo aspecto grfico, quer correndo num Macintosh, quer correndo num Windows Pc. Quando se desenrola a partida dada a oportunidade ao utilizador de sair do jogo, ou de o gravar. Esta potencialidade do jogo permitiu testar situaes de final de jogo, como sejam promoes e empates tcnicos, com grande economia de tempo. Se o utilizador gravar um jogo so automaticamente criados cinco ficheiros - game.dat, players.dat, wmoves.dat ,bmoves.dat e pieces.dat. No game.dat encontra-se a informao relacionada com o nmero de jogadas j realizadas, as peas que podem executar o enpassant move e a informao sobre a Torre que fez o roque. No players.dat fica registada o nome dos jogadores e a situao dos Reis na altura da gravao. No wmoves.dat e bmoves.dat esto registados todos os lances realizados at ao momento da gravao por parte do jogador branco e negro. No pieces.dat encontra-se gravado toda a informao relacionada com as peas a identificao das peas, a sua posio no tabuleiro caso ainda no tenham sido tomadas e se j foram movimentadas. No inicio do jogo, o utilizador tem a possibilidade de continuar um jogo anteriormente gravado. O lanamento de um load game implica a criao de novos jogadores, de novas peas cujas caractersticas constam dos ficheiros gravados.

48

5.

Explicao Resumida do Jogo


Quando lanada a Interface Grfica no incio do jogo, o utilizador pode escolher

entre iniciar um novo jogo, continuar um jogo anteriormente gravado, ou aceder a informaes relacionadas com os jogadores. Se o utilizador escolher comear um novo jogo, tem diversas possibilidades ao seu alcance: jogar contra o computador, jogar contra outro jogador humano ou presenciar o jogo entre dois computadores. No inicio de cada jogo criado um tabuleiro (objecto Board) e, no caso de jogadores humanos, perguntado ao utilizador se um jogador novo ou no, de modo a poder ser actualizado o seu registo, ou criado um novo. Este registo um ficheiro que contm o nome do jogador, o seu nmero de vitrias, de empates e de derrotas. De seguida pedido ao jogador que escolha a cor com que deseja jogar. So ento criados dois objectos (dois jogadores que podem ser dois jogadores humanos, dois Cpus, ou um jogador humano e um jogador Cpu). No caso especifico de um jogador Cpu, criado um AG (Genetic Algorithm) que ser responsvel pelo lanamento de todo o processo do algoritmo gentico. Este objecto cria outros trs GAGame, e dois jogadores virtuais GAPlayers. entretanto pedido ao utilizador que escolha os nveis do algoritmo gentico. Depois de inseridos os dados so criadas duas populaes, branca e negra. A partir destas duas populaes, criada a populao MixPopulation. De seguida pedido ao utilizador que escolha os nveis dos operadores genticos, cruzamento e mutao, que so depois criados, conjuntamente com o objecto FitnessAlgorithm responsvel pela avaliao e seleco dos cromossomas. Quando se cria um jogador, so criadas automaticamente as 16 peas com que vai iniciar a partida (8 Pees, 2 Torres, 2 Cavalos, 2 Bispos, 1 Rainha e 1 Rei). As peas, quando so criadas, so automaticamente colocadas no tabuleiro. De seguida lanado o jogo, no qual aparece, pela primeira vez, o tabuleiro com as peas e o nome dos jogadores que jogam entre si. Quando cabe ao Cpu a vez de jogar, este pede ao seu AG que decida o lance a efectuar. O jogador branco e negro efectuam o seus lances at o jogo ser dado por terminado. Durante o jogo permitido ao jogador humano gravar o jogo ou desistir da partida.

49

6.

Resultados
Foram realizados inmeros testes que tiveram como objectivo analisar principalmente

trs situaes: ? ? ? Populaes vs Evolues. Com Profundidade vs Sem Profundidade. Mutao Uniforme vs Inverso.

Na primeira situao foram testados algoritmos com populaes mais elevadas contra algoritmos com nveis de evoluo maiores. Os resultados foram equilibrados, embora tenha existido uma pequena superioridade nos algoritmos que privilegiaram a evoluo. Os algoritmos das populaes comeam sempre melhor os jogos. No entanto, com o avanar da partida, os algoritmos de evoluo acabam por conseguir pender o jogo para o seu lado. A profundidade acabou por ter efeitos diferentes nos dois algoritmos de fitness testados. No algoritmo onde so levados em conta apenas o melhor lance e a melhor resposta, a profundidade tornava o algoritmo mais solto e mais ambicioso, descurando porm a proteco s peas que avanavam. Sem profundidade o jogo era mais homogneo e no se arriscava tanto. No outro algoritmo de fitness, no se notaram estas diferenas. Em termos de resultados, no se conseguiu destacar ne nhum algoritmo. Em relao mutao uniforme vs inverso, os resultados foram tambm equilibrados, mas com uma ligeira superioridade do algoritmo de inverso. Confirmaram-se os resultados positivos que este algoritmo tem tido nas aplicaes de AGs em outras reas, embora no com resultados no to significativos.

50

7.

Concluses
O jogo consegue mostrar durante vrios momentos um nvel bastante aceitvel. No

inicio consegue mesmo surpreender devido coerncia e exactido dos lances efectuados. Verifica-se no entanto que o nvel vai diminuindo gradualmente medida que se desenrola a partida. De um modo emprico e sem recorrer a nenhum estudo podemos dizer que no inicio o jogo apresenta um nvel de um jogador experiente e medida que o jogo vai decorrendo esse nvel passa a ser de um jogador novato. A fora que o jogo demonstra deve-se nica e exclusivamente a raciocnio feito pela prpria mquina no recorrendo a qualquer outra informao, como sejam bibliotecas de aberturas ou a bases de dados de lances anteriormente estudados. A escolha da linguagem Java para realizar o projecto tambm no beneficia a rapidez com que o algoritmo devolve os lances sabendo-se partida que uma linguagem interpretvel e como tal mais lenta do que uma linguagem compilada como seja o C. Tendo isto como ponto assente consideramos os resultados obtidos excepcionais. Ter populaes com muitos cromossomas, embora a qualidade de jogo tenha um ligeiro acrscimo, no significativo comparado com o tempo excessivo que despendido a calcular o melhor lance. Ter cromossomas com mais genes, o que implica uma profundidade maior no mostrou melhorias dignas de registo. Pelos testes que foram feitos no foi possvel retirar qualquer concluso acerca de qual dos dois tipos de mutao utilizados o mais eficaz.

7.1. Crticas
Depois do trabalho realizado, analisado e discutido, importante fazer alguns comentrios: A fase de desenvolvimento e implementao do jogo de xadrez com todas as suas regras e caractersticas muito prprias exigiu bastante tempo. Houve a recompensa de o jogo estar completamente operacional e respeitar na integra todas as particularidades do xadrez. O tempo que foi despendido a codificar as regras do jogo no permitiu investigar e implementar um algoritmo de avaliao to sofisticado e completo como provavelmente seria exigvel.

51

A avaliao do tabuleiro uma caracterstica essencial para um bom desempenho da mquina. de notar que por mais pormenores que sejam inseridos no seu algoritmo, existe sempre a possibilidade de ser melhorado. No nosso caso, embora toda a avaliao tenha sido estudada criteriosamente, nota-se que a parte final do jogo pode ser claramente melhorada, assim como a ameaa e proteco de peas. Neste caso especifico no foram consideradas as ameaas duplas (escondidas) mas apenas as ameaas directas. Como se v na Figura 1, o Cavalo negro encontra-se ameaado por trs pea brancas e protegido por duas negras, no entanto na implementao do algoritmo o cavalo negro apenas v as ameaas directas do Bispo e da Rainha adversria e proteco da Rainha negra.

Figura 7.1 Ameaa e Proteco.

O final do jogo uma fase que est recheada de posies j conhecidas e muito analisadas. Os jogos comerciais recorrendo sua base de dados sabem previamente o valor de determinada posio terica e podem orientar o desenrolar da partida nesse sentido economizando assim bastante tempo de clculo. Nos ltimos testes foi detectado um erro na ameaa e proteco de peas que conduz a um decrscimo aprecivel da qualidade de jogo. At data ainda no foi possvel resolver este problema. No entanto estamos a fazer todos os esforos de modo a resolucion- lo. No esquecer que a atribuio de pontuao feita de forma subjectiva e como tal sujeita a erros. Com este trabalho final de curso pretendeu-se implementar um jogo de xadrez por algoritmos gentico-evolutivos, objectivo este que foi concludo.

52

7.2. Melhorias
Quando o jogo entra numa fase mais avanada nota-se um decrscimo da qualidade das respostas dadas pelo algoritmo. Compreende-se facilmente que os lances possveis de anlise vo crescendo medida que o jogo avana e como tal torna-se mais complicado descobrir o correcto. Uma das hipteses seria ter uma populao de cromossomas dinmica que cresceria consoante a fase em que o jogo se encontre. Deste modo garantia-se uma busca mais intensiva, medida que o jogo progride. Outra possibilidade seria avaliar a qualidade do cromossoma misturado no pelo melhor gene que o compe, mas apenas pela qualidade do ltimo gene. (Um jogador de xadrez quando pensa numa jogada, o importante saber o resultado final dessa anlise e no os resultados intermdios). Com este trabalho experimentou-se utilizar os algoritmos genticos numa rea que tem sido dominada pelas solues que privilegiam a procura exaustiva do melhor lance. Os algoritmos genticos tm-se mostrado mais indicados para resolver problemas em que existam vrias solues possveis. Um problema i teressante seria adaptar o nvel do n jogador ao do seu adversrio em vez de procurar o lance que introduz mais dano posio da cor contrria. Esta implementao est mais de acordo com as potencialidades dos algoritmos genticos.

53

Referncias

[Laseeb] Evolutionary Systems and Biomedical Engineering Lab Algoritmos Genticos Anlise e Sntese de Algoritmos , http://laseeb.ist.utl.pt.

[PiMo98] Pinto I., Monteiro V., Introduo aos Algoritmos Genticos , Instituto Superior Tcnico, Lisboa, Portugal, Maio 1998.

Bibliografia

Moreton, C., The Rival Chess Engine, last updated 14th 1999, http://www.chrismo.com/.

Regimbald, Adrien, Faile Version 0.6, March 1999, http://www.ualberta.ca/~adrien.

Horstmann, Cornell, Core Java 2 Fundamentos, 2000, http://www.makron.br

Jacquie Barker, Beginning Java Objects, 2000, http://www.wrox.com

54

Potrebbero piacerti anche