Você está na página 1de 8

Faculdades Adamantinenses Integradas (FAI) www.fai.com.br OLIVEIRA, Eliane Vendramini.Uma soluo do problema das N rainhas atravs de algoritmos genticos.

Omnia Exatas, v.2, n.1, p 2633, 2009.

UMA SOLUO DO PROBLEMA DAS N RAINHAS ATRAVS DE ALGORITMOS GENTICOS

A SOLUTION OF N-QUEENS PROBLEM BY GENETIC ALGORITHMS

Eliane Vendramini de Oliveira Mestre em Engenharia Eltrica UNESP/ Ilha Solteira Professora da FAI

Resumo
Este artigo analisa o problema das N-Rainhas a ser resolvido por um algoritmo evolutivo, o algoritmo gentico. Este algoritmo resolve o problema atravs de uma funo objetivo que calcula as colises entre as rainhas no tabuleiro e melhora (reduo do nmero de colises entre rainhas) a configurao de modo que o nmero de colises se reduza a zero. Passando por todas as etapas de um algoritmo gentico clssico (seleo, recombinao, mutao) e com algumas modificaes para melhor atender o problema, obtido resultados de boa qualidade. Palavras Chaves: Algoritmo Gentico. Problema N Rainhas. Metaheurstica.

Abstract
This paper analyzes the problem of the N-queens being solved by an evolutionary algorithm, the Genetic Algorithm. This algorithm solves the problem through a function objective that calculates the collisions among the queens in the board and improvement (it reduces the number of collisions among queens) the configuration so that the number that collisions reduce to zero. Going by all of the stages of a classic genetic algorithm (selection, recombination, mutation) and with some modifications for best to assist the problem, it is obtained results of good quality. Key-words: Genetic Algorithms. N-Queens Problem. Metaheuristics

Rev. OMNIA EXATAS, v.2, n.1, 26-33, Janeiro/junho de 2009

27

OLIVEIRA

Uma soluo do problema das N rainhas...

Introduo O problema das N-Rainhas muito conhecido na literatura de pesquisa operacional. O problema consiste em colocar n rainhas em um tabuleiro de xadrez de dimenso nxn de maneira que no haja colises entre as rainhas ou que minimize o nmero de colises, segundo Laguna (1994). A coliso entre rainhas ocorre quando duas ou mais rainhas se encontram na mesma linha, coluna, ou diagonal do tabuleiro. A soluo tima para este problema obviamente ser o nmero de zero colises. A representao deste problema caracteriza-se por ser de fcil codificao. O Algoritmo Gentico por sua vez um algoritmo que imita o processo de seleo natural, por isto o nome Algoritmo Gentico, e que para imitar este processo trabalha com algumas etapas pr-definidas: seleo, recombinao e mutao. Este algoritmo por seu poder de combinao de resultados e otimizao dos mesmos pode ser empregado na soluo do problema das N Rainhas, mas sua formao tradicional pode ser melhorada se adequada ao problema aqui exposto. Assim sendo, o estudo realizado tem como principal objetivo contribuir com uma soluo para o problema das N Rainhas propondo o Algoritmo Gentico modificado como o instrumento de soluo e melhora de resultados, comparando com o Algoritmo Gentico tradicional.

Materiais e mtodos Existem vrias codificaes para representao do problema, utilizaremos a seguinte. No problema das N-Rainhas a codificao de uma configurao utiliza um vetor V de tamanho n, onde um elemento desse vetor, chamado V(i) representa a coluna do tabuleiro que a rainha i est ocupando. A rainha i sempre ocupar a linha i. Para representar a configurao mostrada na figura 1 a codificao ser a seguinte.
1 V= 3 2 4 3 2 4 1 Coluna Posio das Rainhas
1 1 2 2 3 4

Linha(rainha)

R R R R

Rainhas

3 4

Fig. 1: Configurao inicial de 4 rainhas A codificao apresentada interessante por garantir a factibilidade da configurao inicial e por assegurar que no haver colises entre rainhas atravs de linhas e colunas do tabuleiro. Isto pode ser facilmente verificado, pois os elementos do vetor V so diferentes o que significa que sempre uma coluna ocupada por uma nica rainha, tambm no existe coliso atravs das linhas por que as rainhas sempre permanecem numa mesma linha do tabuleiro. Sabendo que no haver colises entre rainhas atravs das linhas e colunas do tabuleiro, resta agora calcular o nmero de colises atravs da diagonal. 28
Rev. OMNIA EXATAS, v.2, n.1, 26-33, Janeiro/junho de 2009

OLIVEIRA

Uma soluo do problema das N rainhas...

Uma maneira tambm muito simples de codificar o nmero de colises entre as rainhas atravs da diagonal encarar o tabuleiro como uma matriz nxn. estabelecido o conceito de diagonal positiva e negativa no arranjo matricial. Para encontrar o nmero de colises na diagonal de uma configurao suficiente percorrer as diagonais positivas e negativas de uma matriz e fazer a contagem do nmero de colises. Associa-se a cada diagonal um nmero que ser uma constante para cada diagonal, nmero este que ser calculado diferentemente para diagonais positivas e negativas. Para a diagonal negativa soma-se o ndice da linha com o ndice da coluna de cada elemento da matriz e obtm-se a constante desta diagonal, j para a diagonal positiva subtrai-se o ndice da linha com o ndice da coluna de cada elemento da matriz e obtm-se a constante desta outra diagonal. Percorrendo as diagonais, se mais de uma rainha estiver com o mesmo nmero associado clula onde ela se encontra na matriz existe coliso, do contrrio no. Estas caractersticas so mostradas nas figuras 2 e 3 a seguir.
1 1 2 3 4 2 3 4 1 1 2 3 4 2 3 4

0 1 2 3

-1 0 1 2

-2 -1 0 1

-3 -2 -1 0

2 3 4 5

3 4 5 6

4 5 6 7

5 6 7 8

Fig. 2: Constante das Diagonais Positivas

Fig. 3: Constante das Diagonais Negativas

Pode-se verificar facilmente que existem 2 colises percorrendo as diagonais positivas e negativas. Na verdade existe uma coliso na diagonal positiva -2 e uma coliso na diagonal negativa 5. Finalizando assim o processo de codificao e representao do problema das N-Rainhas. Algoritmo Gentico Nesta seo verifica-se o funcionamento das principais etapas do algoritmo gentico sendo aplicado ao problema das N-Rainhas, abordado neste estudo. Alm das etapas tradicionais, sero relatados os tpicos relacionados com a melhoria dos descendentes e a forma como estes so aproveitados nas prximas geraes. Tipo de Algoritmo Gentico O algoritmo gentico aplicado neste trabalho baseado no Algoritmo Gentico de ChuBeasley, onde o controle da diversidade mais acentuado do que o tradicional, segundo Alencar (2004) e utilizando alm das etapas tradicionais uma melhora local. Codificao do Problema A codificao foi feita segundo a representao vista anteriormente. Por se tratar de um algoritmo gentico, trabalha-se com vrios indivduos (configuraes) formando uma populao. Esta populao de tamanho m ser representada por uma matriz onde cada linha da matriz representa uma configurao de n rainhas em um tabuleiro. A populao escolhe aleatoriamente um valor para cada elemento de uma linha da matriz, de maneira que eles no se repitam. Veja a ilustrao da representao deste problema na figura 4 a seguir.

Rev. OMNIA EXATAS, v.2, n.1, 26-33, Janeiro/junho de 2009

29

OLIVEIRA

Nmero de Rainhas
1 2 3 4 5 6 7 8 9 10 11

Uma soluo do problema das N rainhas...

...

Nmero de Indivduos

1 2

2 4 1 4

9 2 7 2

8 7 8 8

11 19 ... 13 18 ... 11 19 ... 11 5 ...

... ... ... ...

... ... ... ...

10 6 10 14

20 11 15 3 4 2

12 5 9 7 6 6

... 3 5 m 20 1

16 3

Fig 4: Proposta de codificao do problema das N-Rainhas sendo resolvido por Algoritmo Gentico Funo Objetivo A funo objetivo calculada segundo a proposta vista anteriormente de verificar o nmero de colises entre rainhas percorrendo as diagonais positiva e negativa do tabuleiro. agregado a cada diagonal uma constante que a identifica, e se existir mais de uma rainha em uma diagonal contabilizado mais uma coliso. A soma do nmero de colises existentes nas diagonais positiva e negativa geram o calculo da funo objetivo. Seleo O mtodo de seleo escolhido para ser aplicado no problema foi o mtodo de seleo por torneio com k=2, ou seja, escolhido para participar de cada jogo dois indivduos (configuraes) da populao corrente que so analisados, o calculo da funo objetivo feito e o indivduo que detm o menor nmero de colises escolhido. Recombinao Optou-se em trabalhar com a recombinao PMX que recombina os dois indivduos sem perder o que j havamos conquistado (configurao sem colises entre rainhas na mesma linha e coluna). Este tipo de recombinao trabalha com dois indivduos escolhidos aleatoriamente. escolhido tambm aleatoriamente o tamanho da faixa que ser recombinada e onde a recombinao ir comear. Neste artigo os dois indivduos geram somente um descendente, onde escolhido aleatoriamente em qual dos dois indivduos a recombinao ser executada para a gerao de um descendente. A seguir, na figura 5 exemplificado como a recombinao realizada.
Tamanho da Faixa de Recombinao

10

11

12

13

5 13

8 5

11 1

6 10

7 6

9 2

10 3

12 4

1 7

3 11

2 12

4 8

13 9

Ponto de Recombinao Descendente aps a recombinao PMX 13 5 1 6 7 9 10 4 2 11 12 8 3

30

Rev. OMNIA EXATAS, v.2, n.1, 26-33, Janeiro/junho de 2009

OLIVEIRA

Uma soluo do problema das N rainhas...

Fig. 5: Exemplo de Recombinao Mutao A mutao se d de uma maneira muito simples. Sero escolhidas aleatoriamente duas rainhas em cada indivduo da populao corrente para se fazer troca de posio destas rainhas no tabuleiro. As figuras 6 e 7 mostram como o processo de mutao ocorre.
Pontos de Mutao
1 2 3 4 5 6 7 8 9 10 11 ... n

11 19 ...

...

... 10

Fig 6: Populao antes da Mutao


Pontos de Mutao
1 2 3 4 5 6 7 8 9 10 11 ... n

11 19 ...

...

... 10

Fig 7: Populao depois da Mutao Melhorando os descendentes Procurando melhorar o descendente antes de verificar se ele ser aproveitado na prxima gerao, este descendente passa por uma etapa de melhora local. Verifica-se quais das diagonais, positivas ou negativas, deste indivduo (configurao) est mais carregada, ou seja, com mais colises. Logo aps simulada cada troca de posio no tabuleiro das rainhas, e a suposta troca que gerar um nmero menor de colises efetivada mudando as posies das rainhas no tabuleiro. Substituio da Populao Somente ser aproveitado o indivduo gerado na etapa de seleo, mutao e melhora local se este detm um nmero menor de colises do que o indivduo que detm o maior nmero de colises da populao corrente. Alm disso, verificado se esta configurao j existe na populao corrente, se existir o mesmo indivduo (configurao) na populao, o indivduo descendente ser descartado, caso contrrio ele ser aproveitado na populao corrente e entrar no lugar do indivduo que tinha o nmero maior de colises. Algoritmo O algoritmo assume a seguinte forma: 1. Gera-se a populao inicial aleatoriamente. 2. Transforma-se a populao inicial na populao corrente. 3. Calcula-se o valor da funo objetivo. 4. Implementa-se o processo de seleo de dois indivduos aleatoriamente; 5. Escolhe-se aleatoriamente o tamanho da faixa de recombinao e a posio de inicio. 6. Escolhe-se aleatoriamente qual indivduo sofrer a recombinao PMX. 7. Implementa-se o processo de recombinao PMX. 8. Implementa-se mutao escolhendo dois pontos de mutao aleatoriamente. 9. Verifica-se a possibilidade de melhorar o indivduo gerado na etapa anterior. Neste caso o descendente passa por uma srie de comparaes. Primeiro localiza-se a diagonal mais carregada (nmero maior de rainhas).
Rev. OMNIA EXATAS, v.2, n.1, 26-33, Janeiro/junho de 2009

31

OLIVEIRA

Uma soluo do problema das N rainhas...

Troca-se de posio as rainhas dessa diagonal e verifica-se qual troca teve o menor nmero de colises, a troca de resultado melhor consumada. 9. Verifica-se o valor da funo objetivo do indivduo descendente, se este nmero for menor do que o maior da populao corrente o indivduo pode ser aproveitado caso contrrio volta-se para o passo 3. 10. Se o indivduo descendente melhor do que o pior encontrado na populao corrente, ele passa por uma nova comparao. Este novo indivduo (configurao) deve ser diferente de todos os outros da populao, se j existir na populao corrente a mesma configurao, esta ser descartada e volta-se para o passo 3, caso contrrio ela ser aproveitada, fazendo parte da nova gerao. 11. Atualiza-se a populao corrente gerando a prxima gerao e volta ao passo 2. 12. O algoritmo para em um nmero pr-determinado de iteraes. Resultados e Discusso O algoritmo gentico pode ser melhorado no seguinte aspecto. Prope-se que ao invs de detectar qual a diagonal mais carregada na configurao descendente e melhor-la, deve-se detectar a rainha desta configurao que sofre o maior nmero de ataques, e troc-la de posio no tabuleiro com todas as rainhas que se confrontam com ela. A troca que resultar em um nmero menor de colises consumada. Os resultados obtidos com a proposta de melhoria, so considerveis. O critrio de parada teve duas opes a seguir, ou parar quando encontrar zero colises na populao corrente ou estipular um nmero de iteraes para o algoritmo parar. Depois de muitos testes optou-se por pr determinar um nmero de iteraes como critrio de parada. O tamanho da faixa de recombinao foi outro ponto importante para o sucesso do algoritmo. Estipulo-se que em uma populao de 1000 indivduos com 1000 rainhas o tamanho da faixa de recombinao ficasse entre 30 e 80 rainhas. Ao implementar o problema das N-Rainhas usando algoritmos genticos os resultados foram os seguintes: Com 1000 Rainhas e uma populao de 1000 indivduos Sem Melhoria do descendente: 150.000 iteraes para achar a soluo tima. Com melhoria pela diagonal mais carregada: 150.000 iteraes para achar a soluo tima, ou seja, no houve melhora. Com melhoria pela rainha mais atacada: 1 iterao para achar a soluo tima. O primeiro indivduo a retornar zero colises no teste com 1000 rainhas e 1000 indivduos foi o de nmero 930. Concluses O algoritmo melhorado neste artigo encontrou resultados de melhor qualidade que o algoritmo gentico tradicional, principalmente quando a melhoria vem da troca da rainha com maior nmero de ataques. Referncias bibliogrficas Laguna, M. A Guide to Implementing Tabu Search. Investigacion Operativa, 4:159-178, 1994. Alencar, M. P. L. Anlise Critica do Algoritmo Gentico de Chu-Beasley para o Problema Generalizado de Atribuio. SBPO,36:1391-1399, 2004.

32

Rev. OMNIA EXATAS, v.2, n.1, 26-33, Janeiro/junho de 2009

OLIVEIRA

Uma soluo do problema das N rainhas...

Diaz, A.; Glover, F.; Chaziri, H. M.; Laguna, M.; Moscato, P.; Tseng, F. T. Optimizacin Heurstica y Redes Neuronales. 1 ed. MADRID: Paraninfo, 1996. Sosie, R.; Gu, J. Fast Search Algorithms for the N-Queens Problem. IEEE Transactions on Systems, Man, and Cybernetics, 21:1572-1576, 1991. Chu, P.; Beasley, J. E. A Genetic Algorithm for the Generalized Assignment Problem, Computers and Operation Research, 24:17-23, 1997.

Rev. OMNIA EXATAS, v.2, n.1, 26-33, Janeiro/junho de 2009

33