Escolar Documentos
Profissional Documentos
Cultura Documentos
DESENVOLVIMENTO DE JOGOS
RESUMO
Um algoritmo genético pode ser definido como uma técnica utilizada para encontrar soluções
aproximadas em problemas de otimização e busca, pertencente à classe de algoritmos evolutivos.
Um algoritmo genético envolve conceitos típicos da lei da evolução em biologia, como
hereditariedade, mutação, seleção natural e recombinação. Algoritmos Genéticos têm sido
bastante utilizados em jogos de tabuleiros como “Damas” e “Xadrez”. Seguindo este conceito foi
desenvolvido um jogo de tabuleiro, onde o agente inteligente é um AG, gerando populações e
utilizando operadores genéticos, como mutação e grau de adaptação. Os resultados obtidos foram
satisfatórios, mostrando que os AG’s satisfazem as necessidades de um agente inteligente da
melhor maneira possível, com isso podemos concluir que os AG’s são ótimos em problemas que
não conhecemos de antemão a jogada de um adversário.
ABSTRACT
A genetic algorithm can be defined as a technique used to find approximate solutions in problems
of optimization and search, belonging to the class of evolutionary algorithms. A genetic
algorithm involves concepts typical of the law of evolution in biology, such as heredity, mutation,
natural selection and recombination. The Genetic Algorithms has been widely used in board
games like "Ladies" and "Chess". Following this concept was developed a board game, where
the intelligent agent is an AG, generating populations and using genetic operators such as
mutation and degree of adaptation. The results were satisfactory, showing that the AG's meet the
needs of an intelligent agent the best possible way and we can conclude that the AG's are in great
trouble we do not know in advance the move of an opponent.
1. INTRODUÇÃO
Um algoritmo genético pode ser definido como uma técnica utilizada para encontrar
soluções aproximadas em problemas de otimização e busca, pertencentes à classe de algoritmos
evolutivos (Goldberg, 1989). Um algoritmo genético envolve conceitos típicos da lei da evolução
em biologia, como hereditariedade, mutação, seleção natural e recombinação. De forma mais
simplificada, pode-se afirmar que algoritmos genéticos são utilizados para buscar uma solução
ótima para um dado problema.
Em computação, algoritmos genéticos são implementados simulando-se uma
população de soluções que, ao decorrer de seu desenvolvimento, passa por melhorias, evoluindo
a cada ciclo (Norving & Russel, 1995). A partir daí são criadas uma nova seqüência de soluções
para dar início à fase de evolução; a cada geração há uma adaptação da população, havendo
mutações e recombinações em alguns individuos dessa geração, criando-se, assim, uma nova
população. Quando se cria uma nova população esta é usadas para uma próxima interação do
algoritmo.
Um algortimo genético segue quatro etapas básicas:
1. Uma função, um objetivo, que é o objeto para a otimização. A grande vantagem de
algoritmos evolutivos, é que não é necessário saber para que serve esta função, apenas
é preciso tê-la disponível para ser aplicada nos indivíduos, podendo assim, comparar
os melhores resultados.
2. A evolução, próximo passo do algoritmo, geralmente usa, nessa parte, a seleção por
roleta, onde os indivíduos são ordenados de acordo com sua função e objetivo e são
atribuídos a eles probabilidades decrescentes de serem escolhidos. A escolha é feita de
forma aleatória, de acordo com essas probabilidades. Dessa forma conseguimos
escolher como pais os mais bem adaptados, sem deixar de lado a diversidade dos
menos adaptados. Pode-se tambem utilizar outras formas de seleção, apesar dessa ser
a mais apta.
3. A reprodução é divida em três subcategorias: acasalamento, recombinação e
mutação. Há a escolha de dois induvíduos para se reproduzirem (acasalamento),
partindo do conceito de recombinação, um processo que imita a reprodução sexuada.
Os decendentes recebem parte do código genético dos pais, garantindo assim que os
melhores indivíduos possam trocar, entre si, informações que os levam a ser mais
aptos à sobreviver, gerando assim, indivíduos sem defeitos em seus códigos genéticos.
4. Por último, vêm as mutações, que são feitas com probabilidade a mais baixa
possível, e tem como objetivo permitir maior variabilidade genética na população,
impedindo que a busca fique estagnada em um mínimo local.
As partes mais importantes de um algoritmo genético são o cruzamento e a mutação,
pois todo o desempenho de um algoritmo genético depende desses operadores.
Algoritmos genéticos têm sido usados no desenvolvimento de diversos jogos. Através
deles, o jogador pode, por exemplo, traçar caminhos por onde um objeto do jogo deve
“caminhar”. Este caminho pode ser determinado por um algoritmo genético.
Dentre alguns exemplos de jogos que utilizam algoritmos genéticos, pode-se citar:
− o jogo mastermind, em que um jogador tem que adivinhar uma seqüência de cores
definida pelo adversário;
− o puzzle pentominos, onde o problema pode ser resolvido em cerca de 50.000
avaliações feitas em poucos minutos;
− em jogos de xadrez, o problema n-queens é freqüentemente utilizado para testar o
desempenho de algoritmo genético, especialmente devido ao fato da sua
complexidade ser regulada pelo número de rainhas que se utilizam.
Devido à sua flexibilidade os algoritmos genéticos têm sido utilizados em diversas
áreas de atividade com maior ou menor sucesso dependendo da facilidade de adaptação dos
problemas a este tipo de algoritmo. Sua escolha para aplicação em jogos educativos se justifica
pelo fato de jogos educativos computadorizados possuírem, como uma de suas principais
vantagens, um grande potencial para o processo de ensino e aprendizagem, por despertarem
naturalmente o interesse dos alunos.
1.1. Objetivos
O objetivo geral dessa proposta de pesquisa é o estudo de algoritmos genéticos que
possam ser utilizados no desenvolvimento de jogos educativos ou de tabuleiro e o
desenvolvimento de um jogo simples usando um dos algoritmos pesquisados.
Os objetivos específicos são:
− Pesquisar e definir os conceitos que envolvem algoritmos genéticos;
− Pesquisar e definir etapas que envolvem o desenvolvimento de um jogo educativo;
− Pesquisar os algoritmos genéticos que podem ser utilizados no desenvolvimento
de jogos educativos;
− Desenvolver um jogo educativo, exemplificando toda a sua funcionalidade.
2. FUNDAMENTAÇÃO TEÓRICA
Basicamente um algoritmo genético é composto por uma “população” uma “função FITNESS (
adequação)”, a operação de escolhas das melhores soluções “seleção”, após a seleção as melhores
soluções estarão sujeitas a “reprodução” e se for necessário sujeita também a “mutações”.
Uma função FITNESS, é o objeto de otimização, um problema a ser resolvido, ao ser passado um
estado para ela, que retorna valores probabilísticos altos para as melhores saídas e baixos para as
menos favoráveis, e assim poder ocorrer a seleção, reprodução e raramente a mutação.
A população é composta por indivíduos, os indivíduos de uma população são portadores do
código genético, logo o código genético é a representação do espaço de busca do problema a ser resolvido.
O código genético precisa ser de tamanho finito, mas necessariamente possível representar todo o espaço
de busca.
Outra parte muito importante do algoritmo é a seleção, geralmente para a seleção dos
indivíduos usa –se algoritmo de seleção por roleta, onde os indivíduos são ordenados de acordo
com a função FITNESS. Dessa forma a escolha consegue escolher os pais mais adaptados, mas
sem deixar de lado a diversidade dos menos aptos.
Após a seleção dos indivíduos, ocorre a reprodução, ela pode ser dividida em três etapas,
o acasalamento, a recombinação e a mutação. No acasalamento ocorre a escolha de dois
indivíduos, como pai e mãe. A recombinação, processo de reprodução sexuada, faz com que o
descendente gerado, receba em seu genótipo parte do código genético do pai e da mãe, isso faz
que os indivíduos mais bem adaptados possam trocar entre si suas características, gerando
indivíduos mais bem adaptados, logo, a cada interação, há sempre uma melhor solução para o
problema estudado. A mutação quando acontece, é feita nas probabilidades mais baixas, ou seja,
em cima dos indivíduos menos aptos, garantido assim a variabilidade da espécie.
A principal vantagem dos Algoritmos Genéticos, se existir, vem da operação de
crossover, que pode ser demonstrado matematicamente que, se as posições do código genético
forem permutadas no começo em ordem aleatória, o crossover não trará nenhuma vantagem.
Logo, a vantagem vem da habilidade do crossover para combinar grandes blocos de genes que
evoluem de forma independente para executar funções úteis, elevando assim o nível de
afunilamento em que a busca opera. Para conseguir alcançar vantagens significativas ao se
utilizar algoritmos genéticos, é necessária uma cuidadosa engenharia na representação.
Os AG’s tiveram um grande impacto sobre problemas de otimização e busca, mas no
momento não esta claro se a atração em utiliza – los esta em seu desempenho ou em suas origens,
esteticamente agradáveis aos conceitos naturais. É necessário, ainda, muito estudo para
identificar sob quais circunstancias eles alcançam os melhores resultados. (Russel, Norving,
2004).
3. RESULTADOS
3.1 Roteiro
Como foi colocado na metodologia, o objetivo deste projeto é elaborar um jogo educativo
utilizando Algoritmos Genéticos, mais especificamente desenvolver um jogo de tabuleiro
(damas) aproveitando as vantagens trazidas pelos AG’s.
Vários jogos utilizam Algoritmos Genéticos em sua arquitetura, pela sua facilidade e
economia de tempo em problemas de buscas e otimização, são utilizados em jogos que
necessitam buscar soluções ótimas para determinados problemas, tais como os jogos de
tabuleiros, jogos como o de Xadrez tem sido desenvolvidos com utilizando métodos AG’s.
Por se tratar de algo similar ao Xadrez, o jogo de Damas também pode ser desenvolvido
utilizando as técnicas dos AG’s, logo, iremos aplicar as técnicas AG’s, para desenvolver o jogo
de damas. A funcionalidade do jogo de damas é descrita a seguir.
O jogo de damas pratica-se entre dois parceiros, num tabuleiro quadrado, de 64 casas
alternadamente claras e escuras, dispondo de 12 pedras brancas e 12 pretas. O objetivo é capturar
ou imobilizar as peças do adversário. O parceiro que o conseguir mais, ganha a partida.
O tabuleiro deve ser colocado de modo que a casa angular à esquerda de cada parceiro seja
escura.
No início da partida, as pedras devem ser colocadas no tabuleiro sobre as casas escuras, da
seguinte forma: nas três primeiras filas horizontais, as pedras brancas; e, nas três últimas, as
pedras pretas.
A pedra movimenta-se em diagonal, sobre as casas escuras, para frente, e uma casa de
cada vez. A pedra que atingir a oitava casa adversária, parando ali, será promovida a "dama",
peça de movimento mais amplos que a simples pedra. Assinala-se a dama sobrepondo, à pedra
promovida, outra da mesma cor.
A dama pode mover-se de determinada casa para qualquer outra, não obstruída, situada na
mesma diagonal. Quando na casa contígua a uma pedra houver uma peça adversária, com uma
casa imediata vaga, na mesma diagonal, a pedra tomá-la-á passando para a citada casa vaga.
Assim, a pedra toma para frente e para trás, sendo este o único movimento retrógrado da pedra.
Se após a tomada de uma peça, a circunstância se repetir, a pedra continuará a tomada no mesmo
lance, chamando-se a este movimento, tomada em cadeia, ou tomada em serie.
Se, nas diagonais da casa de partida da dama, houver uma peça adversária cuja casa
imediata esteja vaga, a dama toma – a passando para qualquer casa vaga após a peça tomada. A
dama também toma em cadeia ou serie.
A tomada é obrigatória. A pedra e a dama têm o mesmo valor para tomar ou ser tomada.
Se, no mesmo lance, se apresentar mais de um modo de tomar, é obrigatório executar o lance que
tome o maior número de peças (lei da maioria).
A peça que toma poderá passar mais que uma vez pela mesma casa vazia, porém não
poderá tomar qualquer peça mais de uma vez. Não será promovida a pedra que, numa tomada em
cadeia, apenas passe pela oitava casa adversária. As peças tomadas só deverão ser retiradas do
tabuleiro depois de completo o lance.
A partida termina empatada quando:
• Os dois parceiros concordarem com o empate;
• A partir de qualquer ponto da partida, ocorrer 20 (vinte) lances sucessivos de Damas, sem
tomada ou deslocamento de pedra;
• Uma mesma posição se produzir pela terceira vez, cabendo ao mesmo jogador o lance,
deverá o interessado reclamar o empate, antes que a posição se modifique (esta regra só vale se a
partida estiver sendo anotada em uma planilha);
• Na luta de três damas contra uma, o lado maior não conseguir obter vitória em vinte
lances.
O jogo de damas, difundido que foi por todo o mundo, acabou por receber alterações,
dependendo da região em que é jogado. O jogo de damas elaborado neste projeto será montado
em cima das regras gerais do jogo, desprezando suas variações regionais.
1 Allegro é uma biblioteca de programação de jogos para usuários da linguagem de programação C/C++, com
distribuição livre. Maiores informações podem ser obtidas no endereço http://alleg.sourceforge.net/.
Figura 1 – Interface gráfica do jogo.
4. DISCUSSÃO
Este trabalho teve por objetivo estudar os Algoritmos Genéticos, seus conceitos e como
são utilizados em diversas áreas da computação. Um algoritmo genético que pode ser definido
como uma técnica utilizada para encontrar soluções aproximadas em problemas de otimização e
busca, pertencentes à classe de algoritmos. Um algoritmo genético envolve conceitos típicos da
lei da evolução em biologia, como hereditariedade, mutação, seleção natural. De forma mais
simplificada, pode-se afirmar que algoritmos genéticos são utilizados para buscar uma solução
ótima para um dado problema
Para demonstrar e dar exemplo de seu funcionamento foi proposto e desenvolvido um
jogo de tabuleiro (Damas). Usando os conceitos dos AG’s para desenvolver o agente inteligente
do game, a biblioteca gráfica Allegro na linguagem C++. Os resultados obtidos foram
satisfatórios, mostrando que os AG’s satisfazem as necessidades de um agente inteligente da
melhor maneira possível, com isso podemos concluir que os AG’s são ótimos em problemas em
que não conhecemos de antemão a jogada de um adversário.
5. AGRADECIMENTOS
Os autores agradecem à instituição UEMS pelo apoio financeiro concedido, sendo
possível assim realizar este trabalho de pesquisa sobre Algoritmos Genéticos, e também por todos
os acadêmicos, coordenadores, professores e técnicos que, diretamente ou indiretamente,
contribuíram para a realização desse trabalho.
6. REFERÊNCIAS