Cómo funciona un algoritmo genético, paso a paso
Un algoritmo genético convierte tres ideas de la biología —variación, selección, herencia— en un procedimiento que puedes correr en una computadora.
Lo explico con el problema que usé en el podcast: diseñar un automóvil que sea lo más rápido posible y gaste lo menos posible. Dos objetivos que se pelean.
1. Población inicial
Empiezas con un conjunto de diseños. Cincuenta, por decir un número. Cada diseño es una combinación de características: tipo de llanta, tipo de carrocería, material, peso, motor.
Estos primeros los haces a mano, o al azar, o mezclando ambas cosas. No importa que sean buenos. Importa que sean distintos entre sí, porque la variación es la materia prima de todo lo que sigue.
2. Evaluación por simulación
Aquí está la parte que hace todo esto viable: no fabricas ningún carro. Simulas cada diseño y de cada simulación sacas los dos números que te interesan: velocidad máxima y consumo de combustible.
Esa función que convierte un diseño en números es el corazón del algoritmo. Si mide mal, todo lo demás es inútil por rápido que sea.
3. Selección
Con esos números ordenas los cincuenta diseños y te quedas con los mejores —digamos la mitad—. Los otros se descartan.
Es el equivalente de "sobrevivir y reproducirse", sin ninguna metáfora de por medio.
4. Combinación
Cruzas características entre los sobrevivientes. Le pones a un diseño las llantas de otro. Intercambias carrocerías. Intercambias motores.
De ahí salen cincuenta diseños nuevos, cada uno hecho de pedazos que ya demostraron funcionar. Es la parte que se parece a la reproducción, y es donde está buena parte de la potencia del método: no exploras al azar, recombinas lo que ya sirvió.
5. Mutación
A los diseños nuevos les haces cambios aleatorios, como si te hubieras equivocado al copiarlos: una llanta un poco más grande, un poco más inflada, una curvatura más pronunciada en la carrocería, un motor distinto.
Suena a error introducido a propósito, y es exactamente eso. Sin mutación, el algoritmo sólo puede recombinar lo que ya tenía en la población inicial, y se queda atorado dando vueltas en el mismo vecindario. La mutación es lo único que puede llevarlo a un lugar donde nunca estuvo.
6. Nueva generación, y otra vez
La segunda generación son los mejores de la anterior más los hijos mutados. Con ella vuelves al paso 2: simular, medir, seleccionar, eliminar, combinar y mutar.
Y otra vez. Y otra.
7. Convergencia: cuándo parar
Se repite tantas veces como quieras y como aguante tu procesador. El criterio para parar se llama convergencia: el punto en el que los diseños ya no mejoran, o mejoran tan poco que no vale la pena seguir gastando recursos en la simulación.
No es un número mágico, es una decisión de costo. Estás pagando tiempo de cómputo por mejoras cada vez más chicas, y en algún momento deja de tener sentido.
Lo que sale al final
No sale un carro. Sale un conjunto de compromisos: el más veloz, el más económico, y los intermedios.
Y sale algo que a mí me sigue pareciendo lo mejor del método: diseños que no se parecen a lo que una persona habría propuesto. El algoritmo no tiene intuición de forma, no tiene costumbres, no tiene una idea previa de cómo debe verse un carro. Por eso busca donde nosotros no buscamos.
Este texto sale del episodio 003 del Podcast Algoritmos, sobre la evolución como algoritmo.