Pular para o conteúdo principal

Restrições

As regras que decidem onde as atividades podem ser alocadas — como adicionar uma, o que o peso realmente significa e por que a ordem da lista importa.

Atividades dizem o que deve ser ensinado. Restrições dizem onde pode ir: este docente está indisponível na sexta-feira, aquele laboratório só pode comportar uma aula por vez, esta disciplina não deve ser a última aula do dia.

Elas são divididas em duas seções, porque o FET as trata como dois problemas separados. Restrições de Horário são sobre quando. Restrições de Local são sobre onde.

Time constraints as FET models them, in a plain list rather than nested dialogs.
Time constraints as FET models them, in a plain list rather than nested dialogs.

As duas regras que você não escreveu

Toda Grade carrega duas restrições que não foram criadas por ela: uma regra básica compulsória para horário e uma para local. Elas são o piso — nenhum docente ou grupo de alunos em dois locais ao mesmo tempo, nenhuma sala com reserva dupla.

O FET as exige, então elas estão sempre com peso total e não podem ser desativadas. Elas aparecem na lista marcadas como Obrigatório, com seu interruptor bloqueado.

Peso é a ideia central

Toda outra restrição carrega um peso entre 0 e 100. Você pode escolher esse número em alguns tipos e não em outros — a regra está mais abaixo nesta página.

100% é rígido. Deve ser cumprido. Se não puder, não há Grade.

Abaixo de 100% é uma preferência, e seu peso indica o quão fortemente você a deseja. Uma regra a 95% será honrada, a menos que honrá-la torne outra coisa impossível; uma regra a 40% é um empurrão. É isso que permite que uma Grade seja boa em vez de meramente legal — você pode expressar Eu preferiria não, mas farei se precisar, que é como as escolas reais funcionam.

A lista rotula cada linha como Rígido ou Flexível exatamente com base nisso, e você pode filtrar a lista por intervalo de peso para encontrar tudo o que você tornou rígido, ou tudo o que você deixou como um desejo.

A maioria dos tipos de restrição não pode ser ponderada. O FET mantém uma lista dos tipos que você pode ponderar livremente, e ele recusa todo tipo que não está nela.

⛔ Isso não é uma formalidade. O FET recusa o valor duas vezes: seu próprio diálogo não o salvará, e seu gerador para antes de começar. Um arquivo que contém um desses tipos abaixo de 100% não lhe dá uma Grade pior. Ele não lhe dá nenhuma.

O editor desabilita o campo de peso para esses tipos e informa o motivo. Portanto, você não pode digitar um número que o FET recusaria.

Mais dois casos forçam 100%:

  • as regras compulsórias acima
  • uma regra de sala preferencial para uma sala virtual que foi fixada a salas reais específicas — um requisito próprio do FET. Este depende do que a regra contém, não do seu tipo, então ele muda conforme você edita a lista de salas.

Há uma ressalva honesta. Um arquivo importado do FET nunca é ajustado, mesmo que contenha uma dessas regras abaixo do peso total. Reescrever silenciosamente o arquivo de alguém quebraria a promessa de que o que entra sai. Assim, a lista mostra o peso que está armazenado, com o motivo exibido como uma dica de ferramenta, em vez de mostrar um número que não está no arquivo.

Adicionando uma

Adicionar abre um seletor de cada tipo de restrição que o FET suporta, agrupado por categoria e pesquisável. Há muitos, e a caixa de pesquisa é o caminho — digite sala, ou lacuna, ou consecutivo, e veja o que existe.

Escolher um tipo abre seu editor, que é construído a partir da própria definição desse tipo, então os campos que você obtém são os campos que esse tipo realmente possui. Ao lado, há um painel de ajuda descrevendo o que a restrição faz. Vale a pena ler: os nomes das restrições são concisos, e vários tipos são vizinhos próximos que diferem em um aspecto importante.

Onde uma restrição precisa de períodos de horário, você não preenche uma lista — você obtém uma grade de dias × horas e clica nas células. Alguns tipos precisam de conjuntos de períodos em vez de uma única seleção; esses lhe dão uma única grade onde cada célula é pintada em um conjunto numerado, para que você possa ver os conjuntos uns contra os outros em vez de manter várias listas lado a lado.

Toda atividade, ou apenas algumas?

Isso confunde as pessoas, e vale a pena declarar claramente: em muitos tipos de restrição, os campos que nomeiam um docente, disciplina ou grupo não decidem quem é afetado — eles decidem quais atividades a regra considera.

Eles são um filtro sobre atividades, não um alvo. Ler um campo de formulário como esta regra é sobre o Sr. Smith quando significa considerar as aulas envolvendo o Sr. Smith leva a regras que silenciosamente não fazem nada. O painel de ajuda para cada tipo diz qual é.

Ordem

A lista tem uma ordem, e não é decorativa: é a ordem em que as restrições são escritas no arquivo exportado.

Arraste as linhas pela alça para organizá-las, ou use Ordenar A→Z para alfabetizar toda a seção e salvar isso. O arrasto é oferecido apenas quando você está visualizando a lista completa em sua ordem natural — enquanto uma pesquisa, ordenação ou filtro a estiver restringindo, a posição para a qual você arrasta seria sem sentido. As regras compulsórias são gerenciadas pelo FET e nunca se movem.

A reordenação pode ser desfeita.

Trabalhando com uma lista longa

A seção possui uma barra de categorias, uma caixa de pesquisa, um filtro ativo/inativo e o controle deslizante de intervalo de peso. Entre eles, você geralmente pode ir de algo está errado com a sexta-feira para o punhado de regras que a mencionam.

Selecionar linhas permite ativar, desativar, definir um peso ou excluir em uma única ação. Desativar é o mais útil — ele mantém a regra e suas configurações enquanto a tira de jogo, que é como você testa se uma regra é o que está tornando sua Grade impossível.

Cada restrição em uma ação em massa é autorizada por si só. Alguém trabalhando através de um link de acesso com escopo muda o que lhe é permitido mudar, e o restante é deixado intocado em vez de toda a ação falhar. Uma mudança de peso em massa também nomeia qualquer coisa que se recusou a mover.

Acima da lista, os editores recebem um resumo de pré-verificação de uma linha. Se ele relatar um conflito de bloqueio, isso é uma prova em vez de um aviso, e vale a pena seguir antes de prosseguir.