Es una técnica de aprendizaje automático utilizada para optimizar una población de programas de acuerdo a una función de ajuste o aptitud (en inglés: fitness function) que evalúa la capacidad de cada programa para llevar a cabo la tarea en cuestión.