¿Cuál es la idea central detrás de los algoritmos genéticos?

Idea principal:

El algoritmo genético es un algoritmo de búsqueda heurística basado en la población, donde mediante el uso repetido de operaciones genéticas, como mutación, selección, cruce, etc., se crean nuevas generaciones sucesivas de mejores poblaciones en la dirección de los objetivos de búsqueda mediante la adopción de principios darwinianos basados ​​en la evolución natural. .

Algoritmo:

  1. El algoritmo de búsqueda se realizará en algunos espacios de parámetros y buscará el rendimiento de los individuos dentro de la población. Tales individuos se llaman fenotipo.
  2. Los parámetros de tales fenotipos están representados por el genotipo para las operaciones genéticas apropiadas, que generalmente se representa por binario como cadenas de ceros y unos. Dichos componentes binarios de los genotipos se denominan genes. Dicha representación del gen como una cadena binaria se denomina genoma binario de tipo genoma y el algoritmo genético se etiqueta como algoritmo genético codificado en binario .
  3. Del mismo modo, las operaciones genéticas para la representación del valor real de un gen o tipo de genoma real también están disponibles, por lo tanto, también es posible el algoritmo genético codificado real . También es posible codificar con cualquier otro tipo de objeto si hay disponibles operaciones genéticas adecuadas para tales tipos de objeto.
  4. Por lo general, el algoritmo genético representa el genotipo en forma de matriz o lista de genes, lo que simplifica la operación de cruce. Otras representaciones también están disponibles como: programación genética para la representación de árbol; programación evolutiva para representaciones en forma de gráfico; programación de expresión génica para una mezcla de lista y árboles.
  5. Además de la representación de genotipo mencionada anteriormente de individuos en el dominio de búsqueda, también se requieren una o más funciones de aptitud para la implementación del algoritmo genético junto con algunas restricciones de igualdad o desigualdad. Cuando el número de funciones objetivo es más de uno, se denomina optimización de objetivos múltiples. La presencia de restricciones en la optimización se denomina optimización restringida.
  6. El algoritmo genético comienza con un conjunto de individuos creados al azar dentro del espacio de búsqueda y luego mejora a través de la aplicación repetitiva de operaciones genéticas para un mejor conjunto de individuos, donde dicho conjunto de individuos en cada iteración se llama generación . El número total de generación es uno de los parámetros libres que se utilizan para terminar el algoritmo.
  7. El tamaño de la población depende del tipo de problema y puede variar de unos pocos cientos a unos pocos miles, aunque el algoritmo microgenético puede funcionar con cuatro o cinco individuos en una población. El tamaño de la población también es uno de los parámetros libres importantes en el algoritmo genético.
  8. La operación genética comienza con el cálculo de la aptitud para cada individuo, que a veces es el costo de cálculo principal del algoritmo. Para la optimización de objetivos múltiples, se debe evaluar cada función objetivo para cada individuo para cada generación.
  9. Durante la generación sucesiva, algunos individuos de la generación principal se seleccionan para crear la próxima generación a través del operador de selección. Las personas más en forma tendrán más peso estocástico para contribuir a la próxima generación. Hay muchas variantes de operadores de selección en la literatura, como la selección proporcional de aptitud (selección de la ruleta), el muestreo estocástico universal , la selección de torneos , la selección de truncamiento , etc.
  10. En algún momento, los mejores individuos son empujados directamente a la próxima generación. Tal operación se llama elitismo o selección elitista. Tal probabilidad de elitismo es también uno de los parámetros libres en el algoritmo genético.
  11. Después de la selección, se lleva a dos o más padres a transmitir rasgos de información genética y, por lo tanto, producen uno o más individuos de la próxima generación, que es similar al cruce biológico del cromosoma. El uso repetido de dicha operación cruzada se utiliza para llenar la población de la próxima generación. Dependiendo de la estructura de datos utilizada para almacenar el fenotipo individual, muchas técnicas de cruce están disponibles en la literatura como: cruce de un punto, cruce de dos puntos, corte y empalme, cruce uniforme, cruce medio uniforme, cruce de varios padres, etc.
  12. Finalmente, para crear diversidad genética en la próxima generación, se usa la mutación como operador genético; Esto altera uno o más componentes de la representación genotípica de individuos estocásticamente, lo cual es similar a la mutación biológica. Están disponibles diferentes tipos de mutación dependiendo del tipo de genoma como: mutación de cadena de bits, bit flip, límite, uniforme, no uniforme, gaussiano, etc.
  13. La probabilidad de mutación también es un parámetro libre en el algoritmo genético. La baja probabilidad de mutación puede conducir a una deriva genética, lo que reduce la variación genética y la convergencia prematura del algoritmo. De manera similar, una probabilidad de mutación muy alta puede perder buenas soluciones a menos que la selección elitista se aplique conjuntamente.
  14. Además de la inspección manual, para terminar dicho algoritmo iterativo, algunos criterios de terminación también se consideran como: uno o más individuos dentro de la población final han alcanzado los criterios, la mejora o el progreso óptimos predeterminados; número preestablecido de generación, tiempo, almacenamiento o cálculo; La generación sucesiva ha alcanzado la meseta de las funciones objetivas, etc.

La principal ventaja del algoritmo genético o la familia completa de algoritmos de algoritmos evolutivos es que, idealmente, no hacen suposiciones sobre los problemas subyacentes, por lo tanto, son adecuados para cualquier problema tan diverso como ingeniería, arte, biología, economía, marketing, genética, investigación de operaciones, robótica , ciencias sociales, física, política, química, etc.

La principal desventaja de dicha familia de algoritmos es la gran cantidad de evaluaciones para las costosas funciones físicas. Se puede utilizar alguna forma de aproximación de la condición física como polinomios, regresión, modelo sustituto, etc. para reducir el costo de la función de condición física real que se debe evaluar para cada individuo de cada generación.

Algoritmo genético pertenece al campo de

  • Inteligencia artificial
  • -> Computación suave
  • -> Computación Evolutiva
  • -> Algoritmo evolutivo y otros algoritmos similares son
    • estrategias de evolución,
    • programación evolutiva,
    • recocido simulado,
    • Adaptación gaussiana,
    • Montañismo,
    • inteligencia de enjambre
      • optimización de colonias de hormigas,
      • optimización de Enjambre de partículas,
      • Partículas autopropulsadas
      • Evolución diferencial
    • programación lineal entera
    • etc.

Permítanme comenzar diciendo: El término “Algoritmo genético” supone que entendemos bien que los genes intentan y resuelven ideas complejas, cuando los genes de hecho simplemente almacenan datos y son el resultado de los genes dominantes de los antepasados ​​de sus propietarios. Un nombre más matemático para un algoritmo genético es “heurístico” o “metaheurístico”, que se utilizan para encontrar soluciones suficientemente buenas.

Para ilustrar la diferencia entre genes y heurística:

En genes, ¿cuál es mejor: cabello rubio o cabello castaño?

En heurística, ¿cuál es mejor: más cerca de un objetivo o más lejos?

Si los humanos fueron criados para tener rasgos específicos (o yesos), eso fácilmente podría interpretarse como “inhumano”. Debido a que los genes y las máquinas que los ejecutan son más pequeños que una onda de luz, y porque solo podemos inferir cómo se leen, copian, almacenan o reparan, siento que como ingeniero de software es arrogante usar el término “algoritmo genético” , y prefiero “metaheurístico” aunque no fluye tan bien de la lengua.

Creo que Steven Skiena lo dijo bien en su libro ” The Algorithm Design Manual “: “Nunca he encontrado ningún problema en el que los algoritmos genéticos me parecieran la forma correcta de atacarlo. Además, nunca he visto ningún resultado computacional reportado usando algoritmos genéticos”. que me han impresionado favorablemente “.

Ahora a las cosas divertidas!

Los algoritmos genéticos comenzaron en 1950, que son relativamente “nuevos” en su naturaleza. Digo nuevo porque la mayoría de la informática se remonta a mucho antes. De hecho, el primer programa fue escrito mucho antes de que existiera una computadora a principios de 1800. Ha habido varios tipos de algoritmos genéticos, pero tienen una cosa en común, no siempre producen resultados suficientemente óptimos, especialmente cuando el problema crece en complejidad.

Introduzca: El “vendedor ambulante”

Un vendedor que viaja a diferentes ciudades quiere elegir la ruta más cercana entre ellas, para ahorrar tiempo, dinero y volver a casa para ver a su hermosa familia. La idea es calcular las permutaciones entre cada ciudad y todas las demás ciudades que deben visitarse para encontrar la ruta más corta. Se ha considerado como el problema matemático más difícil porque cada vez que agrega una nueva ciudad, el problema se cuadra.

Para resolver la fuerza bruta: 10 puntos son fáciles, 100 puntos requieren mucho tiempo, 1000 puntos, 100,000 puntos, 1,000,000 puntos, casi imposible.

Este es un problema que tratamos muchas veces a diario:

  • El correo acaba de llegar, el bebé está llorando, necesito usar el baño y luego pasar por la tintorería. ¿Qué ruta tomo?
  • Me gustaría visitar a mi primo en Florida. Yo vivo en maine ¿Qué ruta tomo?
  • Necesito cortar el pasto. ¿Qué ruta tomo?

Se utilizaron algoritmos genéticos para resolver el problema anterior con cierto éxito y, en algunos casos, pero no estadísticamente cada vez que produciría el resultado óptimo. Luego estaba la hormiga .

A principios de la década de 1990 se descubrió que la hormiga (junto con una abrumadora cantidad de otros seres vivos) estaba programada para encontrar la ruta óptima. Las hormigas son pequeñas, por lo que una corta distancia a ellas es increíblemente importante para la supervivencia. Las hormigas fueron diseñadas para producir una feromona mientras caminan por un camino. Otras hormigas detectan esta feromona y siguen la suite, colocando su propia feromona. Con el tiempo, la feromona se disipa debido a la evaporación. El camino más corto simplemente tiene la feromona más fuerte. Este resultado es un medio sin esfuerzo para encontrar una ruta óptima.

Algoritmos de optimización de colonias de hormigas

Si bien la optimización de la colonia de hormigas no resuelve por la fuerza bruta el problema del vendedor ambulante ni encuentra la solución óptima absoluta , sí encuentra un medio estadísticamente probado de proporcionar una solución lo suficientemente óptima .

Para responder su pregunta sucintamente: la idea central detrás de los algoritmos genéticos es que están diseñados para resolver problemas, algo que la optimización de colonias de hormigas generalmente hace en menos tiempo y con mejores resultados.

Los algoritmos genéticos utilizan una población de puntos para buscar buenas soluciones. Se espera que el uso de una población ayude a resolver el problema de los óptimos locales. Se basa en una analogía con la evolución en el mundo natural basada en los principios de Darwin.

Los principios de Darwin

Darwin propuso que la evolución natural fue impulsada por los siguientes principios

  • Los niños tienden a heredar características de los padres.
  • Hay alguna variación en esas características
  • Algunas características son “mejores” (al crear más niños)

Ahora se sabe que tales características están codificadas genéticamente (en moléculas de ADN) que están sujetas a variación que son introducidas por

  • Mutación: pequeños errores al copiar
  • Crossover: genes transferidos entre cromosomas

Los biólogos llaman a la propensión a tener hijos la “aptitud” de un individuo.

Para crear un algoritmo genético, tenemos una población de puntos en el espacio de búsqueda. Alentamos a los puntos “buenos” (medidos por la función objetivo) a hacer copias de sí mismos con alguna variación. Se espera que mejores y mejores soluciones evolucionarán.

Con lo anterior en mente, aquí está el esquema de un algoritmo genético típico

Algoritmo Genético de Estado Estacionario

  1. Crea una población aleatoria de puntos X
  2. Seleccionar un miembro de la población (según el valor objetivo)
  3. Crea una copia de este punto, con alguna variación
  4. Colóquelo en la población, reemplazando a algún individuo
  5. Ir a 2

Los algoritmos genéticos tienen una buena analogía con la evolución natural [1]. Siempre es bueno tener una buena analogía, pero intentaré agregar un ejemplo.

Imagine que tiene un problema “simple” que se puede describir con una ecuación:

[matemáticas] f (x) = 0 [/ matemáticas]

Usted sabe cómo codificar una función [matemática] f [/ matemática], pero no sabe cómo resolverla para [matemática] x [/ matemática]. Si realmente está decidido a resolver esa ecuación, comenzará a adivinar la solución y verá si se acerca a cero. Si ve que [matemática] f (x_1 = 0.6) = 1000.0 [/ matemática] y [matemática] f (x_2 = 10.0) = 0.1 [/ matemática] puede decir que [matemática] x_2 [/ matemática] es buena solución ya que casi resuelve la ecuación. En comparación, probablemente va a tirar la solución [matemática] x_1 [/ matemática] ya que el valor de una función está muy lejos de cero (por favor, perdóneme por no ser riguroso). Como puede ver, comparamos dos números y elegimos la mejor solución. Por supuesto, es mejor dejar que la computadora adivine por usted. Si sigues esta estrategia, obtienes una optimización aleatoria [2]. La generación aleatoria de soluciones corresponde muy bien a la generación de una población inicial.

A pesar de que las computadoras son más rápidas que los humanos para generar y evaluar soluciones, sería un desperdicio de recursos tomar muestras de soluciones al azar y tirarlas si no son las mejores. Supongamos que para el problema anterior conoce lo siguiente:

[matemáticas] f (x_1 = 0.6) = 1000.0, f (x_2 = 10.0) = 0.1, f (x_3 = 12.0) = 0.05 [/ matemáticas]

Parece que las soluciones [matemáticas] x_2 [/ matemáticas] y [matemáticas] x_3 [/ matemáticas] son ​​mejores que [matemáticas] x_1 [/ matemáticas] y combinarlas de alguna manera parece una buena idea. Esta elección de dos mejores individuos corresponde a la selección . Combinémoslos de tal manera que la solución secundaria producida sea similar a ambos. Para un número real, una opción simple es la media aritmética [matemática] x_4 = 10.5 [/ matemática]. Por lo general, esperamos que esto brinde una mejor solución que al menos uno de los padres. Este procedimiento corresponde al crossover .

Este ejemplo se da en números reales, generalmente las personas explican algoritmos genéticos con matrices de bits, pero la idea es la misma. Como puede ver en el ejemplo anterior, hice números usando la función [math] f [/ math] como un cuadro negro. Esta es posiblemente la mayor característica práctica del algoritmo genético. Permite resolver el problema del que no sabe nada y plantea muy pocos requisitos para resolver el problema.

Notas al pie

[1] Sobre el origen de las especies

[2] Optimización aleatoria

La idea central es seguir el principio de selección natural donde los mejores individuos procrean y los mejores genes pasan a la próxima generación (evolución y adaptación).

Los operadores básicos en Algoritmos Genéticos son la selección, el cruce y la mutación. El operador de selección elige las mejores personas. El crossover genera la descendencia de los mejores individuos. Las operaciones de mutación intentan generar una mejora en un individuo en particular. El crossover tiene la capacidad de escapar del óptimo local en las primeras generaciones, y la mutación es como una búsqueda local.

En general, el algoritmo genético guía la búsqueda aplicando operadores genéticos y manteniendo las mejores soluciones.

Usando una oración: Las características de lo mejor de una población sobrevivirán y pasarán a lo óptimo después de algunas generaciones, en combinación con otros sobrevivientes “calificados”.