Metaheurística

Conforme vamos avanzando a lo largo de la semana, los temas cada vez son menos bioinspirados y cada vez más inspirados (inspiracción del autor, quiero decir).

El miércoles es el día de los algoritmos metaheurísticos. Antes de hablar de la metaheuristica, es necesario hacer una breve descripción de lo que es una heurística. La heurística es una serie de procedimientos o estrategias de las que se supone que nos llevan a un destino deseado; pero esto no tiene porque ser siempre cierto. Así, cuando queremos ir hacia el este, podemos establecer un sistema tal como esperar que salga el sol y caminar en dirección hacia el nacimiento del sol. Lamentablemente esta estrategia no nos garantiza que podamos esquivar o sortear la presencia de muros, rios, montañas, pozos y otros elementos.

Las metaheurísticas son pues, heurísticas (recordemos: estrategias) para aplicar heurísticas a nuestro problemas. Estos sistemas han demostrado muy buen rendimiento a problemas de lo más diverso entre ellos podemos hablar de cálculo de horarios en un colegio, sistemas de gestión de stock distribuido en una empresa. o (un objetivo industrial) ordenar una cadena de montaje para optimizar empleados y tiempo.

En general, la metaheurística consiste en un proceso repetitivo de la siguiente forma:

Sobre un problema establecemos una estrategia de ataque del problema: es la heurística subordinada. Esta se emplea para tener una tentativa de solución. Esta tentativa es evaluada para comprobar si es suficientemente buena para nuestros intereses si no cumple con nuestros objetivos, modificamos nuestra solución (aquí entra en juego nuestra metaheurística) y repetimos el proceso hasta que nuestra tentativa de solución sea suficientemente válida.

Se ha comprobado que estos sistemas encuentran solución bastante rápidamente (comparados con otros métodos).

No se si soy capaz de transmitir la sensación que siento, pero esta descripción de metaheurística es aplicable a muchos de los sistemas y procedimientos comentados en las otras entradas. La cuestión es en función de como queramos clasificar o considerar estos sistemas, ya sea por estructura física o estructura lógica o lógica de funcionamiento, podemos considerar algoritmos basados en autómatas celulares, sistemas complejos, metaheurística y otros.

La segunda sesión presentada de la mañana fue centrandose en dos metaheurísticas muy espectaculares y que han demostrado su efectividad en problemas reales. Las colonias de hormigas y el comportamiento de bandadas. En el primer caso nos encontramos con una modelización de hormigas muy local. Es decir, cada hormiga virtual que creamos tiene conocimiento sobre lo que es y donde está. No ve todo el dominio de su problema, solo la parte que tiene delante y se comunica con otras hormigas exclusivamente por efectos de olor (el rastro de olor que dejaron otras hormigas). A parte de efectos visuales como sistemas de apilamiento y clasificación, hay otros resultados más alejados al concepto biológico de hormiga como el ordenamiento de los paquetes de comunicación que permiten que podamos navegar por internet.

La tarde, en vez de una esperada sesión práctica sobre algoritmos metaheurísticos, fue una sesión en el que se nos mostraron otras utilidades reales. en los que se habían empleado estos sistemas. Tales como colocación de antenas de telefonía movil.

Antes de cerrar el día, mencionar una diferencia que también nos han recalcado estos días. Hay dos campos diferenciado de trabajo. En el primero tenermos el estudio académico o de investigación en el que lo importante es demostrar la efectividad e idoneidad a cada algoritmos. Un segundo campo es el del trabajo real, en el cual los datos no están tan estudiados, son los que son. Con los problemas que da trabajar con la realidad. Este segundo grupo, se conforma con "soluciones menos ideales" mientras que funcionen y cumplan con sus objetivos.

Seguiremos informando...