Optimizar una estructura de hormigón no es solo una cuestión de cálculo, sino una batalla contra la entropía. Además, en la búsqueda de la combinación precisa entre la cantidad de acero y la resistencia del hormigón, el ingeniero se enfrenta a un océano de variables en el que la solución «perfecta» suele estar oculta bajo capas de complejidad técnica. Por tanto, el proceso exige no solo rigor analítico, sino también una comprensión profunda de cómo interactúan todos los factores que condicionan el diseño estructural.
Ante este desafío, la ingeniería moderna ha dejado de lado las calculadoras para observar el mecanismo de diseño más refinado de la historia: la selección natural.
Hace más de un siglo, Charles Darwin descubrió que la supervivencia es el resultado de un proceso en el que sobreviven los más aptos y transmiten sus rasgos. Hoy en día, aplicamos este rigor biológico a los algoritmos genéticos. Estos sistemas no solo resuelven problemas, sino que también imitan la vida misma para encontrar respuestas con una elegancia estructural que antes considerábamos inalcanzable.
Lección 1: La evolución no ocurre en el individuo, sino en su código.
Una de las distinciones más profundas de la computación evolutiva es que la mejora de un sistema no se logra manipulando el objeto final (el puente o la viga), sino su receta original. Para que un algoritmo sea verdaderamente evolutivo, debe comprender que el éxito se forja en las estructuras subyacentes, tal y como lo definió Davis en 1991:
«La evolución opera en los cromosomas, en lugar de en los individuos a los que representan».
Este enfoque resulta fascinante por lo contraintuitivo que es: para optimizar una estructura física (el fenotipo), manipulamos un vector binario o un string (el genotipo). Al trabajar con la representación abstracta, permitimos que el código explore cambios profundos sin las limitaciones del diseño inmediato, entendiendo que el cromosoma es el verdadero custodio de la adaptación global.
Lección 2: El diccionario biológico del programador.
Para resolver problemas de ingeniería como si fueran organismos vivos, debemos traducir la realidad física a un lenguaje genético preciso. Ver una solución técnica como un «ser» con ADN transforma radicalmente nuestra metodología de resolución.
- Fenotipo: la solución final y detectable; la expresión física de la interacción genética.
- Genotipo: la estructura o plan maestro a partir del cual se construye el organismo.
- Cromosoma: vector o cadena de datos que almacena información.
- Gen: Cada elemento del vector (un «vagón de tren» en la cadena de datos).
- Alelo: el valor específico que adopta ese elemento (el bit o dato concreto).
- Locus: posición exacta del gen, fundamental porque controla un carácter específico de la solución.
- Aptitud (fitness): función objetivo que mide la capacidad de la solución para sobrevivir en su entorno técnico.
Lección 3: La «ruleta» de la supervivencia y la selección natural.
La selección natural no funciona como un sorteo, aunque tampoco actúa como una sentencia absoluta. Este principio se traslada al código mediante el método de la ruleta. En dicho procedimiento, cada solución se representa por un segmento circular cuya superficie es proporcional a su nivel de aptitud.
Esta «justicia algorítmica» garantiza que los mejores tengan mayores probabilidades de dejar descendencia. Sin embargo, no garantiza el monopolio de la reproducción, ya que los individuos menos aptos mantienen una pequeña probabilidad de transmitir sus genes. Este «caos controlado» es vital, ya que garantiza la diversidad estructural y evita que el algoritmo se estanque en óptimos locales, es decir, soluciones que parecen buenas solo porque el sistema ha perdido la capacidad de mirar más allá de lo inmediato.
Lección 4: Cruzamiento y mutación. El «sexo» de los datos.
La evolución exige novedad. Si nos limitáramos a clonar a los mejores, el progreso se detendría. Por ello, los algoritmos utilizan la recombinación o cruzamiento, mediante el cual dos progenitores intercambian información para crear descendientes con rasgos mixtos. Se destacan operadores sofisticados como el PMX (Partially-Matched Crossover), que copia un fragmento del código manteniendo las posiciones y rellena el resto con valores no utilizados, y el SEX (Strategic Edge Crossover), que busca identificar y preservar secuencias presentes en ambos progenitores.
Pero la mezcla no es suficiente. Es necesaria la mutación para introducir variaciones que no existían en la población original.
«Mutación: modificación espontánea de la información genética».
La mutación actúa como un factor de diversificación radical. Ya sea reemplazando un bit o recombinando elementos al azar sin considerar su aptitud inicial, este mecanismo introduce el «ruido» necesario para sacudir el sistema y permitirle dar el salto a fronteras de eficiencia completamente nuevas.
Lección 5: La memoria es un lastre para la evolución.
Siguiendo la lógica de Holland, uno de los conceptos más disruptivos de la evolución es su capacidad para vivir en el presente absoluto. A diferencia de otros sistemas de optimización que arrastran sesgos históricos, la evolución es un proceso sin memoria en el sentido estricto, ya que es una eficiencia de estado.
Durante la formación de nuevos cromosomas, el algoritmo solo tiene en cuenta la información del periodo inmediatamente anterior. Este enfoque «radical» permite que el sistema converja hacia la excelencia técnica basándose exclusivamente en la eficacia actual de los rasgos, sin verse frenado por configuraciones que fueron útiles en el pasado, pero ya no sirven para afrontar los desafíos del presente. Se podría decir que es una búsqueda de la perfección despojada de prejuicios históricos.
Los algoritmos genéticos demuestran que la naturaleza ya había resuelto los problemas de optimización más difíciles hace millones de años. Al adoptar estas leyes biológicas, la ingeniería no solo encuentra mejores soluciones para sus puentes y edificios, sino que lo hace con una elegancia que solo la evolución puede dictar.
Si principios tan elementales como la herencia y la mutación pueden dar lugar a estructuras de hormigón de una eficiencia asombrosa, ¿qué otros procesos naturales esconden hoy la clave para el próximo gran avance en la inteligencia de nuestro software?
En esta conversación puedes escuchar las ideas más interesantes sobre este tema.
Este vídeo resume bien los conceptos básicos de los algoritmos genéticos.
Aquí tenéis un vídeo en el que explico este algoritmo. Espero que os interese.
Referencias:
DENNETT, D.C. (1999). La peligrosa idea de Darwin. Galaxia Gutenberg. Círculo de Lectores, Barcelona.
HOLLAND, J.H. (1975). Adaptation in natural and artificial systems. University of Michigan Press, Ann Arbor.
MARTÍNEZ, F.J.; GONZÁLEZ-VIDOSA, F.; HOSPITALER, A.; YEPES, V. (2010). Heuristic Optimization of RC Bridge Piers with Rectangular Hollow Sections. Computers & Structures, 88: 375-386. ISSN: 0045-7949. (link)
MEDINA, J.R.; YEPES, V. (2003). Optimization of touristic distribution networks using genetic algorithms. Statistics and Operations Research Transactions, 27(1): 95-112. ISSN: 1696-2281. (pdf)
PONZ-TIENDA, J.L.; YEPES, V.; PELLICER, E.; MORENO-FLORES, J. (2013). The resource leveling problem with multiple resources using an adaptive genetic algorithm. Automation in Construction, 29(1):161-172. DOI:http://dx.doi.org/10.1016/j.autcon.2012.10.003. (link)
YEPES, V. (2003). Apuntes de optimización heurística en ingeniería. Editorial de la Universidad Politécnica de Valencia. Ref. 2003.249. Valencia, 266 pp. Depósito legal: V-2720-2003.

Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-SinObraDerivada 4.0 Internacional.






