Un nuevo algoritmo evolutivo, diseñado por investigadores de la Universidad de Córdoba, es capaz de sugerir la solución más eficiente para resolver complejos problemas informáticos. El objetivo es usar la inteligencia artificial para ayudar a ingenieros de software a crear aplicaciones como las que se emplean en grandes almacenes y hospitales.
Espacios de trabajo con muchos empleados y recursos, como unos grandes almacenes o una fábrica, suelen emplear programas informáticos complejos para sus gestiones de logística, distribución o venta, por ejemplo, con diferentes módulos y funcionalidades interconectados. Si surge un problema en algún punto de este sistema, generalmente se acude a ingenieros de informática para solucionarlo y evitar que se expanda.
Ahora, el grupo de investigación Knowlege Discovery and Intelligent Systems (KDIS) de la Universidad de Córdoba (UCO) ha propuesto una alternativa a la figura del preciado especialista: la inteligencia artificial. Han diseñado un algoritmo que es capaz de sugerir la solución más eficiente para resolver el problema informático. Es la primera vez que, para la resolver estas dificultades, se emplea un algoritmo evolutivo, llamado así porque su funcionamiento está basado en la teoría de la evolución.
Para afrontar el diseño de los denominados sistemas complejos de software y minimizar los errores que en estos puedan surgir, se requieren respuestas precisas y rápidas. Es fácil de imaginar la desesperación que podría cundir en unos grandes almacenes si hay un fallo desconocido en el sistema de venta o en un hospital si se bloquea la aplicación de citas.
“Hoy en día, las grandes organizaciones que emplean este tipo de software complejo contrata a los mejores ingenieros de software para dar con la solución”, explica José Raúl Romero, del departamento de Informática y Análisis Numérico de la UCO e investigador del grupo KDIS. La alternativa a acudir a la experiencia del experto, “que por naturaleza es subjetivo y puede errar”, es explorar todas las opciones para dar con la solución idónea.
Sin embargo, para realizar este tipo de análisis tan profundo se necesita tiempo, y, en muchas ocasiones, no se dispone de él. La propuesta de este equipo, el uso de inteligencia artificial, aporta un abanico de buenas soluciones de una manera más rápida, “lo que lo convierte en la alternativa más eficiente”, subraya Aurora Ramírez, estudiante de doctorado.
El algoritmo está inspirado en cómo la vida se abre camino en la naturaleza: la evolución biológica. Los algoritmos evolutivos generan soluciones al azar, al igual que surgen las variaciones en las nuevas generaciones de individuos en organismos vivos y se produce la evolución de las especies. El algoritmo sigue este proceso evolutivo, seleccionando primero una serie de soluciones para el problema dado.
Entre estas soluciones candidatas tiene lugar un proceso similar al de la reproducción en la vida, cruzando a los padres para que produzcan hijos con diferentes características de sus progenitores. También pueden mutar directamente las soluciones para potenciar las características deseadas. “Como en la naturaleza, sobreviven los más adaptables y mejores, por lo que podemos hallar el resultado buscado”, indica el investigador principal del grupo KDIS, Sebastián Ventura.
Acudir a la arquitectura software
El uso de técnicas de búsqueda para la resolución de problemas es uno de los planteamientos de los sistemas inteligentes, y una de las líneas de investigación del equipo que dirige Ventura. Empleada ya con éxito en robótica o en videojuegos, “este tipo de tecnología ofrece una solución teórica para que luego el técnico ofrezca soluciones específicas”, indica el responsable del grupo de investigación. Actuando como apoyo, la inteligencia artificial puede ayudar especialmente a ingenieros noveles, a los que les falta experiencia. En todo caso, ahorra cálculos de variables en la búsqueda de soluciones a estos difíciles problemas.
En la búsqueda de un problema en software complejo, los ingenieros informáticos tienen que acudir a la raíz, que es la arquitectura software. Esta arquitectura es la base sobre la que se asienta todo el sistema, sus módulos y sus funcionalidades. El algoritmo de inteligencia artificial busca el origen del problema en las diferentes partes de la aplicación para descubrir esta arquitectura software.
Por este motivo, una parte del estudio se basó en un análisis de sensibilidad, esto es, la configuración más adecuada del algoritmo. Ajustado el mismo, los ingenieros trabajaron en mejorar el rendimiento del algoritmo sobre un software complejo real y lo compararon con la respuesta de expertos. El balance, el diseño del algoritmo y material adicional ha sido publicado en una web y el trabajo de investigación en la revista Information Sciences.
Referencia bibliográfica:
Aurora Ramírez, José Raúl Romero, Sebastián Ventura; ‘An approach for the evolutionary discovery of software architectures’; Information Sciences, volumen 305, 1 de junio de 2015, páginas 234–255.