¿Qué es la programación genética?
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 cual el programador escribe instrucciones específicas para que la computadora las lleve a cabo. LISP y Scheme son los lenguajes de programación más comunes para este tipo de trabajo debido a su funcionalidad y flexibilidad de alto nivel. Como resultado de su similitud conceptual con la evolución biológica, la programación genética a menudo se cita como un ejemplo de computación bioinspirada.
Los programas genéticos (GP) funcionan generando y ejecutando miles de programas y elige el más efectivo para usar. Por ejemplo, un GP podría usarse para crear un programa para dibujar un boceto de una fotografía. Lo primero que haría el GP es crear un conjunto de programas que utilicen varias funciones de dibujo por computadora en combinaciones aleatorias. Luego, el GP ejecutaría cada uno de estos programas en orden, enviando los resultados de cada uno a los archivos de imagen.
El siguiente paso para el GP 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 usaría un software de comparación de imágenes para determinar cuál de los dibujos al azar 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 mejores y descartaría el resto. El proceso de selección se conoce como evaluación de aptitud, y generalmente se considera la parte más difícil de la programación genética.
Una vez que se hayan seleccionado los pocos programas principales, el médico de cabecera los usará como la base de 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 crossover. La mutación funciona tomando uno de los programas existentes y haciéndole cambios aleatorios, con suerte para mejor. Crossover, también llamado mejoramiento, funciona tomando dos de los mejores programas y combinando elementos de ellos para crear nuevos programas.
Después de crear un nuevo lote de programas, el GP repite el proceso de ejecución y evaluación, y luego repite los procesos de selección, eliminación y generación. Los médicos de cabecera ejecutarán con frecuencia 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.