Problemas de restriciones

A veces un problema de aspecto sencillo resulta ser un rompecabezas gigante, con numerosas opciones que pueden ser combinadas de un número exponencial de maneras; por ejemplo, hay más maneras de secuenciar 60 tareas (60! = 60 x 59 x … x 1) que átomos en el universo (unos 10 elevado a 80).

Debido a las restricciones existentes, muy pocas de estas combinaciones son posibles u óptimas. Estos problemas de restricciones son omnipresentes en industria, salud, educación, órden público, logística, etc. Las buenas soluciones a estos problemas tienen un alto impacto sobre costes y beneficios, sobre el bienestar y la productividad de las personas, y también para el medio ambiente.

Las restricciones duras u obligatorias son las que deben cumplirse, por ejemplo, las capacidades o disponibilidades de los recursos (personas, máquinas). Las restricciones blandas expresan las propiedades no deseables a minimizar y las deseables a maximizar. El objetivo siempre es encontrar una solución que cumpla todas las restricciones duras y optimice las blandas. De forma manual, incluso disponiendo de mucho tiempo, una persona sólo suele encontrar soluciones pésimas, o ninguna en absoluto. Usar ordenadores para “probar todas las posibilidades” tampoco es posible, porque puede tardar billones de años, incluso en un supercomputador. Por eso se requieren soluciones algorítmicas sofisticadas.

Barcelogic vs. métodos clásicos

Las técnicas de Constraint Programming (CP) se basan en ir imponiendo las restricciones más fuertes primero (las heurísticas dicen cuáles), mientras se van podando las opciones incompatibles.

En las técnicas clásicas de Investigación Operativa (IO), el problema típicamente se modela como un programa lineal entero o mixto y se resuelve con herramientas matemáticas como el simplex.

En Barcelogic, primero escribimos una especificación precisa del problema, fácil de entender para el cliente y para nosotros, que luego es tratada de forma automática por nuestro software basado en lógica, sin necesidad de modelados, programaciones o heurísticas como en CP o IO.

Esto reduce drásticamente los costes de implantación, especialmente si hay muchas restricciones condicionales (excepciones, implicaciones, reglas, convenios, restricciones de orden entre tareas, etc.). Disponemos de diversas funcionalidades que mejoran la eficiencia y la calidad de las soluciones: aprendizaje automático de fallos durante la búsqueda, backjumping, e implementaciones especializadas.

Podemos adaptarnos fácilmente a los cambios

En este mundo contínuamente hay cambios. Surgen nuevas restricciones, la importancia de las restricciones existentes cambia, y todos los días (o minutos) ocurren imprevistos: personas o máquinas no disponibles, retrasos en materiales o tareas, etc.

Nuestras técnicas basadas en la lógica hacen que sea más fácil, rápido y barato adaptarse a los cambios y encontrar las mejores soluciones temporales.

Ante la toma de decisiones, nuestro software le permite simular y analizar rápidamente y de manera flexible las consecuencias de diferentes escenarios, tales como el incremento o la reducción de determinados recursos.