Algoritmos Genéticos

ALGORITMOS GENÉTICOS


En esta oportunidad, hablaremos sobre los Algoritmos Genéticos, los cuales son usados actualmente en diversos campos, tales como la economía, las ciencias sociales, sistemas de aprendizaje, entre otros. Este tipo de algoritmos guardan relación directa con el comportamiento natural, el cual fue tomado por la computación como un modelo para optimizar.

¿Qué son algoritmos genéticos?


Los algoritmos genéticos se basan en el proceso genéticos de los organismos vivos. Son métodos que se adaptan a diversas situaciones para la resolución de problemas. Los algoritmos genéticos son capaces de ir generando soluciones para problemas reales y orientados hacia los valores más óptimos.

Dichos algoritmos están basados en un método de búsqueda que imita la teoría de la evolución de Darwin. Para ello, se inicia con una población inicial. De esta población, se seleccionan inidividuos más capacitados para reproducirlos y mutarlos. Posteriormente, se obtiene la generación de individuos más aptos que la anterior.

Chales Darwin publicó en el año 1859 el libro titulado “El origen de las especies” que desató polémica en el mundo científico por sus novedosas ideas que sostenían que las especies evolucionan para adaptarse. De esta manera, el universo pasaba de ser una creación divina y se proponía un conjunto de individuos en constante competición y evolución

De acuerdo con las ideas de la evolución, la computación observa en dicha teoría un claro proceso de optimización, ya que se toman los individuos mejores adaptados, se cruzan, generando nuevos individuos, que contendrán parte del código genético de sus antecesores, y el promedio de adaptación de toda la población se mejora.

En la actualidad, el incremento de su empleo en la ciencia es exponencial. La computación evolutiva se ha vuelto un concepto general adaptable para resolución de problemas reales, gracias, entre otros factores, a que agrega flexibilidad y adaptabilidad en la resolución, combinables con la robustez y las ventajas de la búsqueda global de las soluciones.

¿Qué es un algoritmo genético simple?

El Algoritmos Genético simple también es conocido como Canónico. Este algoritmo necesita una codificación o representación del problema que resulte adecuada. Asimismo, requiere una función de ajuste o adaptación al problema. Durante la ejecución del algoritmo, los padres deben ser seleccionados para reproducción. Luego, dichos padres se cruzarán generando dos hijos; sobre cada uno de ellos, actuará un operador de mutación. El resultado de la combinación de las anteriores funciones será un conjunto de individuos, lo cuales son las posibles soluciones al problema. Los cuales, en la evolución del algoritmo genético, formarán parte de la siguiente población.

Codificación del algoritmo genético:

Los individuos obtenidos, considerados las posibles soluciones al problema, pueden representarse como un conjunto de parámetros, los cuales al agruparse forman una lista de valores conocidos como cromosomas.
En términos biológicos, el conjunto de parámetros que representan un cromosoma particular se denomina fenotipo; el fenotipo contiene la información requerida para construir un organismo, al cual se refiere como genotipo. Durante la fase reproductiva, se seleccionan los individuos de la población para cruzarse y producir descendientes, que constituirán la siguiente generación de individuos. La selección de los padres se efectúa al azar usando un procedimiento que favorezca a los individuos mejor adaptados, ya que a cada individuo se le asigna una probabilidad de ser seleccionado que es proporcional a la función de adaptación.

Parámetros de los algoritmos genéticos:

Tamaño de la población:

Este parámetro nos indica el número de cromosomas que tenemos en nuestra población para una generación determinada. Si el número de elementos no fuese suficiente, el algoritmo genético tiene pocas posibilidades de realizar la reproducción; en consecuencia, realizaría una búsqueda de opciones escasas y poco óptimas; por otro lado, si la población es excesivamente numerosa, el algoritmo será lento e ineficiente.

Probabilidad de cruce:

La probabilidad de cruce indica la frecuencia con la que se producen cruces entre los cromosomas padre, es decir, que exista una probabilidad de reproducción entre ello. En el supuesto caso que no exista probabilidad de reproducción, los hijos serán copias exactas de los padres. En caso de que exista, los hijos tendrán partes de los cromosomas de los padres.

Probabilidad de mutación:

La probabilidad de mutación nos indica la frecuencia con la que los genes de un cromosoma son mutados; si no hay mutación, los descendientes son los mismos que había tras la reproducción. En caso de que haya mutaciones, partes del cromosoma descendiente es modificado y su la probabilidad de mutación es completa (100%) el cromosoma cambia totalmente.

Aplicaciones de los algoritmos genéticos:

Optimización: Esta es la principal aplicación de los algoritmos genéticos y es considerada una característica intrínseca, ya que se han realizado en numerosas tareas de optimización, dentro de las que se encuentra la optimización numérica y los problemas de optimización combinatoria.
Programación automática: Los algoritmos genéticos se han empleado para desarrollar aplicaciones informáticas para tareas específicas. Asimismo, se han usado para diseñar diversas estructuras computacionales tales como el autómata celular, y las redes de clasificación.

Aprendizaje máquina: Los algoritmos genéticos se han empleado también en muchas de estas aplicaciones; por ejemplo, en la predicción del tiempo. También, han servido para desarrollar determinados aspectos de sistemas particulares de aprendizaje, como pueda ser el de los pesos en una red neuronal, las reglas para sistemas de clasificación de aprendizaje o sistemas de producción simbólica, y los sensores para robots.

Economía: En este caso, se ha hecho uso de estos algoritmos para modelar procesos de innovación, el desarrollo estrategias de puja, y la aparición de mercados económicos.

Evolución y aprendizaje: Los Algoritmos Genéticos se han empleado en el estudio de las relaciones entre el aprendizaje individual y la evolución de la especie.

Sistemas sociales: En el estudio de aspectos evolutivos de los sistemas sociales, tales como la evolución del comportamiento social en colonias de insectos, y la evolución de la cooperación y la comunicación.

Desventajas y limitaciones de los algoritmos genéticos:

La implementación de algoritmos genéticos para la solución de problemas reales puede presentar desventajas y limitaciones:

Para problemas de muy complejos, la función de evaluación puede tornarse muy costosa en términos de tiempo y recursos.  Se pueden presentar casos en los cuales, dependiendo de los parámetros que se utilizan para la evaluación, el algoritmo podría no obtener una solución óptima u obtenga resultados no satisfactorios. La teoría nos dice que no posee una buena escalabilidad con la complejidad. Por ejemplo, para sistemas que están compuestos de numerosas variables, componente o elementos, su respectivo espacio de búsqueda crece de manera exponencial, productos de las numerosas relaciones que pueden surgir.

Si quieres conocer más sobre los algoritmos genéticos, te invitamos a ver el siguiente vídeo:


--------------------------------------------------------------------------------------------------------------------------

Por: Braulio Alvarez y Gladys Castillo


--------------------------------------------------------------------------------------------------------------------------



Te invitamos a dejarnos tu opinión respecto al tema.

Comentarios

  1. También considero que al crear un algoritmo genético es definir una representación del problema. El lenguaje utilizado para especificar soluciones debe ser robusto; es decir, debe ser capaz de tolerar cambios aleatorios que no produzcan constantemente errores fatales o resultados sin sentido.

    ResponderEliminar
    Respuestas
    1. Muchas gracias por tu aporte. Efectivamente, para implementar Algoritmos Genéticos se debe utilizar un lenguaje de programación robusto que permita generar las soluciones. Entre los Lenguajes de programación más usado, tenemos JAVA, C, PHP, COBOL, entre otros.

      Eliminar

Publicar un comentario