Você está na página 1de 18

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE

DEPARTAMENTO DE ENGENHARIA DE COMPUTAO E AUTOMAO


CURSO DE ENGENHARIA DE COMPUTAO
INTELIGNCIA ARTIFICIAL

N-Rainhas com Algoritmo Gentico


e Simulated Annealing
Alunos:
Alexandre Luz
Jaime Dantas
Ramon Fava

Professor:
Allan Robson Silva Venceslau

Natal, 17 de abril de 2016

Sumrio
Problema das N-Rainhas ............................................................................................. 3
Soluo Implementada ................................................................................................. 4
Simulated Annealing.................................................................................................... 6
Resultados ............................................................................................................................ 9

Algoritmo Gentico ................................................................................................... 12


Resultados .......................................................................................................................... 14

Referncias Bibliogrficas .......................................................................................... 18


Problema das N-Rainhas


O problema das N-Rainhas, j descrito em Eight Queens Puzzle um
problema combinatrio exponencial. Este artigo tem por interesse mensurar o
aumento da complexidade com o aumento das dimenses, descrever uma heurstica
consistente, descrever dedues obtidas em nossas experincias e apresentar 3
algoritmos do tipo Hill Climbing. Hill Climbing equivalente tcnica do Gradient
Descent. As aplicaes desses algoritmos so vrias, citaremos a seguir algumas:
Para

Gradiente

Descendente

temos

ampla

utilizao

na

rea

de

aprendizagem de mquinas. Muitas vezes algumas verses do gradiente descendente


so extremamente promissoras como a verso estocstica.
O Hill Climbing com algumas modificaes se torna uma boa ferramenta,como
muito simples e fcil de implementar alguns experimentos de otimizao utilizam o
Hill Climbing para fazer um comparao com o que est sendo desenvolvido[1].

Soluo Implementada
A programao principal dos algoritmos foi realizada em C++ com a
criacao de duas classes principais: genetico.h e annealing.h. N arquivo main.h
foram chamadas cada classe com seus respectivos construtores como os dados
passados por atribuio direta de entrada (usado a entrada de argumentos na funo
main). A Sequencia de entrada de variveis foi padronizada de forma que fosse
possvel chamar esse programa usando outra linguagem passando somente os
parmetros de entrada e lendo a sada. A sada de nosso programa um vetor com as
posies das rainhas em cada linha e coluna, assim como adotado como padro de
cromossomo. A figura abaixo mostra a estrutura de nosso programa em C++.


Figura 1 - Estrutura do Programa em C++

Foi criado um programa em PHP para fazer o papel de interface entre o


HTML e o C++. No programa HTML foram criados o tabuleiro para mostrar a
soluo que passado para ele pelo PHP. A interface final de nosso programa em
HTML apresentada na figura abaixo.


Figura 2 - Interface Grfica

Na interface grfica possvel selecionar qual algoritmo queremos executar


assim como passar os devidos parmetros. A figura abaixo mostra a soluo de um
exemplo de algoritmo gentico.


Figura 3 - Soluo Algoritmo Gentico

Quando ocorre colises, o respectivo tabuleiro mostrado na cor vermelho,


assim como mostra o exemplo abaixo onde as rainhas linha 0 coluna 3 e 4, linha 1
coluna 2 e 6, linha 4 coluna 5, linha 6 coluna 8 ocorrem colises.


Figura 4 - Exemplo de Colises com Algoritimo gentico

O programa est disponvel online para acesso nos endereos abaixo.


Ressaltamos que a disponibilidade dos links est sujeita a erros no acesso aos
servidores. Em outras palavras, verifique a disponibilidade do link com os
administradores do site.

http://alexandreluz.ddns.net/~alexandre/n-rainhas/
http://jaimedantas.ddns.net/index_3.html

Simulated Annealing
uma tcnica de busca local probabilstica, em que o resultado uma soluo
tima, porm, no necessariamente a melhor.
O algoritmo funciona substituindo a soluo atual por uma soluo prxima
(na sua vizinhana no espao de solues), escolhida de acordo com uma funo
objetivo e com uma varivel T (temperatura). Quanto maior for T, maior a
componente aleatria que ser includa na prxima soluo escolhida. medida que
o algoritmo progride, o valor de T decrementado, comeando o algoritmo a
convergir para uma soluo tima, necessariamente local.
Para resolver o problema das N Rainhas, que consiste em dispor n rainhas em
um xadrez n por n, configuramos um vetor inicial em que cada posio contm o
lugar onde a rainha est disposta na respectiva coluna. por exemplo, em um xadrez
4x4, com um vetor inicial [0,1,2,3], as rainhas esto dispostas na diagonal principal
do tabuleiro.
Comeamos a busca a partir de uma soluo inicial qualquer. Damos valores
para a temperatura inicial, taxa de resfriamento, tamanho n do xadrez. O
procedimento principal consiste em um loop que a cada iterao, gera aleatoriamente
um nico vizinho da soluo corrente.
A funo objetivo consta em avaliar o nmero de colises entre as rainhas
dado uma configurao do tabuleiro. ela retornar um valor negativo, pois estamos
buscando o valor mnimo.
A cada gerao de um novo vizinho, testada a variao do valor da
funo objetivo (diferena de energia), isto , = f (prximo) f (atual), onde
temos as seguintes situaes:

> 0: implica que a nova soluo melhor que a anterior. Assim o vetor
resultado recebe os valores da nova soluo.

= 0: Caso de estabilidade, no h reduo de energia. A soluo


indiferente.

< 0: A aceitao desse tipo de soluo mais provvel a altas


temperaturas e bastante improvvel a temperaturas reduzidas. Para
reproduzir essas caractersticas, geralmente usa-se, para calcular a
probabilidade de se aceitar a nova soluo, uma funo conhecida, que
dada por e^(-/temperatura), chamado de temperatura e que regula a
probabilidade de solues com pior custo.

Gera-se um nmero aleatrio retirado de uma distribuio


uniforme no intervalo [0, 1].

Se este nmero for menor ou igual a p, aceita-se a soluo.

Se for maior que p, rejeita-se a soluo.

A temperatura assume inicialmente um valor elevado. Aps um nmero fixo


de iteraes (o qual representa o nmero de iteraes para o sistema atingir o
equilbrio trmico em uma dada temperatura), a temperatura gradativamente
diminuda por uma razo de resfriamento , tal que T = Tinicial * ^t, sendo 0 <
< 1 e t o nmero de iteraes. Como esse procedimento se d no incio, h uma
chance maior de se escapar de mnimos locais e, medida que T se aproxima de zero,
o algoritmo se comporta como o mtodo de descida, uma vez que diminui a
probabilidade de se aceitar movimentos que possa piorar.
O procedimento finalizado quando a temperatura chega a um valor prximo
de zero ou quando o nmero de colises for zero. Encontrando, assim, um resultado
otimizado.

Resultados
Foram realizadas 100 execues consecutivas com os mesmos parmetros para
que poderemos traar tendncias de padres. Usando a linguagem de programao
C++, foi criado um programa para realizar todas os testes de forma automtica
variando um parmetro por vez e deixando os outros parmetros fixados. A sada do
programa foi a mdia de colises para as 100 execues consecutivas para cada
variao de parmetro.
O primeiro teste realizado foi o de influencia do tamanho do tabuleiro na
soluo gerada. Foram fixados para esse teste a temperatura inicial de 100 e o fator
de resfriamento em 0.95. Foram testados tabuleiros de tamanhos entre 4 e 100
rainhas. Analisando o grfico abaixo, podemos concluir que a funo que rege a
relao entre tamanho de tabuleiro e colises linear. possvel notar que para
tabuleiros pequenos a quantidades de colises tende a zero, e para tabuleiros muito
grandes, a quantidade de colises tambm tende a aumentar linearmente.


Figura 5 - Variao de Tabuleiro

10

O fator de resfriamento a tem um papel importantssimo na qualidade da


soluo gerada pelo nosso programa. ela que limita a quantidades de execues de
nosso programa, e geralmente varia de zero um. Para nossos testes, foram
realizados testes com a constante de resfriamento variando de 0.9 at 0.9999. O
grfico abaixo mostra o resultado obtido. Podemos concluir que quando a
temperatura de resfriamento tente a 1, a quantidade de colises tente a zero.
Entretendo,

para

obtermos

essa

soluo

ideal,

exigiramos

um

poder

de

processamento muito elevado. Quando realizados os testes com a=0.9999 o tempo de


execuo dos testes foi muito alto, com alguns testes durando mais de 3 minutos de
execuo. Para esse teste foram fixados a temperatura inicial de 1000 e o tabuleiro de
7 rainhas.


Figura 6 - Variao da taxa de resfriamento

O ltimo teste realizado foi o de temperatura inicial. Foram testadas


temperaturas de 1 at 100.000 e os resultados analisados. O resultado obtido como
temperatura ideal, ou seja, a que gera menos colises, foi de T = 1000. Para esse
teste foram fixados a constante de resfriamento de 0.999 e o tabuleiro de 7 rainhas.

11


Figura 7 - Variao da Temperatura Inicial

De forma geral, o simulate annealing apresentou uma mdia de execues


elevada, assim como o excessivo uso de memria e processamento em nossos testes.
Em alguns testes, foram usados mais de 600 MB de memria RAM quando
executado os testes mais pesados do simulated annealing.

12

Algoritmo Gentico
Algoritmos Genticos (AG) so implementados como uma simulao de
computador em que uma populao de representaes abstratas de soluo
selecionada em busca de solues melhores. A evoluo geralmente se inicia a partir
de um conjunto de solues criado aleatoriamente e realizada por meio de geraes.
A cada gerao, a adaptao de cada soluo na populao avaliada, alguns
indivduos so selecionados para a prxima gerao, e recombinados ou mutados para
formar uma nova populao. A nova populao ento utilizada como entrada para
a prxima iterao do algoritmo.
Para achar o mximo global, essa tcnica utiliza:
Explorao, processo de visitar pontos inteiramente novos no espao de
busca. Necessrio para explorar regies desconhecidas do espao de busca. Utilizada
nas funes crossover e mutao.
Prospeco Processo de explorar o espao de busca utilizando de
informaes de pontos anteriormente visitados a fim de encontrar melhores pontos.
Utilizada na funo seleo natural.
Utilizaremos a mesma modelagem das n rainhas do algoritmo anterior para
esse.
O programa comea com as escolhas do tamanho do cromossomo, tamanho da
populao, probabilidade de mutao e probabilidade de crossover.
A probabilidade de mutao menor do que 1%. Se for elevado vira uma
busca aleatria. A mutao previne a permanncia em espaos de busca limitado.
A probabilidade de crossover fica entre 60% a 99%.
Assim, cria-se uma populao inicial. Depois, avalia-se cada indivduo dessa
populao para saber quais os mais adaptados, menores nmeros de colises entre
as rainhas.

13

Os principais mtodos da seleo natural so: roleta, torneio, amostragem


universal estocstica. Foi utilizado o torneio, onde foi escolhido aleatoriamente 2
elementos, e entre eles, escolhido o mais adaptado.
Na funo crossover so escolhidos aleatoriamente 2 indivduos da populao e
gerado dois novos indivduos com a combinao desses dois escolhendo-se um ponto
de corte aleatrio.
Na funo mutao. cada posio do cromossomo avaliado em torno de uma
probabilidade para saber se ocorrer ou no a mutao, caso ocorra, ser mudado
aleatoriamente o valor que encontra-se nessa posio.
Ao final volta para o comeo do algoritmo avaliando-se os novos indivduos.

14

Resultados
Foram-se avaliado o desempenho e os resultados obtidos do algoritmo
gentico, alterando apenas uma caracterstica do algoritmo e mantendo-se todas as
outras constantes, foi possvel observar o comportamento do mesmo em vrias
situaes diferentes, e a partir da pode-se ver como cada elemento do algoritmo
influencia nos resultados obtidos.


Figura 8 - Variao no Cromossomo

Variando-se apenas o tamanho do tabuleiro, ou seja, o tamanho do


cromossomo, pode-se observar que a mdia de colises aumenta de forma linear.

15


Figura 9 - Variao na Populao

Variando-se apenas o tamanho da populao por outro lado podemos observar


uma variao de forma linear para a quantidade de colises at uma populao em
torno de 25 cromossomos, e a partir da a quantidade mdia de colises torna-se
praticamente constante.

16


Figura 10 - Variao na Probabilidade de Crossover

A probabilidade de crossover, como j foi dito antes, garante a diversidade de


cromossomos na populao, fazendo cruzamentos entre cromossomos. Nesse caso,
pode-se observar que uma probabilidade em torno de 70% seria o ideal, como o
prprio grfico demonstra.


Figura 11 - Variao na Quantidade Mxima de Geraes

17

Em contraste com os outros elementos, a quantidade mxima de geraes teve


pouca ou nenhuma influncia na mdia de colises para quantidades abaixo de 600,
ou seja, a mdia de colises ficava inconstante, aleatria. Entretanto a partir de 600
j se possvel observar um comportamento mais linear na quantidade de colises
com o aumento progressivo das geraes.
Por fim, pode-se dizer que para que o algoritmo gentico funcione de forma
eficaz e o mais rpido possvel, mantendo-se uma preciso boa, preciso levar em
considerao vrios fatores, desde a complexidade do problema a ser resolvido, at o
processamento disponvel do computador a ser usado. Uma mistura de tamanhos
variados dos elementos do algoritmo o recomendado para alcanar tal resultado,
procurando encontrar um equilbrio entre os valores, para que nenhum fique
demasiadamente maior que os outros.

18

Referncias Bibliogrficas
[1]

Wikpedia, Problema das N-Rainhas. Disponvel em


https://pt.wikipedia.org/wiki/Problema_das_N-Rainhas

Acesso em 17 de abril de 2016.