Files
school-timetable-manual/13-generazione-orario.md
T
2026-07-16 11:08:15 +02:00

118 lines
5.0 KiB
Markdown

# 13. Generazione dell'orario
È il momento in cui il sistema costruisce l'orario al posto vostro. In questa pagina
impostate l'ambito e le impostazioni, avviate il **motore di ottimizzazione** e ne
seguite 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. Verificate 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 assegnate ed assegnati** ([cap. 9](09-classi.md));
- [ ] le **docenti** ed 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 avete più plessi ([cap. 11](11-spostamenti.md));
- [ ] (facoltativo) le **preferenze** delle docenti e 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 dovete capire la matematica sottostante: vi basta configurare bene i dati e
scegliere quanto tempo concedergli.
## Passo 1 — Scegliere l'anno e l'ambito
1. Selezionate l'**anno scolastico** di destinazione.
2. Scegliete 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
> (generate e "congelate" una parte, poi procedete 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** lasciate il **preset predefinito**: i pesi standard vanno
bene nella maggior parte dei casi.
- In seguito potete 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, leggete
[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. Cambiate
> **un peso alla volta** e rigenerate, così capite 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 concedete, migliore può essere la soluzione. Per istituti grandi, aumentate questo
valore.
- **Numero massimo di soluzioni:** quante alternative raccogliere per il confronto.
Potete 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
Premete **Generate** (Genera). Durante il lavoro vedrete un **avanzamento in tempo
reale**:
- il numero di **soluzioni trovate** finora;
- la **qualità** (valore obiettivo) della migliore soluzione trovata;
- il **tempo trascorso**.
Lasciate 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)