Files
school-timetable-manual/13-generazione-orario.md
T
2026-07-16 10:26:56 +02:00

118 lines
4.9 KiB
Markdown

# 13. Generazione dell'orario
È il momento in cui il sistema costruisce l'orario al posto tuo. In questa pagina
imposti l'ambito e le impostazioni, avvii il **motore di ottimizzazione** e ne
segui l'avanzamento in tempo reale.
> Voce di menu: **Timetable → Generate**.
## Prima di iniziare: la lista di controllo
La generazione riesce solo se i dati sono completi. Verifica di aver definito:
- [ ] l'**anno scolastico** ([cap. 4](04-anni-scolastici.md));
- [ ] almeno una **scuola** ([cap. 5](05-scuole.md));
- [ ] gli **orari delle campanelle** per ogni scuola ([cap. 7](07-orari-e-campanella.md));
- [ ] le **materie** ([cap. 8](08-materie.md));
- [ ] le **classi** con **monte ore** e **docenti assegnati** ([cap. 9](09-classi.md));
- [ ] i **docenti** con i loro limiti ([cap. 10](10-docenti.md));
- [ ] le **aule/laboratori** se richiesti ([cap. 6](06-aule-e-laboratori.md));
- [ ] i **tempi di viaggio** se hai più plessi ([cap. 11](11-spostamenti.md));
- [ ] (facoltativo) le **preferenze** dei docenti ([cap. 12](12-raccolta-preferenze.md)).
## Come lavora il motore, in due parole
Il motore prima cerca una soluzione che rispetti **tutti i vincoli rigidi**
(orario *ammissibile*), poi la **migliora** massimizzando le preferenze (orario
*di qualità*). Può trovare **più soluzioni** e proporti le migliori a confronto.
Non devi capire la matematica sottostante: ti basta configurare bene i dati e
scegliere quanto tempo concedergli.
## Passo 1 — Scegliere l'anno e l'ambito
1. Seleziona l'**anno scolastico** di destinazione.
2. Scegli l'**ambito (scope)**:
- **tutto l'istituto** (tutte le scuole e tutte le classi), oppure
- un **sottoinsieme** (alcune scuole o alcune classi).
> **Ambito più stretto = calcolo più rapido.** Generare per una sola scuola alla
> volta è utile per fare prove veloci o per programmare in modo incrementale
> (generi e "congeli" una parte, poi procedi con il resto).
![Pagina di generazione — scelta ambito](img/generate.png)
## Passo 2 — Scegliere il preset e i pesi
Un **preset** è una configurazione salvata che dice al sistema **quanto** dare
importanza a ciascun obiettivo di qualità (i **pesi**).
- Per il **primo orario** lascia il **preset predefinito**: i pesi standard vanno
bene nella maggior parte dei casi.
- In seguito puoi creare preset personalizzati per dare più peso, ad esempio, alla
**riduzione degli spostamenti** o al **rispetto delle preferenze**.
Passando il mouse sulle singole opzioni compaiono dei **suggerimenti** che spiegano
a cosa serve ciascun peso. Per capire *come* i pesi influenzano il risultato, leggi
[Comprendere i punteggi di qualità](14-comprendere-i-punteggi.md).
> **Regola d'oro dei pesi.** I pesi sono **priorità relative**, non percentuali.
> Alzare il peso di un obiettivo lo fa preferire *a scapito* degli altri. Cambia
> **un peso alla volta** e rigenera, così capisci l'effetto di ciascuna modifica.
## Passo 3 — Impostare le opzioni del solutore
Le principali impostazioni tecniche sono:
- **Tempo massimo (timeout):** per quanti secondi il motore può lavorare. Più tempo
gli concedi, migliore può essere la soluzione. Per istituti grandi, aumenta questo
valore.
- **Numero massimo di soluzioni:** quante alternative raccogliere per il confronto.
Puoi partire dai valori predefiniti e regolarli in base ai risultati.
![Opzioni e pesi del solutore](img/generate-options.png)
## Passo 4 — Avviare e seguire l'avanzamento
Premi **Generate** (Genera). Durante il lavoro vedrai un **avanzamento in tempo
reale**:
- il numero di **soluzioni trovate** finora;
- la **qualità** (valore obiettivo) della migliore soluzione trovata;
- il **tempo trascorso**.
Lascia la pagina aperta durante il calcolo. Se la connessione in tempo reale
dovesse interrompersi, il sistema continua comunque a lavorare e aggiorna lo stato
periodicamente.
![Avanzamento in tempo reale](img/generate-running.png)
## Passo 5 — Leggere l'esito
Al termine, il riepilogo mostra:
- quante **soluzioni** sono state trovate;
- la **qualità** della migliore;
- quante **lezioni (voci di orario)** sono state collocate;
- il collegamento per **vedere l'orario** generato.
Da qui passi alla pagina di [Revisione](15-revisione-orario.md), dove le versioni
prodotte si analizzano e si confrontano in dettaglio.
## Se non trova soluzioni
Se il motore **non trova alcuna soluzione**, quasi sempre significa che i vincoli
rigidi sono in conflitto (l'orario richiesto è *impossibile*, non solo difficile).
Le cause tipiche sono monte ore che non entra nella griglia, indisponibilità
eccessive o tempi di viaggio incompatibili. Trovi la diagnostica passo-passo in
[Buone pratiche e risoluzione dei problemi](18-buone-pratiche-e-problemi.md).
---
Prima di confrontare le versioni, impariamo a **leggere i punteggi** che ne
misurano la qualità.
---
[← Precedente: Raccolta preferenze](12-raccolta-preferenze.md) · [Indice](README.md) · [Successivo: Comprendere i punteggi →](14-comprendere-i-punteggi.md)