Passaggio 7 — Generazione automatica

Una volta create le lezioni, le si posiziona sulla griglia. Costruire un orario è nella pratica un ciclo, non un gesto unico:

  1. si collocano alcune lezioni a mano — per ancorare gli elementi immutabili o bloccare vincoli forti (interventi datati, esami, fissaggi manuali);
  2. si genera (tutto o in parte) affinché l'algoritmo collochi il resto sotto vincoli;
  3. si regola ai margini — correggere un caso particolare, spostare una lezione, cambiare idea;
  4. e il tutto può ripetersi: si rigenera man mano (lezioni aggiunte, oppure — in modalità calendario — per intervalli di date, per lotti di classi o di sedi).

Si può anche fare tutto 100% a mano, senza algoritmo. Il posizionamento manuale (collocare, spostare, bloccare, una a una o in lotto) ha la sua pagina dedicata: Posizionamento manuale. Per il flusso d'insieme, veda Panoramica del modulo.

Questa pagina tratta la generazione automatica.

Disponibilità

Disponibile sugli orari settimanali, ciclici e a calendario. In modalità calendario, le lezioni sono collocate su date reali e le opzioni possono limitare l'intervallo di date da generare.

Preparazione

Prima di cliccare Generare un orario:

  • espanda la scheda Generazione (denominata Verifica su un orario a calendario) per verificare le statistiche globali,
  • corregga le allerte critiche (rosse) — bloccano la generazione,
  • rilegga gli avvertimenti (arancioni) — non bloccano ma segnalano un rischio (disponibilità troppo vincolanti, capacità al limite, ecc.).

La schermata indica anche:

  • numero di lezioni create vs lezioni posizionate,
  • volumi orari inseriti vs servizi orari dei professori,
  • gruppi assegnati ad almeno una lezione (per individuare i gruppi dimenticati o inutilizzati).

Avvio

Clicchi su Generare un orario. Omniscol avvia un ambiente di calcolo dedicato e parallelizzato. La durata dipende dalla dimensione dell'orario, dal numero di vincoli e dalle opzioni scelte. Non c'è alcuna coda da gestire sul lato scuola; l'inizializzazione richiede spesso circa una decina di secondi prima che il calcolo cominci realmente.

Il calcolo è limitato a venti minuti, ma nella pratica è ben oltre il necessario: un orario di circa 200 lezioni risponde spesso in una ventina di secondi — l'algoritmo è quasi istantaneo, è soprattutto l'avvio della macchina a pesare — e circa 600 lezioni in un minuto circa. Per un istituto molto grande che si avvicinasse a questo limite, il team Omniscol può aumentare la potenza della macchina di calcolo, su richiesta.

Opzioni di generazione

Per impostazione predefinita, la generazione colloca tutte le lezioni create e non posizionate. Può anche spostare lezioni già posizionate se ciò migliora l'orario. Le lezioni bloccate mantengono la loro posizione.

Il menu delle opzioni consente in particolare di:

  • gestire le aule con tre scelte: assegnazione ottimizzata per impostazione predefinita, sola verifica, oppure ignorare completamente le aule;
  • selezionare solo determinate classi o determinate materie;
  • limitare un orario a calendario a una finestra di date mirata;
  • ignorare le aule già assegnate o i posizionamenti attuali;
  • assegnare solo le aule senza ricalcolare l'intero posizionamento;
  • avviare una generazione rapida senza ottimizzazione;
  • consentire il posizionamento flessibile sulle sotto-fasce della griglia oraria quando l'orario utilizza sotto-fasce.

I parametri avanzati di ottimizzazione consentono inoltre di ridurre i buchi, evitare due lezioni della stessa materia lo stesso giorno, distribuire le lezioni, fissare minimi o massimi di ore, o scegliere il numero di giorni di presenza dei professori. Gli usi variano a seconda dei paesi: in Francia, alcuni istituti cercano di ridurre il numero di giorni di presenza dei professori; in altri contesti, si può al contrario preferire distribuire tali giorni, ad esempio per organizzare altri incarichi in sede.

Opzioni specifiche della modalità calendario

In modalità calendario, le opzioni avanzate possono limitare la generazione a una finestra di date mirata più breve dell'intervallo totale dell'orario. È utile per generare solo una parte dell'anno: test su un mese, costruzione progressiva di un semestre, o ripresa di un periodo già preparato.

L'altra opzione importante è il compattamento delle giornate per le classi. Per impostazione predefinita, l'algoritmo cerca piuttosto un equilibrio sui giorni disponibili; se si genera solo una parte delle lezioni dell'anno, questo comportamento può distribuire artificialmente le lezioni. Il compattamento consente di richiedere un raggruppamento:

  • a inizio finestra;
  • a fine finestra;
  • senza preferenza di inizio o fine, ma mantenendo le giornate il più compatte possibile.

Come lavora la generazione

Comprendere la logica dell'algoritmo aiuta ad anticipare ciò che collocherà, ciò che sacrificherà e come orientarlo. Persegue due obiettivi, in quest'ordine:

  1. Far entrare tutto — la priorità assoluta: posizionare tutte le lezioni rispettando i vincoli rigidi.
  2. Ottimizzare la qualità — una volta che tutto entra, ridurre i buchi, uniformare le giornate, onorare le preferenze.

Parte da uno stato pulito (le lezioni bloccate mantengono il loro posto, le altre vengono rigiocate) e colloca dalla lezione più difficile alla più facile. La difficoltà deriva soprattutto dalla ristrettezza dei vincoli: una lezione il cui professore è disponibile solo un pomeriggio a settimana, o un blocco di quattro ore da collocare in un solo pezzo, passa in testa. A parità di difficoltà, alterna le materie e tratta le più rare prima delle più comuni, per distribuire equamente le possibilità di ciascuna.

Quando non entra tutto: il sacrificio

Se l'orario è troppo vincolato per collocare tutto, l'algoritmo non rinuncia: sceglie il più piccolo insieme di lezioni da mettere da parte affinché il resto entri, poi ottimizza questo orario parziale. Le lezioni sacrificate restano nella barra dei post-it da posizionare. Poiché l'ordinamento ha dato priorità al più difficile e al più raro, sono piuttosto lezioni facili e numerose a cedere: la 5ª ora di una materia ad alto volume prima dell'unica ora di una materia rara.

Lei mantiene il controllo su questi arbitrati: blocchi le lezioni che non devono mai spostarsi — collocate in via prioritaria, non vengono sacrificate — e allenti il sovravincolo (fasce aperte, disponibilità) dove è possibile, affinché l'insieme entri.

Vincoli rigidi e vincoli flessibili

Non tutti i vincoli hanno lo stesso valore:

  • Rigidi — mai violati: l'occupazione (un professore, una classe, un gruppo, un'aula o una risorsa non è utilizzata due volte nello stesso momento), le fasce contrassegnate Indisponibile (in nero) su un professore, una classe, un'aula, una materia o un gruppo, l'assenza di un'aula o di una risorsa libera sulla fascia, i giorni chiusi, le posizioni bloccate e gli allineamenti.
  • Flessibili — tutto il resto, che l'algoritmo può infrangere al prezzo di una penalità per riuscire a collocare tutto: le fasce contrassegnate Indesiderato (in rosso — da evitare, non vietate) e le preferenze di ottimizzazione (compattezza, distribuzione, raggruppamento per giorno…). Un vincolo di priorità elevata pesa di più di uno di priorità bassa, ma nessuno è bloccante. L'algoritmo tenta anche allentamenti puntuali (posizionamento sulle sotto-fasce della griglia…) quando è il prezzo da pagare per non sacrificare alcuna lezione.

Verificare senza ottimizzare

L'opzione di generazione rapida (senza ottimizzazione) avvia una passata alleggerita che risponde soprattutto a una domanda: entra tutto? Utile per testare la fattibilità di una configurazione prima di investire il tempo di un'ottimizzazione completa.

Risultato

  • Banner verde: generazione riuscita. Le lezioni del perimetro richiesto hanno potuto essere posizionate e il risultato può essere ispezionato.
  • Banner rosso: non è stata trovata alcuna soluzione completa. Il miglior orario calcolato resta visualizzabile e le lezioni non posizionate compaiono nella barra dei post-it per la diagnosi.

Veda Diagnosticare una generazione che fallisce.

Consolidare o copiare

Dopo una generazione riuscita, Omniscol propone due opzioni:

  • Consolidare nell'orario in corso (il posizionamento sostituisce quello esistente).
  • Creare una copia (l'orario attuale resta intatto, il risultato ottimizzato diventa un nuovo orario).

Se prevede di rigenerare in seguito (perché sta costruendo in modo incrementale, ad esempio), non consolidi: altrimenti le lezioni già posizionate diventerebbero punti di partenza per la nuova generazione.

Bloccare una lezione prima di riavviare una generazione

Su una lezione già posizionata, utilizzi il lucchetto di posizione per bloccarla. La generazione successiva non la sposterà ma regolerà le altre lezioni attorno. Comodo per ancorare le lezioni « immutabili » (interventi esterni fissati, esami datati, aggiustamenti manuali…). Dettagli completi in Bloccare una lezione: blocco in massa, effetti sulla diagnosi (rosso → arancione), comportamento dell'algoritmo.

Esportare un orario in JSON

Il pulsante esporta solo l'orario corrente in formato JSON. Non è l'export completo dell'account documentato in Importazione ed esportazione.

Casi tipici:

  • conservare una traccia di una bozza o di uno scenario prima dell'eliminazione;
  • archiviare uno stato intermedio prima di una riorganizzazione importante;
  • trasmettere questo orario specifico al team Omniscol nell'ambito del supporto.

Come per l'esportazione completa dell'account scuola in JSON, la reimportazione non è un uso standard liberamente accessibile sul lato scuola.

E poi

Passaggio finale: Pubblicare (attivare) un orario.

How-to

Avviare una generazione automatica

  1. La generazione automatica posiziona le lezioni sulla griglia rispettando decine di vincoli (disponibilità, capacità, allineamenti, specializzazioni, alternanze). Disponibile su orari settimanale, ciclico e a calendario.

  2. Verifichi la scheda Generazione. Le statistiche globali vi compaiono: lezioni create vs posizionate, volumi orari inseriti vs servizi dei professori, allerte critiche (rosso — bloccano), avvertimenti (arancione — avvisano senza bloccare).

  3. Corregga le allerte rosse prima di avviare. Finché ne restano, la generazione non può partire — salvo forzare tramite il menu "altre opzioni", ma ciò non è raccomandato. Le arancioni vanno arbitrate ma non impediscono la generazione.

  4. Imposti le opzioni di generazione se necessario: aule da assegnare, solo verificare o ignorare; classi o materie mirate; generazione rapida senza ottimizzazione; ignorare le aule già assegnate o le posizioni attuali. In modalità calendario, le opzioni avanzate consentono anche di limitare la finestra di date generata e di compattare le lezioni a inizio periodo, a fine periodo o senza preferenza.

  5. Clicchi su Generare un orario. L'elaborazione gira in background; la schermata indica lo stato della generazione e consente di ispezionare il risultato quando è disponibile.

  6. Salvi quando il punteggio Le va bene. L'orario è posizionato. Passaggio successivo: passi in rassegna gli eventuali conflitti, regoli a mano i casi particolari (veda Posizionamento manuale), poi pubblichi.

  7. E poi: Pubblicare (attivare) un orario.

See also