La programación genética es el proceso de usar un programa de computadora para escribir otro programa de computadora usando una metodología basada en algoritmos evolutivos. Este proceso a menudo se compara con la programación lineal, en la que el programador escribe instrucciones específicas para que las lleve a cabo la computadora. LISP y Scheme son los lenguajes de programación más comunes para este tipo de trabajo debido a su alto nivel de funcionalidad y flexibilidad. Como resultado de su similitud conceptual con la evolución biológica, la programación genética se cita a menudo como un ejemplo de computación bioinspirada.
Los programas genéticos (GP) funcionan generando y ejecutando miles de programas y eligen el más eficaz para usar. Por ejemplo, un médico de cabecera podría usarse para crear un programa para dibujar un boceto de una fotografía. Lo primero que haría el médico de cabecera es crear un conjunto de programas que utilicen varias funciones de dibujo por computadora en combinaciones aleatorias. Luego, el médico de cabecera ejecutaría cada uno de estos programas en orden, enviando los resultados de cada uno a archivos de imagen.
El siguiente paso para el médico de cabecera es seleccionar el mejor de esos programas del conjunto. Este proceso es generalmente la parte más difícil de la programación genética. En el caso del programa de dibujo, el médico de cabecera utilizaría un software de comparación de imágenes para determinar cuál de los dibujos aleatorios era más similar a la imagen que el software intentaba dibujar. De los programas generados aleatoriamente, el médico de cabecera seleccionaría los primeros y descartaría el resto. El proceso de selección se conoce como evaluación de la aptitud y generalmente se considera la parte más difícil de la programación genética.
Una vez que se hayan seleccionado los primeros programas, el médico de cabecera los utilizará como base para un nuevo lote de programas. Cada nuevo lote se llama generación. Las dos formas de crear la nueva generación son la mutación y el cruce. La mutación funciona tomando uno de los programas existentes y realizando cambios aleatorios en él, con suerte para mejor. El crossover, también llamado mejoramiento, funciona tomando dos de los programas principales y combinando elementos de ellos para crear nuevos programas.
Después de crear un nuevo lote de programas, el GP repite el proceso de ejecutarlos y evaluarlos, y luego repite los procesos de selección, eliminación y generación. Los médicos de cabecera suelen ejecutar cientos de generaciones antes de encontrar un solo programa con un resultado satisfactorio. A pesar de esta limitación, la programación genética es una forma común de resolver algunos tipos de problemas informáticos difíciles, incluida la ingeniería robótica y los problemas de inteligencia artificial.