0% encontró este documento útil (0 votos)
39 vistas8 páginas

Algoritmos Genéticos: Práctica Interactiva

Este documento explica cómo funciona un algoritmo genético simple donde el usuario interactúa con los datos y funciones de aptitud. Se describen conceptos clave de los algoritmos genéticos como cromosomas, función de aptitud, operadores genéticos y se demuestra una aplicación web para visualizarlos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
39 vistas8 páginas

Algoritmos Genéticos: Práctica Interactiva

Este documento explica cómo funciona un algoritmo genético simple donde el usuario interactúa con los datos y funciones de aptitud. Se describen conceptos clave de los algoritmos genéticos como cromosomas, función de aptitud, operadores genéticos y se demuestra una aplicación web para visualizarlos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Instituto Politécnico Nacional

Escuela Superior de Cómputo

Practica 1 - Algoritmos Genéticos

Profesora:
Cruz Meza María Elena

Integrantes
- Morales Torres Alejandro
- Ramírez Rosas David

Grupo 6CM2

22 / abril / 2024
Introducción
Resumen. - En el presente documento se demuestra cómo funciona un algoritmo genético
simple en donde el usuario tenga cierta interacción con los datos y las funciones fitness.
Además, se explican ciertos temas a tener en cuenta para el desarrollo y entendimiento de esta
práctica.

Marco Teórico

Introducción a los Algoritmos Genéticos


Los algoritmos genéticos (AG) son métodos de búsqueda y optimización inspirados en la teoría
de la evolución natural y los principios de la genética [1][3]. Fueron propuestos inicialmente por
John Holland en la década de 1960 y desde entonces se han aplicado con éxito en una amplia
variedad de problemas complejos.

La idea fundamental detrás de los AG es imitar el proceso de selección natural y la


supervivencia del más apto, tal como ocurre en la naturaleza. Estos algoritmos operan sobre
una población de posibles soluciones, denominadas "individuos" o "cromosomas", que
evolucionan a través de generaciones sucesivas mediante la aplicación de operadores
inspirados en la genética, como la selección, el cruce y la mutación.

Los AG son particularmente útiles en problemas de optimización donde el espacio de búsqueda


es grande, complejo o no lineal, y donde es difícil o imposible aplicar métodos tradicionales de
optimización [4]. Algunas áreas de aplicación incluyen la ingeniería, la ciencia, la economía, la
programación, el aprendizaje automático, entre otras.

Terminología y Conceptos Clave:


- Cromosoma: Representa una posible solución al problema. En los AG, cada
cromosoma es una cadena de valores (generalmente binarios) que codifican las
variables de decisión del problema.
- Función de aptitud (fitness): Es una función que asigna un valor de aptitud a cada
cromosoma, indicando qué tan buena es esa solución para el problema en cuestión. Los
cromosomas con mayor aptitud tienen más probabilidades de ser seleccionados para
reproducirse.
- Población inicial: Es el conjunto de cromosomas generados aleatoriamente al inicio del
proceso evolutivo.
Operadores genéticos:
- Selección: Es el proceso de elegir los cromosomas de la población actual que se
reproducirán para formar la siguiente generación.
- Cruce: Es el proceso de combinar partes de dos cromosomas (padres) para generar
nuevos cromosomas (hijos).
- Mutación: Es el proceso de introducir cambios aleatorios en algunos genes (bits) de un
cromosoma, con el fin de mantener la diversidad genética.
- Generaciones: Son las iteraciones sucesivas del proceso evolutivo, donde se aplican los
operadores genéticos para producir nuevas poblaciones.
- Criterios de parada: Son las condiciones que determinan cuándo se debe detener el
proceso evolutivo, como un número máximo de generaciones o un valor de aptitud
objetivo.

Desarrollo

Elementos de la práctica
La primera parte de la interfaz es un formulario por el cual indicamos la función matemática que
ocuparemos para evaluar los valores aleatorios que se generan gracias al rango y la población
que indiquemos. Debajo de este, se muestra un bloque en donde el usuario podrá ver los
números aleatorios formados con sus respectivas representaciones. Finalmente, del lado
derecho se muestra la gráfica de la función que se eligió en el formulario y con los valores
seleccionados. Véase la ilustración 1.

Ilustración 1. Página de la aplicación web.


Al llenar el formulario y haber obtenido nuestros números a probar en la función se mostrará
como en la ilustración 2.

Ilustración 2. Demostración de la primera función.

En la ilustración 3 se presentan las tres gráficas que el usuario puede elegir.

Ilustración 3. Gráfica de las 3 funciones posibles.


Código
Para la elaboración de esta práctica decidimos utilizar AngularJS para crear una aplicación web
en una sola página y así poder tener esta visualización de todos los componentes en un mismo
sitio. Aquí mostraremos las funciones creadas e implementadas en la práctica.

Ilustración 4. Función elegida por el usuario.

En la ilustración 4 se muestra la parte del código que determina la función matemática a


evaluar y graficar que el usuario haya elegido.

Ilustración 5. Gráfica de la función 1 y su evaluación.

Las siguientes partes del código grafican las funciones matemáticas y las evalúa con los
números que se hayan proporcionado aleatoriamente. Además, determina cuál es el mínimo y
el máximo de estos números en la gráfica. Véase las ilustraciones 5,6 y 7.
Ilustración 6. Gráfica de la función 2 y su evaluación.

Ilustración 7. Gráfica de la función 3 y su evaluación.


Con la función que se muestra en la ilustración 8, logramos que el programa genere los
números aleatorios con sus representaciones de cada número.

Ilustración 8. Código de la generación de números aleatorios.

Con la función presentada en la ilustración 9, conseguimos que el usuario indique un rango de


valores para poder determinar los límites de los números aleatorios que pueden formarse y,
además, elige otro rango que indica cuántos números aleatorios desea formar.

Ilustración 9.Código de la limitación de rangos de valores a tomar en cuenta y rango de valores


a crear.

Conclusiones
Uno de los aprendizajes clave es la importancia de definir adecuadamente la función de aptitud,
ya que esta determina la dirección de la búsqueda y, en última instancia, la calidad de las
soluciones encontradas. Además, el usuario puede apreciar visualmente cómo evoluciona la
población a través de las generaciones, observando la convergencia hacia soluciones cada vez
más óptimas.
Otro aspecto relevante es la comprensión de los parámetros y operadores genéticos, como los
rangos de números aleatorios, las tasas de cruce y mutación, entre otros. El ajuste adecuado
de estos parámetros puede tener un impacto significativo en el rendimiento y la eficiencia del
algoritmo.

Referencias
[1] J. H. Holland, "Adaptation in natural and artificial systems: An introductory analysis with
applications to biology, control, and artificial intelligence," MIT Press, 1992.

[2] "Practice-1_GA," GitHub repository. [Online]. Available: https://github.com/AMorTor/Practice-


1_GA. [Accessed: 26-Apr-2024].

[3] M. Mitchell, "An Introduction to Genetic Algorithms," MIT Press, 1998.

[4] D. E. Goldberg, "Genetic Algorithms in Search, Optimization and Machine Learning,"


Addison-Wesley Longman Publishing Co., Inc., 1989.

[5] K. F. Man, K. S. Tang, and S. Kwong, "Genetic algorithms: concepts and applications [in
engineering design]," IEEE Transactions on Industrial Electronics, vol. 43, no. 5, pp. 519-534,
1996.

También podría gustarte