Conceitos
Restrições rígidas e flexíveis, com exemplos reais
A distinção parece académica até passar uma semana a contornar as suas próprias regras por ter declarado todas elas invioláveis.
As definições
Uma restrição rígida é uma regra que tem de se verificar em qualquer horário válido. Violá-la não produz um horário pior; produz um horário inválido. Um docente não pode estar em duas salas ao mesmo tempo. Noventa estudantes não podem ocupar uma sala com sessenta lugares. Uma aula prática de química não pode decorrer numa sala de seminários sem hottes.
Uma restrição flexível é uma preferência. Satisfazê-la torna o horário melhor; violá-la torna-o pior, mas ainda utilizável. Um docente prefere não lecionar às sextas-feiras à tarde. Os estudantes não devem ter intervalos de três horas. A lecionação deve ser concentrada em menos dias.
Um motor de planeamento trata-as de forma completamente diferente. As restrições rígidas definem o espaço das soluções admissíveis. As restrições flexíveis definem qual dessas soluções admissíveis é a melhor, e são ponderadas umas contra as outras.
Classificar as regras que já tem
A maioria das instituições tem uma lista algures. Quase nenhuma a classifica.
| Regra | Tipo | Porquê |
|---|---|---|
| O docente não pode lecionar duas sessões em simultâneo | Rígida | Fisicamente impossível; nenhum horário que a contenha é utilizável. |
| A capacidade da sala tem de comportar o grupo | Rígida | A sessão não pode realizar-se. Ocasionalmente atenuada quando se sabe que um grupo não comparece na totalidade. |
| A sessão exige equipamento específico | Rígida | A lecionação não pode ocorrer sem ele. |
| Docente indicado como indisponível na terça-feira de manhã | Rígida | Se o próprio a indicou, trate-a como rígida. É esse o objetivo da disponibilidade em autosserviço. |
| Não mais de seis horas letivas por dia | Normalmente rígida | Muitas vezes é política da instituição ou acordo sindical, e não uma preferência. |
| Pausa para almoço entre as 12:00 e as 14:00 | Flexível ou rígida | Depende da instituição. Torne-a explícita em vez de a presumir. |
| O docente prefere a manhã | Flexível | Uma preferência. Otimize em função dela; não falhe por causa dela. |
| Os estudantes não devem ter intervalos superiores a duas horas | Flexível | Altamente desejável, raramente atingível na totalidade. |
| Lecionação concentrada em menos dias | Flexível | Entra em conflito direto com a linha anterior. É precisamente para isto que serve a otimização. |
| Sala preferida para uma determinada disciplina | Flexível | Normalmente uma conveniência, ocasionalmente rígida quando o equipamento é fixo. |
Por que razão a confusão sai cara
Declarar todas as regras como rígidas parece seguro. Não é. Um conjunto de restrições em que todas as preferências são invioláveis geralmente não admite solução alguma, e o sistema indica, corretamente, que um grande número de sessões não pode ser colocado.
O que acontece a seguir é a parte dispendiosa: alguém passa uma semana a contornar manualmente as restrições, uma a uma, para forçar um resultado, o que é precisamente o trabalho manual que a automatização devia eliminar — e o horário resultante não regista quais as regras que foram flexibilizadas nem porquê.
O erro oposto é mais raro, mas pior. Marcar como flexível uma restrição genuinamente rígida produz um horário que parece completo e contém uma impossibilidade, descoberta na primeira semana pelas pessoas afetadas.
Um teste prático
Faça uma pergunta a cada regra: se fosse violada, a sessão ainda poderia realizar-se?
Se não, é rígida. Se sim, mas alguém ficaria descontente, é flexível. Se a resposta for "depende de quem", encontrou uma restrição política e não uma restrição de planeamento, e é preciso que uma pessoa decida antes de ela entrar em qualquer sistema.
Quer ver isto a funcionar?
Marque uma apresentação online de 45 minutos e percorreremos a solução com base no problema de planeamento de horários da sua própria instituição.