Como funciona o gerador de grade — e como medimos

Atualizado em .

A Sky traduz as regras que você escreve; um motor de otimização (Timefold) posiciona cada aula. Nas regras obrigatórias não há choque: professor, turma e sala nunca ficam em dois lugares ao mesmo tempo. Quando as regras da escola não cabem juntas, a grade mostra quais aulas ficaram de fora e por quê.

Resposta rápida

O gerador tem duas peças. A Sky lê frases como “Profa. Ana só de manhã” e grava cada uma como regra da escola. O motor Timefold aplica 34 regras, separadas em obrigatórias e preferências, e procura a melhor grade. No teste de 24/10/2026, com escolas sintéticas de 40 a 80 turmas, os 30 solves terminaram com todas as aulas na grade e nenhum choque nas regras obrigatórias. Esses choques foram zerados em 0,9 a 2,4 s (4,0 a 6,1 s no primeiro solve de cada JVM); o resto do tempo, até o limite de 69 a 120 s, foi usado para refinar preferências.

1. Dois papéis: a Sky entende, o motor decide

Sky (linguagem natural)

Transforma uma frase em regra: quem, o quê, quando e se a regra é obrigatória ou só uma preferência. Cada regra fica listada na escola; a coordenação confere e apaga a que não quiser. A Sky não escolhe horário de aula nenhuma.

Motor de otimização (Timefold)

Recebe turmas, professores, disciplinas, salas, horários e as regras. Dá a cada aula um horário e uma sala, mede a grade pelas regras e troca aulas de lugar enquanto a grade melhora ou até o tempo-limite.

Por que separar

Um chat sozinho escreve uma grade que parece certa e pode ter o mesmo professor em duas salas. Aqui quem posiciona a aula é o motor, que mede cada choque. A IA só traduz.

2. Regras obrigatórias e preferências

O motor tem 34 regras. Treze delas a escola marca como obrigatória ou como preferência; contando as duas versões, são 47 restrições no código (arquivo TimetableConstraintProvider). Uma regra obrigatória não pode ser ferida: a grade que a fere não é aceita como pronta. Uma preferência pesa na nota da grade, e o motor tenta cumpri-la o máximo possível.

TipoRegras
Sempre obrigatórias (10)Toda aula precisa de horário e sala · professor sem duas aulas no mesmo horário · turma sem duas aulas no mesmo horário · sala sem duas aulas no mesmo horário · sala com o recurso exigido (laboratório, quadra) · capacidade da sala · turma dentro do seu turno · professor dentro dos turnos dele · indisponibilidade do professor por faixa de horário · aula geminada obrigatória em blocos de 2
Sempre preferências (11)Turma na sua sala · evitar a mesma disciplina em aulas vizinhas (fora das geminadas) · horário que o professor prefere evitar · horário que o professor prefere · geminada desejada em blocos de 2 · excesso da mesma disciplina em sequência · janela do professor · janela da turma (pesa três vezes a do professor) · máximo da mesma disciplina por dia · distribuir a disciplina na semana · variar o horário da disciplina
A escola escolhe (13)Indisponibilidade do professor · sala preferida da disciplina · máximo de aulas por dia da turma · mínimo de dias por semana da disciplina · disciplina não antes do período N · disciplina não depois do período N · disciplina exige recurso de sala · máximo de aulas por dia do professor · máximo de aulas consecutivas do professor · máximo de dias por semana do professor · máximo de aulas seguidas da turma · limite de janela do professor · limite de janela da turma

“Sem choque” quer dizer: nenhuma regra obrigatória ferida na grade entregue. Não quer dizer que toda preferência foi cumprida, nem que o motor sabe de uma regra que ninguém cadastrou.

3. Quando as regras não cabem juntas

Algumas combinações não têm solução. Exemplo ilustrativo: a escola escreve “Profa. Ana só de manhã” como obrigatória, e a Profa. Ana tem 30 aulas por semana, mas a manhã tem 25 horários. Não existe grade que cumpra as duas coisas. O motor não coloca a aula num horário proibido para fingir que fechou: as 5 aulas que sobram aparecem como não alocadas, e cada uma traz o motivo numa frase, no formato “Profa. Ana tem 30 aulas na semana e só 25 horários livres.”

O que a tela mostra

A grade com as aulas que couberam, a lista das que ficaram de fora e o motivo de cada uma: falta de horário da turma, professor sem horário livre, indisponibilidade, limite de aulas por dia, falta de sala livre. Quando a conta não nomeia a causa, o motor aponta a regra obrigatória que o encaixe feriria.

O que a escola faz

Afrouxa uma regra (vira preferência), muda a disponibilidade ou divide a carga, e gera de novo. A grade incompleta não é apresentada como pronta.

Tempo esgotado

Se o motor para no tempo-limite com aula de fora, ou se a escola é maior do que o plano compra, a grade sai marcada como “parou no tempo”: é a melhor encontrada até ali, não a melhor possível.

4. Como medimos o tempo: o teste de 24/10/2026

Rodamos o motor do Skedavo num teste automatizado, com o código do commit b11483910e7e, das 22h42 às 23h30 de 24/10/2026 (UTC−4). Cinco tamanhos de escola sintética, gerados pelo próprio teste, cada um com 23 aulas por turma. Cada tamanho rodou em 3 configurações de container e 2 tetos de tempo do plano (90 e 120 s): 30 solves no total.

TurmasAulasTempo-limite do motor (teto 90 / 120)Choques obrigatórios zerados emAulas fora da grade
4092069 s / 69 s4,0 a 6,1 s*0 nos 6 solves
501.15086 s / 86 s0,9 a 1,6 s0 nos 6 solves
601.38090 s / 104 s1,0 a 1,8 s0 nos 6 solves
701.61090 s / 120 s1,1 a 2,0 s0 nos 6 solves
801.84090 s / 120 s1,1 a 2,4 s0 nos 6 solves

* O primeiro solve de cada JVM foi sempre o de 40 turmas, com a JVM ainda fria (compilação JIT). Tempos lidos do relógio do Timefold. “Zerados” = fim da fase de construção e da fase de encaixe, com zero choque nas regras obrigatórias.

O que os números dizem

Os 30 solves fecharam com todas as aulas na grade e nenhuma regra obrigatória ferida. Nenhum parou antes do limite por falta de melhora: o motor seguiu refinando preferências até o fim. Com 70 e 80 turmas, o teto de 120 s deu preferências cerca de 10 a 17% melhores que o de 90 s.

Máquina e limites

Notebook Intel Core i9-13900H, Docker dentro do WSL2 com 4 vCPUs e 7,76 GiB. Containers de 4 CPUs e 2 GB, 4 CPUs e 8 GB (o 8 GB é só nominal: a VM não tinha tudo isso) e 2 CPUs e 3 GB. Java 21. O motor usa uma thread, por isso as três configurações deram resultados praticamente iguais.

Tempo-limite

O tempo que o motor recebe cresce com o número de aulas (cerca de 0,075 s por aula), com piso de 8 s e o teto do plano. Ele também para antes se passar metade desse tempo sem achar grade melhor. A tela mostra o andamento enquanto isso.

5. Limites deste teste e da revisão humana

Escolas sintéticas

As escolas do teste foram geradas pelo próprio teste. Não são dados de clientes. Regras reais mais apertadas pedem mais tempo e podem não caber.

Uma máquina só

Rodou num notebook x86 com outros programas abertos (uso médio de CPU de 74% no Windows). O servidor de produção tem outra CPU, em geral mais lenta: o corte por tempo é o mesmo, mas as preferências podem sair menos refinadas e, em escolas maiores, pode sobrar aula de fora. Não medimos em produção.

O que o motor não sabe

Ele cumpre as regras cadastradas. Combinado de corredor, preferência não escrita ou frase que a Sky entendeu diferente do que a escola quis não entram na conta. Por isso a coordenação revisa as regras listadas e a grade antes de publicar.

Perguntas frequentes

O que quer dizer “sem choque”?

Que, nas regras obrigatórias, o mesmo professor, a mesma turma ou a mesma sala nunca ficam em dois lugares ao mesmo tempo. O motor também não fere as outras regras marcadas como obrigatórias, como turno, sala com o recurso exigido e indisponibilidade rígida.

E se as regras da escola não couberem juntas?

A grade não esconde o problema. As aulas que não couberam aparecem como não alocadas, cada uma com o motivo, por exemplo: o professor tem mais aulas na semana do que horários livres. A escola decide o que afrouxar e gera de novo.

Quanto tempo leva?

No teste de 24/10/2026, com 40 a 80 turmas, os choques das regras obrigatórias foram zerados entre 0,9 e 2,4 s; no primeiro solve de cada JVM, entre 4,0 e 6,1 s. Depois o motor continuou refinando as preferências até o tempo-limite: 69 a 120 s nesses tamanhos.

Esses números valem para a minha escola?

Servem de referência, não de promessa. As escolas do teste são sintéticas, não dados de clientes, e o teste rodou numa única máquina, diferente do servidor de produção. Regras e tamanho mudam o tempo.

Teste com as regras da sua escola

Grátis até 15 turmas, sem cartão. Escreva as regras em português e veja o que coube e o que não coube.

Gerar minha grade grátis