Lunes 12 Diciembre 2022
Lunes 12 Diciembre 2022
En el inLab FIB es habitual charlar y compartir anécdotas con los compañeros con los que compartes espacio de trabajo, a pesar de que no siempre llegas a trabajar conjuntamente. La idea de colaborar en un mismo proyecto nos llevó a apuntarnos a la hackathon HackEPS.
Así que este pasado sábado 26 de noviembre, nos levantamos bien temprano para ir todos juntos hacia la Escuela Politècnica Superior de Lleida, donde nos esperaba un acontecimiento cuidadosamente organizado por la asociación juvenil LleidaHack que contaba con la participación de unas 160 personas. Entre estas, enseguida encontramos algunas caras familiares: unos cuántos de los organizadores de la HackUPC que, si habían asistido buscando nuevas ideas, a buen seguro que encontraron, puesto que durante toda la hackathon se ofrecieron diferentes actividades, retos y charlas que aportaron positivamente en la experiencia.
La jornada empezó con una presentación en un anfiteatro donde se explicaban, entre otros cosas, quienes eran los organizadores, que se podía hacer a la hackathon, qué normas se tenían que seguir y qué comidas se nos ofrecerían. Seguidamente subieron, una a una, las cinco empresas que hacían de sponsor del acontecimiento, a revelar qué eran los retos que proponían. Nuestro equipo, tomando atención a los requisitos que se estaban exponiendo, pensábamos que había algunos de más o menos interesantes, y más o menos alineados con el que consideramos que son nuestras habilidades. Finalmente, cuando Origen Studio propuso un reto centrado en constraint programming enseguida estuvimos de acuerdo en que era en el que queríamos competir.
El reto se subdividía en tres partes. Las dos primeras se basaban al desarrollar un algoritmo de scheduling para asignar un conjunto de tareas de un pedido a diferentes máquinas para ser ejecutadas. Había una lista de restricciones que contemplaban dependencias entre tareas, a qué máquinas se podían ejecutar, etc. que la solución encontrada tenía que cumplir. Este tipo de problema se asemeja mucho a los que los estudiantes de computación de la FIB se encuentran a las prácticas de la asignatura Lógica a la Informática (LI), donde se busca definir un conjunto de átomos, variables y predicados que generan una fórmula en CNF (Conjunctive Normal Form) donde, posteriormente, un SAT solver es capaz de encontrar una solución, o bien determinar como insatisfactible.
Usamos las herramientas que conocemos (Prolog) para crear una solución al primer problema que encontraba la distribución de tareas óptima. Al segundo problema se hacían ciertas ampliaciones que imposibilitaban atacarlo de la misma forma, puesto que los casos eran exponencialmente más difíciles y encontrar el óptimo era inviable. A pesar de que dedicamos ciertos esfuerzos obteniendo algunos progresos, finalmente no lo solucionamos del todo. En todo caso, el equipo pivotó a tiempo para conseguir el tercer punto, que era hacer una visualización del resultado del algoritmo implementado, de forma que cualquier persona pudiera entender la asignación propuesta. Creamos una simple aplicación web que compilaba el programa Prolog con la entrada del problema, extraía el resultado, y lo devolvía al navegador para ser visualizado.
Finalmente presentamos nuestra solución al jurado de la empresa que ofrecía el reto, los cuales se sorprendieron de que usáramos Prolog, puesto que no lo conocían. Después de las presentaciones hablamos un rato y nos dieron algunas intuiciones de como reducir la complejidad del segundo problema sacrificando que la solución fuera óptima, y nos recomendaron hacer una mirada las Google Optimization Tools” para considerar una alternativa basada en IA y funciones heurísticas.
Para clausurar el evento, estamos contentos de haber sido premiados por el esfuerzo con la primera posición, y de próximamente recibir un par de gafas de realidad virtual que tenemos muchas ganas de probar! Además, nos han comunicado que nos han otorgado el premio "Josep Maria Ribó" por buenas prácticas de programación!