Beruflich Dokumente
Kultur Dokumente
El papel de la Heurística
(Reporte)
Profesor: I.S.C.
Alumnos:
Miguel Ángel Hobak Noh.
Octavo
“A”
Fecha 01/03/19
1
Contenido
Introducción ...................................................................................................................................................................... 3
El problema de las N-Reinas - Algoritmos Genéticos .......................................................................................... 4
¿Cómo resolverías este problema? ........................................................................................................................ 4
Algoritmos Genéticos: ............................................................................................................................................... 5
Solución del Problema: ............................................................................................................................................. 7
DEAP .............................................................................................................................................................................. 7
Resultado ..................................................................................................................................................................... 10
Conclusiones.................................................................................................................................................................... 12
2
Introducción
Desde tiempos remotos la naturaleza ha sufrido grandes cambios conforme transcurren los años,
es decir; ha cambiado la forma de relacionarse con las diferentes especies que la rodean,
haciendo que estos individuos tengan que adaptarse a un entorno en constante evolución. Con
este proceso de cambio llega la extinción para los individuos más débiles; los que no logran
sobrevivir por si solos; en cambio prevalece la supervivencia del más fuerte que se adapta
conforme el entorno se está transformando; un ejemplo significativo es el Hombre.
Los Algoritmos Genéticos (AGs) son métodos adaptativos que pueden usarse para resolver
problemas de búsqueda y optimización. Están basados en el proceso genético de los organismos
vivos. A lo largo de las generaciones, las poblaciones evolucionan en la naturaleza de acorde con
los principios de la selección natural y la supervivencia de los más fuertes, postulados por
Darwin. Por imitación de este proceso, los Algoritmos Genéticos son capaces de ir creando
soluciones para problemas del mundo real. La evolución de dichas soluciones hacia valores
óptimos del problema depende en buena medida de una adecuada codificación de las mismas.
Los algoritmos genéticos usan heurística para la resolución de problemas, lo cual limita
drásticamente el número de datos a utilizar. A continuación, se muestra un ejemplo de estos
algoritmos para resolver un problema utilizando el lenguaje de programación Python.
3
El problema de las N-Reinas - Algoritmos Genéticos
Para poder resolver el problema, debemos enfrentarnos, debemos conocerlo para luego planear
una solución.
El problema de las ocho reinas es un pasatiempo que consiste en poner ocho reinas en el tablero
de ajedrez sin que se amenacen, es decir que se encuentren en su misma fila, columna o diagonal.
El problema de las 8 reinas (o n-reinas ya que dependen del número asignado) consiste en poner
sobre un tablero de ajedrez ocho reinas sin que estas se amenacen entre ellas.
En la siguiente imagen se muestra un ejemplo sobre una posible solución para este problema:
Podríamos buscar un tablero de ajedrez y tratar de hacerlo a mano. O podríamos utilizar nuestros
conocimientos de programadores y resolver el problema.
El problema de las ocho reinas se puede plantear de modo general como problema de las reinas.
El problema consistiría en colocar reinas en un tablero de ajedrez de tal manera que ninguna de
las reinas quede atacando a otras.
4
Hay muchas maneras de resolver este problema, pero en el día de hoy utilizaremos una
herramienta la cual nos va a permitir resolver el problema de manera eficiente.
Utilizaremos Algoritmos Genéticos.
Algoritmos Genéticos:
Un algoritmo genético puede presentar diversas variaciones, dependiendo de cómo se aplican los
operadores genéticos (cruzamiento, mutación), de cómo se realiza la selección y de cómo se
decide el reemplazo de los individuos para formar la nueva población. En general,
el pseudocódigo consiste de los siguientes pasos:
5
Recombinación o cruzamiento: La recombinación es el principal operador genético,
representa la reproducción sexual, opera sobre dos cromosomas a la vez para generar dos
descendientes donde se combinan las características de ambos cromosomas padres.
Mutación: Modifica al azar parte del cromosoma de los individuos, y permite alcanzar
zonas del espacio de búsqueda que no estaban cubiertas por los individuos de la
población actual.
Reemplazo: Una vez aplicados los operadores genéticos, se seleccionan los mejores
individuos para conformar la población de la generación siguiente.
A continuación, se muestra una imagen que muestra los pasos del funcionamiento de un
algoritmo genético:
Algoritmo genético
i: inicialización
f(X): evaluación
?: condición de término
Se: selección
Cr: cruzamiento
Mu: mutación
Re: reemplazo
X*: mejor solución.
6
Solución del Problema:
Ya conociendo el problema y sabemos que herramienta utilizar para la solución solo queda
implementarla. Esto lo haremos en el lenguaje de programación Python y haremos uso del
módulo Deap.
DEAP
Una vez que dispongamos del módulo Deap, podemos proseguir a programar la solución.
7
La función de evaluación calcula el número de reinas R que hay en cada diagonal. El número de
ataques que hay en cada diagonal se puede calcular como R-1.
8
Lo que se hace ahora es crear las poblaciones y los individuos, para que luego obtengamos como
resultado la posible solución.
La función main nos devolverá la población y los individuos que mejor resultado tuvieron.
9
Resultado
10
Ejemplo con 5 reinas.
11
Conclusiones.
Una vez realizado el estudio de este ejemplo se llegaron a las siguientes conclusiones:
12
https://pypi.org/project/deap/
http://eddyalfaro.galeon.com/geneticos.html
http://scielo.sld.cu/scielo.php?script=sci_arttext&pid=S2227-18992016000300004
http://www.pythondiario.com/2018/05/el-problema-de-las-n-reinas-algoritmos.html
https://planetachatbot.com/entendiendo-los-algoritmos-gen%C3%A9ticos-un-caso-de-uso-en-el-
entorno-organizacional-a745c157fa8c
13