Ideas clave
- Una restricción dura es una regla de factibilidad. El horario debe cumplirla.
- Empieza con choques de docente, grupo y aula, lecciones requeridas, no disponibilidad docente y jornada lectiva.
- No uses restricciones duras para preferencias que pueden ponderarse con una penalización.
- Si el conjunto duro es imposible, la señal correcta es la inviabilidad, no una infracción oculta.
¿Qué pertenece al conjunto duro?
Incluye una regla en el conjunto duro cuando romperla haría inutilizable el horario. Los ejemplos estándar son choques, lecciones requeridas que faltan, no disponibilidad docente y actividades fuera de la jornada lectiva.
Esta distinción importa porque el solver trata las reglas duras de forma distinta a las preferencias. Debe cumplir cada regla dura. Solo puede optimizar restricciones blandas después de que el conjunto duro sea factible.
Restricciones duras comunes
Usa la política local de horarios, pero revisa primero estas restricciones duras.
- Ningún docente está programado en dos lugares en el mismo periodo
- Ninguna clase o grupo tiene dos lecciones en el mismo periodo
- Ningún aula está asignada a dos actividades al mismo tiempo
- Cada lección requerida está programada
- Los docentes no se programan en periodos no disponibles
- Todas las actividades están dentro de la jornada lectiva
Cómo clasificar una restricción dura
Clasifica cada regla por su efecto sobre la factibilidad. Mantén la pregunta simple: ¿se puede usar el horario si esta regla se rompe?
- Escribe la regla en lenguaje claro.
- Comprueba si evita un choque de docente, grupo o aula.
- Comprueba si protege una lección requerida o un periodo no disponible.
- Comprueba si mantiene las actividades dentro de la jornada lectiva.
- Mueve preferencias como distribución o días compactos al conjunto blando.
- Ejecuta el conjunto duro y trata la inviabilidad como una señal para revisar el modelo.
Por qué demasiadas reglas duras causan inviabilidad
Una restricción dura no es una preferencia fuerte. Si demasiadas preferencias se vuelven obligatorias, puede que no exista un horario factible. El solver no tiene permiso para intercambiar una regla dura contra otra.
Usa restricciones duras para reglas que nunca deben romperse. Usa restricciones blandas para objetivos de calidad como distribución de lecciones, huecos docentes, días compactos o evitar ciertas materias en el último periodo.
Lista de revisión del conjunto duro
Usa esta lista antes de generar.
- Las reglas de choque de docente, grupo y aula están presentes
- Las lecciones requeridas están incluidas en el modelo
- Los periodos no disponibles de docentes están marcados
- Los límites de la jornada lectiva están presentes
- Las preferencias no están marcadas como duras por costumbre
- Cada resultado inviable lleva a revisar el modelo antes de rebajar una regla
Cómo funcionan juntas las restricciones duras y blandas
El primer objetivo es la factibilidad: cada regla dura debe cumplirse. El segundo objetivo es la calidad: el solver minimiza las penalizaciones de restricciones blandas.
Este orden ayuda a explicar un resultado. Un horario con todas las reglas duras cumplidas todavía puede tener mala distribución o huecos docentes. Esos son problemas de calidad que se ajustan en el conjunto blando, no razones para debilitar el conjunto duro.
Preguntas de planificadores sobre restricciones duras
¿Qué hace que una regla del horario sea dura?
Una regla dura debe cumplirse para que el horario sea usable. Si puede romperse con una penalización, es una restricción blanda.
¿La no disponibilidad docente siempre es dura?
Los periodos no disponibles son duros porque el docente no debe programarse allí. Los periodos libres preferidos son blandos porque el solver solo los respeta si el horario lo permite.
¿Qué debe ocurrir si el conjunto duro no se puede resolver?
El generador debe informar inviabilidad. Revisa los datos y el conjunto duro antes de convertir una preferencia en una regla obligatoria.