Programación genética

Programación genética

El algoritmo de programación genética se basa en la genética de poblaciones (incluida la herencia y las frecuencias génicas) y la evolución a nivel de población, así como en la comprensión mendeliana de la estructura (como cromosomas, genes, alelos) y los mecanismos (como la recombinación y la mutación). Esta es la llamada síntesis nueva o moderna de la biología evolutiva.

Los individuos de una población contribuyen con su material genético (llamado genotipo) proporcionalmente a la relevancia de su genoma expresado (llamado fenotipo) para su entorno. La próxima generación se crea a través de un proceso de apareamiento que involucra operadores genéticos como recombinar los genomas de dos individuos en la población e introducir errores de copia aleatorios (llamados mutaciones). Este proceso iterativo puede conducir a una mejor adaptación entre los fenotipos de los individuos de una población y el medio ambiente.

La programación genética se puede desarrollar y utilizar en un proceso adaptativo secundario, donde una evaluación de los candidatos al final de este proceso adaptativo secundario se utiliza para el éxito reproductivo diferencial en el primer proceso evolutivo. Este sistema puede entenderse como las interdependencias experimentadas en el desarrollo evolutivo donde la evolución opera en un embrión que a su vez se convierte en un individuo en un entorno que eventualmente puede reproducirse.

El objetivo del algoritmo de programación genética es utilizar la inducción para diseñar un programa de computadora. Esto se logra mediante el uso de operadores escalables en programas candidatos con una estructura de árbol para mejorar el ajuste entre la población de programas candidatos y una función objetivo. La evaluación de una solución candidata implica su ejecución.

El programa genético utiliza expresiones simbólicas similares a LISP llamadas expresiones S que representan el gráfico de un programa con nodos de función y nodos terminales. Mientras se ejecuta el algoritmo, los programas se tratan como datos y, cuando se evalúan, se ejecutan. El cruce de un grafico El programa siempre es primero en profundidad, y las funciones siempre deben devolver un valor.

El algoritmo de programación genética fue diseñado para la programación automática inductiva y se adapta bien a la regresión tareas simbólicas, de diseño de controladores y de aprendizaje automático bajo el nombre más amplio de aproximación de funciones.

La evaluación (asignación de aptitud) de una solución candidata generalmente tiene en cuenta la estructura del programa, recompensando la parsimonia.

El proceso de selección debe equilibrarse entre la selección aleatoria y la selección codiciosa para sesgar la investigación hacia soluciones candidatas más finas (explotación), al tiempo que se promueve la diversidad útil en la población (exploración).

Un programa puede responder a cero o más valores de entrada y puede producir una o más salidas.

Todas las funciones utilizadas en el conjunto de nodos de funciones deben devolver un resultado utilizable. Por ejemplo, la función de división debe devolver un valor sensible (como cero o uno) cuando ocurre una división por cero.

programación genética