Uciencia / Revista Uciencia / La huella de Darwin sigue viva / Investigación / Computación evolutiva: El legado de Darwin en la Ingeniería Informática

Francisco José Vico Vela / Responsable del Grupo de Estudios en Biomimética de la Universidad de Málaga

 

cardo

Puede resultar chocante que ya los primeros ordenadores, aquellos con miles de válvulas, interpretaran programas emulando las técnicas evolutivas actuales. Ya en los años sesenta se empezaban a usar los términos “programación evolutiva”, “estrategias de evolución” y “algoritmo genético”. De entre aquellos pioneros, John Holland fue uno de los más influyentes y se le considera el padre de la disciplina, seguramente porque en su obra “Adaptation in Natural and Artificial Systems” nos dejó los formalismos que permiten comprender la potencia computacional de esta tecnología.

 

Sin embargo, no es hasta la última década del siglo pasado cuando el campo de la computación evolutiva florece: la aplicación de los algoritmos genéticos se extiende a una gama muy variada de problemas y nacen estrategias nuevas, como la programación genética. Ya entrado el siglo XXI, el que ha sido denominado siglo de la Biología, la computación evolutiva pasa a ser una de las estrategias representativas en el área de la inteligencia computacional.

 

El velcro se ideó a partir de la capacidad del cardo alpino para sujetarse al tejido / Tanakawho

El velcro se ideó a partir de la capacidad del cardo alpino para sujetarse al tejido / Tanakawho

Pero, ¿qué han aprendido de la evolución biológica las Ciencias de la Computación? La evolución, como proceso transformador de las formas vivas, es una de las ideas que más ha influido en el pensamiento humano desde los antiguos filósofos griegos y era una teoría científica aceptada (aunque no probada) ya en el siglo XVIII. El trabajo de Jean-Baptiste Lamarck a principios del XIX y finalmente la publicación del trabajo cumbre de Charles Darwin On the origin of species (un libro al que se le ha criticado que explique todo sobre la selección natural, excepto el origen mismo de las especies) situaron a la teoría de la evolución en un lugar central para las ciencias de la vida. Por tanto, no es de extrañar que la evolución haya inspirado modelos de cómputo. En efecto, los conceptos de selección natural, adaptación al ambiente y herencia, o los más actuales, como mutación genética, formas alélicas o reproducción sexual, poseen un componente computacional que ha sido interpretado y formalizado por científicos e ingenieros para dar lugar a lo que hoy conocemos como computación evolutiva.

 

¿Cómo puede un programa de ordenador simular la evolución y beneficiarse de ella? La inteligencia computacional es una variante de la inteligencia artificial que se separó de la línea simbólica más tradicional (la de pasar años intentando que un brazo robótico levante una taza de café, para entendernos). Incluye técnicas como las ‘redes neuronales artificiales’, la optimización con enjambres de partículas o la misma computación evolutiva, es decir, estrategias basadas en la inteligencia que emerge de las interacciones en un colectivo, sean neuronas, partículas u organismos. Y así fue: 30 años de sólida inteligencia artificial empezaron a resquebrajarse cuando Rodney Brooks, un investigador del MIT (Massachusetts Institute of Technology), publicó un artículo con el enigmático título de “Elephants don’t play chess”. Los elefantes no juegan al ajedrez, en efecto, aunque les tenemos por seres inteligentes, por tanto, pasemos de los programas para explorar los infinitos senderos mentales de los juegos de mesa a preguntarnos cómo emular, digamos, un ratón de campo. La nueva tendencia reclutó hordas de ingenieros y científicos deseosos de romper los estándares y dejarse influir por nuevas formas de interpretar la inteligencia. Es en este contexto donde debemos entender la atracción que ha despertado el campo de la biomimética, donde se ubica la computación evolutiva como técnica inspirada en la biología. 

 

 

Este proceso quedará más claro ilustrándolo con un ejemplo: el problema del viajante. Éste consiste en encontrar la mejor trayectoria que pasa por un conjunto de ciudades,  para lo que un ordenador puede estudiar todas las combinaciones y decidir cuál es mejor si el número de ciudades es pequeño, pero a medida que aumentan la combinatoria se dispara y los tiempos son excesivos. Esta estrategia, llamada búsqueda exhaustiva, no garantizaría buenas soluciones con un tiempo limitado. Para utilizar computación evolutiva debemos interpretar el problema en clave biológica, es decir, una trayectoria posible es un organismo, cuyo genoma viene dado por el orden en que se visitarán las ciudades (por ejemplo, un vector numérico), el entorno es el mapa de carreteras y el grado de adaptación al entorno de un organismo se mide por los kilómetros recorridos para completar dicha trayectoria (cuanto menor es el recorrido, más adaptada está la trayectoria). Una población inicial de organismos puede ser un conjunto de trayectorias aleatorias.  Esta población, a su vez, podría dar lugar a otra generación de trayectorias mediante operaciones de mutación (pequeñas variaciones en las trayectorias) o reproducción sexual (trayectorias obtenidas por la mezcla de dos trayectorias). Pues bien, lo que Darwin y Wallace nos enseñaron es que cuando las trayectorias de las generaciones futuras se obtienen (por mutación o reproducción) de las mejores trayectorias, la población mejora y tiende a adaptarse al entorno, es decir, que las trayectorias compiten por sobrevivir y dejar descendencia, y sólo  las más adaptadas al entorno lo consiguen.

 

La potencia de la computación evolutiva reside en que sólo necesita una representación de la solución y del problema para obtener, con un algoritmo general, soluciones adecuadas en tiempos razonables, es decir, sin el coste de analizar el problema, encontrar una forma de resolverlo y programar dicha solución. Ésta y otras técnicas similares, como las redes neuronales artificiales, la optimización con sistemas de partículas y la lógica difusa se agrupan dentro del campo de soft computing, es decir, estrategias de búsqueda donde se especifica sólo “qué hay que buscar”, y no “cómo hay que buscarlo”.

 

En este campo la Universidad de Málaga dispone  de varios grupos de investigación que aplican la computación evolutiva a problemas ingenieriles. En concreto, el Grupo de Inteligencia Computacional (GIC) trabaja en extender sus fundamentos a partir del conocimiento biológico: importando estrategias de la genética molecular, modelando sistemas de desarrollo embrionario y analizando la evolución de la complejidad de los organismos. Ejemplo de ello son los trabajos sobre diseño de módulos de aterrizaje, la inferencia gramatical de lenguajes formales y la evolución de estructuras tensegritales - cuya estabilidad depende del equilibrio entre fuerzas de tracción y comprensión - y las arborizadas. Aquí aparece la informática como herramienta fundamental en el cálculo de estructuras a partir de algoritmos genéticos, para lo que se necesitan muchas horas de cómputo en busca de esa evolución de organismos digitales en el entorno binario. De hecho, un clúster de computación puede estar ocupado varios días en la evaluación de soluciones, como las ilustradas en la imagen principal: el diseño de un módulo de aterrizaje que minimice la deformación y la distancia final al punto de impacto. Aplicaciones de este tipo podrían ser de interés para naves espaciales que tengan como misión la exploración planetaria.

 

Como puede comprobarse, la biomimética es y será un campo con líneas de investigación apasionantes y desafiantes, que exigen una gran capacidad de abstracción y multidisciplinariedad para demostrar, una vez más, que la naturaleza  es sabia.