Podemos afirmar felizmente que disponemos de un motor capaz de encontrar de forma eficaz los horarios más exigentes. Pero como saben ustedes, para optimizar los horarios primero es necesario encontrar resultados completos. Desgraciadamente, al trabajar con la planificación del horario habrán experimentado que se introducen condiciones imposibles de cumplir. Ahora quizá la cuestión más controvertida en la utilización del generador de horarios sea cómo determinar, de forma previa al uso del motor, si hay condiciones imposibles. ¿Se puede saber qué condiciones impiden los horarios completos?
El motor es el componente que en última instancia debe encontrar la solución por lo que no siempre es posible saber a priori si existen condiciones imposibles de satisfacer. Y esto es estrictamente cierto; hay condiciones imposibles de cumplir que son muy difíciles de analizar. Sin embargo, sí es posible determinar muchas de las condiciones imposibles; casi todas las que se introducen inadvertidamente impidiendo los resultados completos.
El motor de GHC encaja resultados muy rápidamente. Esto es un hecho. Si el motor no encuentra resultados de forma rápida y se obstina en dejar sin encajar alguna sesión en repetidos intentos, la mayor parte de las veces es debido a que hay alguna condición que lo impide y que se debe depurar. Otras veces, al motor le cuesta un poco más de tiempo y esfuerzo encontrar una solución completa si éstas son más singulares. ¿Debemos esperar? Y si sospechamos que existen alguna condición imposible, ¿cuál es?
Disponemos de dos procesos que nos pueden ayudar a comprobar de forma previa al uso del motor si existen condiciones imposibles de cumplir: la validación de la configuración del planificador y el analizador de conjuntos mínimos imposibles de encajar.
El proceso de validación examina algunas de las causas más comunes que puedan impedir los resultados completos. Por ejemplo, que se han asignado más horas a un grupo de alumnos de las que caben en su marco horario o que se han prefijado diferentes sesiones a la misma hora con el mismos profesor.
Por otra parte, el analizador de conflictos intenta solucionar por separado los horarios de cada profesor, de cada grupo de alumnos, etc. De forma que, si no puede solucionar alguno de estos subconjuntos, lo reducirá a un mínimo de sesiones imposibles de encajar. Si el analizador encuentra un conjunto mínimo de sesiones que no encajan, será más fácil ver qué ocurre, es decir, qué condiciones interfieren entre sí dentro de este reducido número de sesiones.
Aunque no es lo más común, como ya hemos indicado, puede haber horarios para los que el motor no encuentra solución que aparentemente no encierran conflictos. Efectivamente, existen horarios sin errores de validación y para los que el analizador no encuentra conflictos, que sin embargo contienen condiciones que impiden las soluciones. Para estos caso disponemos de una tercera herramienta que nos puede ayudar en gran medida: el depurador de condiciones imposibles. El depurador de condiciones permite lanzar el motor y también el analizador, sin unas u otras de las condiciones estrictas inicialmente configuradas. El depurador de condiciones es muy útil para lanzar pruebas flexibilizando las condiciones estrictas y así saber cuáles impiden las soluciones.
Existen otras estrategias de depuración, cómo intentar asignar directamente desde el editor las sesiones que no se han podido encajar para ver qué mensajes aparecen o comprobar en el resultado incompleto dónde quedan los huecos en el horario de los grupos, por si el problema es alguna reunión o la existencia de un exceso de posiciones prohibidas a los profesores, coincidentes a la misma hora.
No queremos dejar de afirmar que la labor de hacer los horarios académicos es lo suficientemente compleja como para que, además de contar con las mejores herramientas, sea necesaria la pericia de quien las use. No deje de pedirnos toda la ayuda que necesite. En todo caso, el mérito de hacer los mejores horarios siempre será el suyo.
Muy buen articulo, muy recomendable! Saludos.