Você está na página 1de 5

El Problema de las n-Reinas con Algoritmos Genéticos

Irving Omar Ruiz Vivaldo


Facultad de Ciencias de la Computación – BUAP
irvoma@outlook.com

Resumen - A partir del desarrollo de la Computación el reinas, nótese que nuestra preocupación por que se hallen
problema de las n-Reinas ha sido discutido en términos de dos reinas en la misma columna o fila es nula puesto que se
esta ciencia y tratado a través de algoritmos de vuelta-atrás, necesitaría la repetición de algún número en el vector. Cabe
programación estructurada, el paradigma de divide y mencionar que puede haber más de una solución.
vencerás, recursividad y más recientemente con el uso de
algoritmos genéticos como alternativa a las técnicas de
programación tradicional. En este trabajo se presenta el II. ALGORITMOS GENÉTICOS
diseño y la implementación en java de un algoritmo genético
que resuelve el problema de las n-reinas. Los Algoritmos Genéticos son una técnica de resolución de
problemas de búsqueda y optimización inspirada en la teoría
de la evolución de las especies y selección natural. Trabajan
I. INTRODUCCIÓN con una colección o “población” de soluciones candidatas o
“individuos”, para los que se calcula una medida de su
El problema de las n-Reinas es una generalización del “adaptación” o capacidad de ser solución al problema a
problema de las 8 reinas propuesto por primera vez en 1848 resolver. Todo algoritmo genético consta de elementos
por el jugador alemán de ajedrez Max Bezzel en el Berliner específicos que los distinguen de los demás entre ellas están:
Schachzeitung [1] y consiste en colocar n Reinas en un Representación de los individuos y la función de aptitud.
tablero cuadrangular de dimensiones n x n de tal forma que
ninguna de ellas se ataque, en otras palabras el objetivo es El algoritmo genético consta de los siguientes pasos
colocar n reinas en el tablero teniendo en cuenta no colocar  Generación de la población
más de dos en la misma columna, fila o diagonal del tablero.  Selección
Un ejemplo de configuración de un tablero para el problema  Evaluación de la población
de 2-,3- y 4-reinas esta dado en la Figura 1. Como se puede  Cruzamiento
observar no hay solución para el problema de 2- y 3-reinas,  Mutación.
por lógica tampoco o hay para 1-reina.
Los cuales se repiten hasta que se ha cumplido el criterio de
La literatura describe varios métodos para hallar soluciones parada establecido que puede ser acercarse al óptimo o bien
al problema de las n-reinas, el método utilizado en ésta cumplir cierto número de iteraciones.
investigación sigue el modelo de representación por
vectores. Un vector definido como [1, 2, 3,…, n] puede ser Esquemáticamente un algoritmo genético puede estar
una posible solución para el problema de n-reinas, en el cual representado por el siguiente seudocódigo:
los índices del vector representan las filas y los elementos
función algoritmo_Genetico()
del vector las columnas. Tomando como ejemplo el tablero
de 4-reinas de la Figura 1, el vector solución correspondiente {
quedaría definido de la siguiente manera: [2, 4, 1, 3].
Obtener_parametros(tamPob, lcrom)
Notemos que la solución será entonces alguna de las
posibles permutaciones de los números 1, 2, 3,…, n para n- población = pobInicial(tamPob, lcrom)
evaluación(población, tamPob, posMejor,
sumaAdaptacion)
para cda generación hasta numMaxGen hacer
{
selección(población, parametros)
reproducción(población, tamPob, lcrom, representación el problema automáticamente se convierte en
probMut) un tipo combinatorio.
evaluación(población, tamPob, posMej, La función de aptitud es la más importante para el algoritmo
sumaAdaptacion) genético, pues es la que determina que tanto porciento una
} posible solución, lo es. La función de aptitud diseñada para
el problema de las n- reinas se define mediante la siguiente
}devolver pob[posMejor] proposición:

Sabemos que dos reinas no pueden encontrarse en la misma


III. REPRESENTACION DE LOS INDIVIDUOS Y diagonal, esta condición se refleja mediante la siguiente
FUNCIÓN DE APTITUD restricción: sean (𝑎,𝑏) y (𝑐,𝑑) las coordenadas de dos reinas
en el tablero se debe de cumplir que |𝑎−𝑐| ≠ |𝑏−𝑑|.
En un Algoritmo Genético requiere que los individuos se
codifiquen en cadenas binarias o enteras que representan a
IV. OPERADORES GENÉTICOS
puntos x del espacio de búsqueda del problema. Tomando la
nomenclatura de la biología, a la cadena binaria o entera se A continuación se detallan los elementos del algoritmo y se
le denomina genotipo del individuo y a x se le denomina muestra el diseño del algoritmo.
fenotipo, siguiendo la nomenclatura, se usa gen para
referirse a la codificación de una determinada característica Anteriormente se mencionaba el Criterio de Inicialización
del individuo. En los Algoritmos Genéticos se suele como la forma en la cual se determina la población inicial
identificar un gen con cada posición de la cadena, es para el algoritmo, pues bien, la población inicial de un
entonces que un conjunto de genes forman un cromosoma. Algoritmo Genético suelen ser cadenas (cromosomas de
individuos) de ceros y unos, números enteros en nuestro
El método de codificación de los individuos es, lógicamente, caso, generadas de forma completamente aleatoria, es decir,
específico del problema seleccionado, sin embargo, a la hora se va generando cada gen con una función que devuelve un
de diseñar el método de codificación es importante tener en número entero entre 1 y n con igual probabilidad. La
cuenta una serie de directrices. Así, debemos buscar una evolución de la población depende de la calidad relativa de
codificación tal que cada punto del espacio de búsqueda esté los individuos que compiten por aumentar su presencia en la
representado por el mismo número de cadenas binarias, y tal población y por participar en las operaciones de
que sea capaz de representar todos los puntos del espacio del reproducción. En un problema de búsqueda u optimización
problema. dicha calidad se mide por la adecuación o adaptación de cada
La correcta codificación de un cromosoma es la clave de una individuo a ser solución al problema.
buena solución del problema, puesto que en todo momento Selección. La población del algoritmo genético se somete a
del desarrollo de un Algoritmo Genético los cromosomas un proceso de selección que debe tender a favorecer la
son los principales elementos sobre los cuales se efectúan las cantidad de copias de los individuos más adaptados. Este
operaciones de cruce y mutación, en el caso de que el proceso se puede realizar de formas muy diversas: Selección
cromosoma este mal codificado, los resultados podrían no Proporcional o por Ruleta, Muestreo Estocástico Universal,
ser los esperados. Selección por Torneo, Selección Elitista que es la que
usamos en este problema

 Selección Elitista. Se garantiza en la siguiente


generación la existencia de uno o algunos de los
individuos mejor adaptados de la generación
anterior.
La representación para el problema de la n reinas son Cruce. En cada nueva generación se crean algunos
vectores de la forma [1, 2, 3,…, n], a este vector se le llama individuos que no estaban presentes en la población anterior.
cromosoma. Este operador es muy importante pues de esta forma el
Si bien la literatura menciona que un cromosoma debe ser Algoritmo Genético va accediendo a nuevas regiones del
binario, se emplea un cromosoma formado de números espacio de búsqueda. Este operador combina propiedades de
enteros para simplificar las operaciones. Con esta dos individuos de la población 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 continuación.

 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
posición de la mayor cantidad posible de genes del
otro.

Mutación. La mutación 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 búsqueda. Habitualmente la tasa de aplicación del
operador de mutación es bastante pequeña (en torno al 0.1%)
comparada con el operador de cruce.

 Mutación por Inversión. 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 tamaño de la población se


mantiene constante, aunque existen otras posibilidades. Para
mantener el tamaño de la población, los nuevos individuos
creados mediante los operadores genéticos deben
reemplazar a otros de la población anterior y es en función
de la cantidad de individuos reemplazados que se consideran
dos tipos de Algoritmos Genéticos: generacionales (la
población se renueva por completo) y estacionarios (se
conservan parte de los individuos de generación en
generación).

V. RESULTADOS

Para la implementación se diseñó en java la siguiente


interfaz, donde se los datos a ingresar son el número de
reinas, las probabilidades de cruce y mutación, el tamaño de
la población y el número de generaciones. Además se creó
una ventana gráfica que muestra el tablero de ajedrez, donde
se puede visualizar la solución. Los resultados para algunos
números de reinas seleccionadas se muestran a
continuación.
VI. CONCLUSIONES

Dependiendo del tipo de problema es el tipo de operadores


genéticos los que se utilizarán así como las modificaciones
que se harán.

Un Algoritmo Genético a diferencia de otro tipo de


algoritmos no busca un equilibrio entre tiempo de ejecución
y recursos computacionales, sino que puede incluso
sacrificar tiempo o memoria para encontrar una solución de
búsqueda u optimización.

Al comparar las figuras 5 y 6 contra las figuras 7 y 8, el


resultado depende de que tantos individuos y número de
generaciones sean, mientras mayor sea el número de reinas
para el problema, se requerirá de un mayor número de
individuos que conformen la población y un mayor número
de generaciones para que estos evolucionen hacia la
solución deseada.

Para la obtención de buenos resultados, la definición de la


función de aptitud y la codificación de los cromosomas de
los individuos son fundamentales.

VII. REFERENCIAS

[1] M. Bezzel, Proposal of 8-queens problem, Berliner


Schachzeitung, 3(1848), p. 363

[2] Araujo, Lourdes y Cervigón, Carlos. Algoritmos


Evolutivos: un enfoque práctico. Alfaomega v.1, 2009.

[3] Guerequeta, Rosa y Vallecillo, Antonio. Técnicas de


Diseño de Algoritmos. Servicio de publicaciones de la
Universidad de Málaga, 2ª ed. 2000.

[4] Arrioja Landa Cosio, Nicolás. 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 línea]: School of
Mathematics and Statistics, Carleton University, 2008.
http://www.sciencedirect.com/science/article/pii/S0012365
X07010394 [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
Introducción a la computación evolutiva.

Você também pode gostar