El Problema de Las N-Reinas Con Algoritmos Genéticos

March 25, 2018 | Author: Irving Omar Ruiz | Category: Genetic Algorithm, Gene, Mutation, Biology, Earth & Life Sciences


Comments



Description

El Problema de las n-Reinas con Algoritmos GenéticosIrving Omar Ruiz Vivaldo, Dr. Rogelio Gonzáles Velázquez, M.C. Alba Maribel Sánchez Gálvez Facultad de Ciencias de la Computación - BUAP Resumen El problema de las n-Reinas conocido originalmente como el problemas de las 8-Reinas ha sido estudiado por más de un siglo desde su propuesta en 1848 por el alemán Max Bezzel. El problema ha atraído la atención de varios matemáticos de la época como Carl Friedrich Gauss, Georg Cantor y George Pólya por mencionar algunos. A partir del desarrollo de la Computación el problema ha sido discutido en términos de esta ciencia y tratado a través de algoritmos de vuelta-atrás, programación estructurada, el paradigma de divide y 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 diseño y la implementación en java de un algoritmo genético que resuelve el problema de las n-reinas. 1. Introducción El problema de las n-Reinas es una generalización del problema de las 8 reinas propuesto por primera vez en 1848 por el jugador alemán 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 más de dos en la misma columna, fila o diagonal del tablero. Un ejemplo de configuración de un tablero para el problema de 2-,3- y 4-reinas esta dado en la Figura 1. Como se puede observar no hay solución para el problema de 2- y 3-reinas, por lógica tampoco o hay para 1-reina. La literatura describe varios métodos para hallar soluciones al problema de las n-reinas, el método utilizado en ésta investigación sigue el modelo de representación por vectores. Un vector definido como [1, 2, 3,…, n] puede ser una posible solución 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 solución correspondiente quedaría definido de la siguiente manera: [2, 4, 1, 3]. Notemos que la solución será entonces alguna de las posibles permutaciones de los números 1, 2, 3,…, n para n-reinas, nótese que nuestra preocupación por que se hallen dos reinas en la misma columna o fila es nula puesto que se necesitaría la repetición de algún número en el vector. Cabe mencionar que puede haber más de una solución. 1 1 2 3 2 1 2 3 2 3 4 2 3 4 1 1 1 2 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 1 1 Representación de los Individuos y Función de aptitud En un Algoritmo Genético requiere que los individuos se codifiquen en cadenas binarias o enteras que representan a puntos x del espacio de búsqueda del problema. Tomando la nomenclatura de la biología. Los cuales se repites hasta que se ha cumplido el criterio de parada establecido que puede ser acercarse al óptimo o bien cumplir cierto número de iteraciones. lcrom. tamPob. Trabajan con una colección o “población” de soluciones candidatas o “individuos”. probMut) evaluación(población. sumadaptacion) para cada generación hasta numMaxGen hacer{ selección(población. lcrom) evaluación(población. posMej. se usa gen para referirse a la codificación de una determinada 2 . tamPob. para los que se calcula una medida de su “adaptación” o capacidad de ser solución al problema a resolver.2. tamPob. sumadaptacion) } }devolver pob[posMejor] 2. Todo algoritmo genético consta de elementos específicos que los distinguen de los demás entre ellas están: Representación de los individuos y la función de aptitud.parámetros) reproducción(población. posMej. Esquemáticamente un algoritmo genético puede estar representado por el siguiente seudocódigo: function algoritmo_Genetico () { Obtener_parámetros (tamPob. lcrom) población = pobInicial(tamPob. tamPob. El algoritmo genético consta de los siguientes pasos      Generación de la población Selección Evaluación de la población Cruzamiento Mutación. lcrom. siguiendo la nomenclatura. probCruce) mutacion(población. Algoritmos Genéticos 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. a la cadena binaria o entera se le denomina genotipo del individuo y a x se le denomina fenotipo. 𝑏) y (𝑐.2 Operadores Genéticos A continuación se detallan los elementos del algoritmo y se muestra el diseño del algoritmo. Anteriormente se mencionaba el Criterio de Inicialización como la forma en la cual se determina la población inicial para el algoritmo. generadas de forma completamente aleatoria. lógicamente. lo es. en el caso de que el cromosoma este mal codificado.característica del individuo. 2. Gen 1 Gen 2 Gen 3 ……… Gen n-1 Gen n Figura 2. y tal que sea capaz de representar todos los puntos del espacio del problema. La función de aptitud es la más importante para el algoritmo genético. La correcta codificación de un cromosoma es la clave de una buena solución del problema. La función de aptitud diseñada para el problema de las n. específico del problema seleccionado. Así. es entonces que un conjunto de genes forman un cromosoma. la población inicial de un Algoritmo Genético suelen ser cadenas (cromosomas de individuos) de ceros y unos. sin embargo. Con esta representación el problema automáticamente se convierte en un tipo combinatorio. 3. esta condición se refleja mediante la siguiente restricción: sean (𝑎. los resultados podrían no ser los esperados. a la hora de diseñar el método de codificación es importante tener en cuenta una serie de directrices. números enteros en nuestro caso. 𝑑) las coordenadas de dos reinas en el tablero se debe de cumplir que |𝑎 − 𝑐| ≠ |𝑏 − 𝑑|. 2. La evolución de la población 3 . puesto que en todo momento del desarrollo de un Algoritmo Genético los cromosomas son los principales elementos sobre los cuales se efectúan las operaciones de cruce y mutación. Representación de un Cromosoma de n Genes La representación para el problema de la n reinas son vectores de la forma [1. pues bien. n]. es decir.….reinas se define mediante la siguiente proposición: Sabemos que dos reinas no pueden encontrarse en la misma diagonal. Si bien la literatura menciona que un cromosoma debe ser binario. se emplea un cromosoma formado de números enteros para simplificar las operaciones. El método de codificación de los individuos es. a este vector se le llama cromosoma. pues es la que determina que tanto porciento una posible solución. se va generando cada gen con una función que devuelve un número entero entre 1 y n con igual probabilidad. debemos buscar una codificación tal que cada punto del espacio de búsqueda esté representado por el mismo número de cadenas binarias. En los Algoritmos Genéticos se suele identificar un gen con cada posición de la cadena. La población del algoritmo genético se somete a un proceso de selección que debe tender a favorecer la cantidad de copias de los individuos más adaptados. 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. Mutación. Selección. Se garantiza en la siguiente generación la existencia de uno o algunos de los individuos mejor adaptados de la generación anterior. Cruce por Orden. Esto al igual que el cruce nos permite acceder a nuevas regiones del espacio de búsqueda. Selección por Torneo. Generalmente el tamaño de la población se mantiene constante.1%) comparada con el operador de cruce. Para mantener el tamaño de la población.  Mutación por Inversión. Selección Elitista que es la que usamos en este problema  Selección Elitista. Este operador es muy importante pues de esta forma el Algoritmo Genético va accediendo a nuevas regiones del espacio de búsqueda. aunque existen otras posibilidades. La mutación consiste en modificar aleatoriamente uno o varios genes del cromosoma del individuo. 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). Cruce. cruce por ciclos. 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.  Emparejamiento Parcial (PMX). En un problema de búsqueda u optimización dicha calidad se mide por la adecuación o adaptación de cada individuo a ser solución al problema. Muestreo Estocástico Universal. Emparejamiento parcial que fue el usado y que explicamos a continuación.depende de la calidad relativa de los individuos que compiten por aumentar su presencia en la población y por participar en las operaciones de reproducción. Habitualmente la tasa de aplicación del operador de mutación es bastante pequeña (en torno al 0. Este proceso se puede realizar de formas muy diversas: Selección Proporcional o por Ruleta. 4 . Este proceso se puede realizar de formas diversas: Cruce Mono punto. En cada nueva generación se crean algunos individuos que no estaban presentes en la población anterior. Este operador combina propiedades de dos individuos de la población para crear nuevos descendientes. Remplazo. Además se creó una ventana gráfica que muestra el tablero de ajedrez. el tamaño de la población y el número de generaciones. 5. 1. Los resultados para algunos números de reinas seleccionadas se muestran a continuación. Número de Individuos y Generaciones: 10 y 100 respectivamente. Resultados Para la implementación se diseñó en java la siguiente interfaz.1 y 0. donde se los datos a ingresar son el número de reinas.3. 7.65 respetivamente. 6. las probabilidades de cruce y mutación. Interfaz de la aplicación. Probabilidades de Cruce y Mutación: 0. Problema de 8-reinas. Figura 3. 8. vector solución [3. 5 . Figura 4. donde se puede visualizar la solución. 4. 2]. Problema de 15-reinas. 1. 6. Probabilidades de Cruce y Mutación: 0. vector solución [11.1 y 0. Número de Individuos y Generaciones: 10 y 100 respectivamente.1 y 0. 8. 9. vector solución [4. Probabilidades de Cruce y Mutación: 0.65 respetivamente. 15. 6 . Problema de 10-reinas. 5. 2. 10. 4. 1. 13. 6. 5. 14]. 9. 3]. 10. 2. 8.75 respetivamente.Figura 5. 7. Figura 7. 7. 12. 3. Número de Individuos y Generaciones: 275 y 10000 respectivamente. 17. 7. vector solución [8. Por su calidad humana y por la confianza que me ha brindado. dedicación. Problema de 20-reinas. Número de Individuos y Generaciones: 750 y 100000 respectivamente. 3. 13. Al Dr. por su tiempo. Probabilidades de Cruce y Mutación: 0. 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. 4. 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. Un Algoritmo Genético a diferencia de otro tipo de algoritmos no busca un equilibrio entre tiempo de ejecución y recursos computacionales. 2. 12. 6]. 19.85 respetivamente. 1. por el apoyo que me ha otorgado y la motivación para siempre pensar en hacer o aprender algo nuevo cada día. 10. conocimiento y ganas de enseñar y no dejar de aprender. Rogelio Gonzáles Velázquez por la oportunidad de trabajar con él y promover el interés por la investigación. 9. 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.Figura 8. Al comparar las figuras 5 y 6 contra las figuras 7 y 8. 5. 15. Alba Maribel Sánchez Gálvez. 20. 7 . 16. 14.1 y 0. 18. el resultado depende de que tantos individuos y número de generaciones sean. mientras mayor sea el número de reinas para el problema. 4. Agradecimientos A la Mtra. sino que puede incluso sacrificar tiempo o memoria para encontrar una solución de búsqueda u optimización. 11. 5. Bezzel.com/science/article/pii/S0012365X07010394 [6] Cengiz Erbas and Murat M. Jordan and Stevens. Berliner Schachzeitung.org/stable/2690923 [7] http://geneura. Proposal of 8-queens problem. Referencias [1] M. Brett. Carlos.sciencedirect. [3] Guerequeta. 8 . 2000. 1ª ed.1. Rosa y Vallecillo.es/~jmerelo/DegaX/GenAlg. http://www. Tanik. 363 [2] Araujo.jstor. Generating Solutions to the N-Queens Problem Using 2-Circulants. Nicolás. Inteligencia Artificial. 2007 [5] Bell.html Introducción a l computación evolutiva. 3(1848).ugr. Servicio de publicaciones de la Universidad de Málaga. 2009. 1995. Algoritmos Evolutivos: un enfoque práctico. Antonio. A survey of known results and research areas for n-queens [en línea]: School of Mathematics and Statistics. Técnicas de Diseño de Algoritmos. [4] Arrioja Landa Cosio. Mathematics Magazine Vol. p. – Banfield – Lomas de Camora: Gradi. 68. Lourdes y Cervigón. Carleton University. No. 2ª ed. 5. http://www. 2008. Alfaomega v.
Copyright © 2024 DOKUMEN.SITE Inc.