Sie sind auf Seite 1von 13

Inteligencia Artificial

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:

¿Cómo resolverías 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:

Los algoritmos genéticos (AG) funcionan entre el conjunto de soluciones de un problema


llamado fenotipo, y el conjunto de individuos de una población natural, codificando la
información de cada solución en una cadena, generalmente binaria, llamada cromosoma. Los
símbolos que forman la cadena son llamados genes. Cuando la representación de los
cromosomas se hace con cadenas de dígitos binarios se le conoce como genotipo. Los
cromosomas evolucionan a través de iteraciones, llamadas generaciones. En cada generación, los
cromosomas son evaluados usando alguna medida de aptitud. Las siguientes generaciones
(nuevos cromosomas), son generadas aplicando los operadores genéticos repetidamente, siendo
estos los operadores de selección, cruzamiento, mutación y reemplazo.

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:

· Inicialización: Se genera aleatoriamente la población inicial, que está constituida por un


conjunto de cromosomas los cuales representan las posibles soluciones del problema. En
caso de no hacerlo aleatoriamente, es importante garantizar que, dentro de la población
inicial, se tenga la diversidad estructural de estas soluciones para tener una representación de
la mayor parte de la población posible o al menos evitar la convergencia prematura.

· Evaluación: A cada uno de los cromosomas de esta población se aplicará la función de


aptitud para saber cómo de "buena" es la solución que se está codificando.

· Condición de término: El AG se deberá detener cuando se alcance la solución óptima,


pero esta generalmente se desconoce, por lo que se deben utilizar otros criterios de
detención. Normalmente se usan dos criterios: correr el AG un número máximo de
iteraciones (generaciones) o detenerlo cuando no haya cambios en la población. Mientras no
se cumpla la condición de término se hace lo siguiente:

 Selección: Después de saber la aptitud de cada cromosoma se procede a elegir los


cromosomas que serán cruzados en la siguiente generación. Los cromosomas con mejor
aptitud tienen mayor probabilidad de ser seleccionados.

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

Es un nuevo marco de computación evolutiva para la creación rápida de prototipos y pruebas de


ideas Busca hacer algoritmos explícitos y estructuras de datos transparentes. Funciona en
perfecta armonía con el mecanismo de paralelización, como el multiprocesamiento y [SCOOP]
(http://pyscoop.org).

Una vez que dispongamos del módulo Deap, podemos proseguir a programar la solución.

Comenzamos importando las librerías necesarias. Como se puede observar, la variable


NB_QUEENS contiene el número de reinas que irán en el tablero, como ya se ha mencionado
anteriormente, el número de reinas depende del programador, en este ejemplo se utilizaran 8 ya
que es el numero típico.

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.

Para mostrar el resultado de manera visual, utilizaremos la librería matplotlib de la siguiente


manera:

9
Resultado

Al ejecutar el script, tendríamos algo como esto:

Como se puede observar, el algoritmo a resuelto el problema de manera rápida.

10
Ejemplo con 5 reinas.

Ejemplo con 10 reinas.

11
Conclusiones.

Una vez realizado el estudio de este ejemplo se llegaron a las siguientes conclusiones:

 El algoritmo genético es un método robusto.


 Al comprender los AG la implementación no es complicada y pueden llegar a tener mucha
aplicación.
 Los algoritmos genéticos son herramientas de amplia aplicación.
 La metodología puede ser generalizada.
 Son elementos que se aplican en áreas como son la medicina, economía, ecología, evolución
y aprendizaje, genética de poblaciones, sistemas inmunes y optimización entre muchas más
aplicaciones.
Para poder entender estos conceptos se necesita saber cómo trabajan cada uno de los operadores
dentro de un algoritmo genético. Conforme se va dando la evolución en cada uno de los aspectos
de la vida cotidiana, se hace un poco más complicado determinar cuál es la opción óptima para
un problema en específico.

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

Das könnte Ihnen auch gefallen