tipos programacion los geneticos genetico genetica evolutiva ejemplos caracteristicas aplicaciones algoritmos algoritmo terminology genetic-algorithm genetic-programming

terminology - programacion - ¿Cuáles son las diferencias entre los algoritmos genéticos y la programación genética?



programacion genetica aplicaciones (5)

La programación genética es mucho más poderosa que los algoritmos genéticos. la salida de los algoritmos genéticos es una cantidad, mientras que la salida de la programación genética es otro programa de computadora.

Me gustaría tener una explicación simple de las diferencias entre los algoritmos genéticos y la programación genética (sin demasiada jerga de programación). También se apreciarían ejemplos.

Al parecer, en la programación genética, las soluciones son programas informáticos. Por otro lado, los algoritmos genéticos representan una solución como una cadena de números. ¿Alguna otra diferencia?


La programación genética y los algoritmos genéticos son muy similares. Ambos se utilizan para evolucionar la respuesta a un problema, al comparar la aptitud de cada candidato en una población de candidatos potenciales durante muchas generaciones.

En cada generación, se encuentran nuevos candidatos cambiando aleatoriamente (mutación) o intercambiando partes (cruce) de otros candidatos. Los candidatos menos "aptos" son removidos de la población.

Diferencias estructurales

La principal diferencia entre ellos es la representación del algoritmo / programa.

Un algoritmo genético se representa como una lista de acciones y valores, a menudo una cadena. por ejemplo:

1+x*3-5*6

Se debe escribir un analizador para esta codificación, para comprender cómo convertir esto en una función. La función resultante podría verse así:

function(x) { return 1 * x * 3 - 5 * 6; }

El analizador también necesita saber cómo lidiar con los estados no válidos, ya que las operaciones de mutación y cruce no se preocupan por la semántica del algoritmo, por ejemplo, la siguiente cadena podría producirse: 1+/3-2* . Se debe decidir un enfoque para lidiar con estos estados inválidos.

Un programa genético se representa como una estructura de árbol de acciones y valores, generalmente una estructura de datos anidada. Aquí está el mismo ejemplo, ilustrado como un árbol:

- / / * * / / / / 1 * 5 6 / / x 3

También se debe escribir un analizador para esta codificación, pero la programación genética no produce (generalmente) estados no válidos porque las operaciones de mutación y cruce funcionan dentro de la estructura del árbol.

Diferencias practicas

Algoritmos genéticos

  • Tiene inherentemente una longitud fija, lo que significa que la función resultante tiene complejidad limitada
  • A menudo produce estados no válidos, por lo que estos deben manejarse de forma no destructiva
  • A menudo confiamos en la precedencia del operador (por ejemplo, en nuestro ejemplo, la multiplicación se produce antes de la resta), lo que podría verse como una limitación

Programas geneticos

  • Inherentemente tienen una longitud variable, lo que significa que son más flexibles, pero a menudo crecen en complejidad
  • Rara vez produce estados inválidos, estos usualmente pueden ser descartados.
  • Use una estructura explícita para evitar la precedencia del operador por completo

Para hacerlo simple, (en la forma en que lo veo) la Programación Genética es una aplicación del Algoritmo Genético. El algoritmo genético se utiliza para crear otra solución a través de un programa de computadora.


Respuesta práctica:

GA es cuando se utiliza una población y evoluciona las generaciones de la población a un estado mejor. (Por ejemplo, cómo han evolucionado los humanos de los animales a las personas, empapando y obteniendo mejores genes)

GP es cuando, mediante una definición conocida del problema, generar código para resolver mejor un problema. (Por lo general, GP dará muchas declaraciones if / else, que explicarán la solución)


Los algoritmos genéticos (GA) son algoritmos de búsqueda que imitan el proceso de evolución natural, donde cada individuo es una solución candidata: los individuos generalmente son "datos sin procesar" (en cualquier formato de codificación que se haya definido).

La programación genética (GP) se considera un caso especial de GA, donde cada individuo es un programa de computadora (no solo "datos sin procesar"). GP explora el espacio de búsqueda algorítmica y evoluciona los programas informáticos para realizar una tarea definida.