Sei sulla pagina 1di 8

El Problema de las n-Reinas con Algoritmos Genticos

Irving Omar Ruiz Vivaldo, Dr. Rogelio Gonzles Velzquez, M.C. Alba Maribel Snchez Glvez
Facultad de Ciencias de la Computacin - BUAP

Resumen
El problema de las n-Reinas conocido originalmente como el problemas de las 8-Reinas
ha sido estudiado por ms de un siglo desde su propuesta en 1848 por el alemn Max
Bezzel. El problema ha atrado la atencin de varios matemticos de la poca como Carl
Friedrich Gauss, Georg Cantor y George Plya por mencionar algunos. A partir del
desarrollo de la Computacin el problema ha sido discutido en trminos de esta ciencia
y tratado a travs de algoritmos de vuelta-atrs, programacin estructurada, el
paradigma de divide y vencers, recursividad y ms recientemente con el uso de
algoritmos genticos como alternativa a las tcnicas de programacin tradicional. En
este trabajo se presenta el diseo y la implementacin en java de un algoritmo gentico
que resuelve el problema de las n-reinas.

1. Introduccin
El problema de las n-Reinas es una generalizacin del problema de las 8 reinas propuesto por
primera vez en 1848 por el jugador alemn de ajedrez Max Bezzel en el Berliner Schachzeitung
[1] y consiste en colocar n Reinas en un tablero cuadrangular de dimensiones n x n de tal forma
que ninguna de ellas se ataque, en otras palabras el objetivo es colocar n reinas en el tablero
teniendo en cuenta no colocar ms de dos en la misma columna, fila o diagonal del tablero. Un
ejemplo de configuracin de un tablero para el problema de 2-,3- y 4-reinas esta dado en la Figura
1. Como se puede observar no hay solucin para el problema de 2- y 3-reinas, por lgica tampoco
o hay para 1-reina.
La literatura describe varios mtodos para hallar soluciones al problema de las n-reinas, el mtodo
utilizado en sta investigacin sigue el modelo de representacin por vectores. Un vector definido
como [1, 2, 3,, n] puede ser una posible solucin para el problema de n-reinas, en el cual los
ndices del vector representan las filas y los elementos del vector las columnas. Tomando como
ejemplo el tablero de 4-reinas de la Figura 1, el vector solucin correspondiente quedara definido
de la siguiente manera: [2, 4, 1, 3]. Notemos que la solucin ser entonces alguna de las posibles
permutaciones de los nmeros 1, 2, 3,, n para n-reinas, ntese que nuestra preocupacin por que
se hallen dos reinas en la misma columna o fila es nula puesto que se necesitara la repeticin de
algn nmero en el vector. Cabe mencionar que puede haber ms de una solucin.
1

Figura 1. Ejemplo de Tablero para el problema de 2-,3- y 4-reinas.


Ninguna de las reinas est en la misma fila, columna o diagonal

2. Algoritmos Genticos
Los Algoritmos Genticos son una tcnica de resolucin de problemas de bsqueda y optimizacin
inspirada en la teora de la evolucin de las especies y seleccin natural. Trabajan con una
coleccin o poblacin de soluciones candidatas o individuos, para los que se calcula una
medida de su adaptacin o capacidad de ser solucin al problema a resolver. Todo algoritmo
gentico consta de elementos especficos que los distinguen de los dems entre ellas estn:
Representacin de los individuos y la funcin de aptitud.
El algoritmo gentico consta de los siguientes pasos

Generacin de la poblacin
Seleccin
Evaluacin de la poblacin
Cruzamiento
Mutacin.

Los cuales se repites hasta que se ha cumplido el criterio de parada establecido que puede ser
acercarse al ptimo o bien cumplir cierto nmero de iteraciones.
Esquemticamente un algoritmo gentico puede estar representado por el siguiente seudocdigo:
function algoritmo_Genetico ()
{
Obtener_parmetros (tamPob, lcrom)
poblacin = pobInicial(tamPob, lcrom)
evaluacin(poblacin, tamPob, posMej, sumadaptacion)
para cada generacin hasta numMaxGen hacer{
seleccin(poblacin,parmetros)
reproduccin(poblacin, tamPob, lcrom, probCruce)
mutacion(poblacin, tamPob, lcrom, probMut)
evaluacin(poblacin, tamPob, posMej, sumadaptacion)
}
}devolver pob[posMejor]

2.1 Representacin de los Individuos y Funcin de aptitud


En un Algoritmo Gentico requiere que los individuos se codifiquen en cadenas binarias o enteras
que representan a puntos x del espacio de bsqueda del problema. Tomando la nomenclatura de la
biologa, a la cadena binaria o entera se le denomina genotipo del individuo y a x se le denomina
fenotipo, siguiendo la nomenclatura, se usa gen para referirse a la codificacin de una determinada
2

caracterstica del individuo. En los Algoritmos Genticos se suele identificar un gen con cada
posicin de la cadena, es entonces que un conjunto de genes forman un cromosoma.
El mtodo de codificacin de los individuos es, lgicamente, especfico del problema
seleccionado, sin embargo, a la hora de disear el mtodo de codificacin es importante tener en
cuenta una serie de directrices. As, debemos buscar una codificacin tal que cada punto del
espacio de bsqueda est representado por el mismo nmero de cadenas binarias, y tal que sea
capaz de representar todos los puntos del espacio del problema.
La correcta codificacin de un cromosoma es la clave de una buena solucin del problema, puesto
que en todo momento del desarrollo de un Algoritmo Gentico los cromosomas son los principales
elementos sobre los cuales se efectan las operaciones de cruce y mutacin, en el caso de que el
cromosoma este mal codificado, los resultados podran no ser los esperados.

Gen 1

Gen 2

Gen 3

Gen n-1

Gen n

Figura 2. Representacin de un Cromosoma de n Genes

La representacin para el problema de la n reinas son vectores de la forma [1, 2, 3,, n], a este
vector se le llama cromosoma.
Si bien la literatura menciona que un cromosoma debe ser binario, se emplea un cromosoma
formado de nmeros enteros para simplificar las operaciones. Con esta representacin el problema
automticamente se convierte en un tipo combinatorio.
La funcin de aptitud es la ms importante para el algoritmo gentico, pues es la que determina
que tanto porciento una posible solucin, lo es. La funcin de aptitud diseada para el problema de
las n- reinas se define mediante la siguiente proposicin:
Sabemos que dos reinas no pueden encontrarse en la misma diagonal, esta condicin se refleja
mediante la siguiente restriccin: sean (, ) y (, ) las coordenadas de dos reinas en el tablero se
debe de cumplir que | | | |.

2.2 Operadores Genticos


A continuacin se detallan los elementos del algoritmo y se muestra el diseo del algoritmo.
Anteriormente se mencionaba el Criterio de Inicializacin como la forma en la cual se determina
la poblacin inicial para el algoritmo, pues bien, la poblacin inicial de un Algoritmo Gentico
suelen ser cadenas (cromosomas de individuos) de ceros y unos, nmeros enteros en nuestro caso,
generadas de forma completamente aleatoria, es decir, se va generando cada gen con una funcin
que devuelve un nmero entero entre 1 y n con igual probabilidad. La evolucin de la poblacin
3

depende de la calidad relativa de los individuos que compiten por aumentar su presencia en la
poblacin y por participar en las operaciones de reproduccin. En un problema de bsqueda u
optimizacin dicha calidad se mide por la adecuacin o adaptacin de cada individuo a ser
solucin al problema.

Seleccin. La poblacin del algoritmo gentico se somete a un proceso de seleccin que debe
tender a favorecer la cantidad de copias de los individuos ms adaptados. Este proceso se puede
realizar de formas muy diversas: Seleccin Proporcional o por Ruleta, Muestreo Estocstico
Universal, Seleccin por Torneo, Seleccin Elitista que es la que usamos en este problema

Seleccin Elitista. Se garantiza en la siguiente generacin la existencia de uno o algunos


de los individuos mejor adaptados de la generacin anterior.

Cruce. En cada nueva generacin se crean algunos individuos que no estaban presentes en la
poblacin anterior. Este operador es muy importante pues de esta forma el Algoritmo Gentico va
accediendo a nuevas regiones del espacio de bsqueda. Este operador combina propiedades de dos
individuos de la poblacin para crear nuevos descendientes. Este proceso se puede realizar de
formas diversas: Cruce Mono punto, Cruce por Orden, cruce por ciclos, Emparejamiento parcial
que fue el usado y que explicamos a continuacin.

Emparejamiento Parcial (PMX). Este tipo de cruce consiste en elegir un pedazo del
cromosoma de uno de los padres y cruzar manteniendo el orden y la posicin de la mayor
cantidad posible de genes del otro.

Mutacin. La mutacin consiste en modificar aleatoriamente uno o varios genes del cromosoma
del individuo. Esto al igual que el cruce nos permite acceder a nuevas regiones del espacio de
bsqueda. Habitualmente la tasa de aplicacin del operador de mutacin es bastante pequea (en
torno al 0.1%) comparada con el operador de cruce.

Mutacin por Inversin. Se altera el orden de una sub cadena del individuo y consiste en
seleccionar dos puntos del individuo al azar e invertir los elementos que se encuentran entre
dichos puntos.

Remplazo. Generalmente el tamao de la poblacin se mantiene constante, aunque existen otras


posibilidades. Para mantener el tamao de la poblacin, los nuevos individuos creados mediante
los operadores genticos deben reemplazar a otros de la poblacin anterior y es en funcin de la
cantidad de individuos reemplazados que se consideran dos tipos de Algoritmos Genticos:
generacionales (la poblacin se renueva por completo) y estacionarios (se conservan parte de los
individuos de generacin en generacin).

3. Resultados
Para la implementacin se dise en java la siguiente interfaz, donde se los datos a ingresar son el
nmero de reinas, las probabilidades de cruce y mutacin, el tamao de la poblacin y el nmero
de generaciones. Adems se cre una ventana grfica que muestra el tablero de ajedrez, donde se
puede visualizar la solucin. Los resultados para algunos nmeros de reinas seleccionadas se
muestran a continuacin.

Figura 3. Interfaz de la
aplicacin.

Figura 4. Problema de 8-reinas, vector solucin [3, 6, 4, 1, 8, 5, 7, 2].


Probabilidades de Cruce y Mutacin: 0.1 y 0.65 respetivamente.
Nmero de Individuos y Generaciones: 10 y 100 respectivamente.

Figura 5. Problema de 10-reinas, vector solucin [4, 9, 5, 10, 1, 6, 8, 2, 7, 3].


Probabilidades de Cruce y Mutacin: 0.1 y 0.65 respetivamente.
Nmero de Individuos y Generaciones: 10 y 100 respectivamente.

Figura 7. Problema de 15-reinas, vector solucin [11, 15, 6, 9, 1, 8, 4, 2, 13, 10, 12, 3, 5, 7, 14].
Probabilidades de Cruce y Mutacin: 0.1 y 0.75 respetivamente.
Nmero de Individuos y Generaciones: 275 y 10000 respectivamente.

Figura 8. Problema de 20-reinas, vector solucin [8, 1, 9, 16, 10, 19, 11, 2, 20, 18, 13, 15, 3, 5, 7, 17, 4, 14, 12, 6].
Probabilidades de Cruce y Mutacin: 0.1 y 0.85 respetivamente.
Nmero de Individuos y Generaciones: 750 y 100000 respectivamente.

Conclusiones

Dependiendo del tipo de problema es el tipo de operadores genticos los que se utilizarn
as como las modificaciones que se harn.
Un Algoritmo Gentico a diferencia de otro tipo de algoritmos no busca un equilibrio entre
tiempo de ejecucin y recursos computacionales, sino que puede incluso sacrificar tiempo
o memoria para encontrar una solucin de bsqueda u optimizacin.
Al comparar las figuras 5 y 6 contra las figuras 7 y 8, el resultado depende de que tantos
individuos y nmero de generaciones sean, mientras mayor sea el nmero de reinas para el
problema, se requerir de un mayor nmero de individuos que conformen la poblacin y
un mayor nmero de generaciones para que estos evolucionen hacia la solucin deseada.
Para la obtencin de buenos resultados, la definicin de la funcin de aptitud y la
codificacin de los cromosomas de los individuos son fundamentales.

4. Agradecimientos
A la Mtra. Alba Maribel Snchez Glvez, por su tiempo, dedicacin, conocimiento y ganas de
ensear y no dejar de aprender, por el apoyo que me ha otorgado y la motivacin para siempre
pensar en hacer o aprender algo nuevo cada da. Por su calidad humana y por la confianza que me
ha brindado.
Al Dr. Rogelio Gonzles Velzquez por la oportunidad de trabajar con l y promover el inters por
la investigacin.
7

5. Referencias
[1] M. Bezzel, Proposal of 8-queens problem, Berliner Schachzeitung, 3(1848), p. 363
[2] Araujo, Lourdes y Cervign, Carlos. Algoritmos Evolutivos: un enfoque prctico. Alfaomega v.1, 2009.
[3] Guerequeta, Rosa y Vallecillo, Antonio. Tcnicas de Diseo de Algoritmos. Servicio de publicaciones de la
Universidad de Mlaga, 2 ed. 2000.
[4] Arrioja Landa Cosio, Nicols. Inteligencia Artificial. 1 ed. Banfield Lomas de Camora: Gradi, 2007
[5] Bell, Jordan and Stevens, Brett. A survey of known results and research areas for n-queens [en lnea]: School of
Mathematics and Statistics, Carleton University, 2008.
http://www.sciencedirect.com/science/article/pii/S0012365X07010394
[6] Cengiz Erbas and Murat M. Tanik. Generating Solutions to the N-Queens Problem Using 2-Circulants.
Mathematics Magazine Vol. 68, No. 5, 1995. http://www.jstor.org/stable/2690923
[7] http://geneura.ugr.es/~jmerelo/DegaX/GenAlg.html Introduccin a l computacin evolutiva.

Potrebbero piacerti anche