# 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). ## 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. ## 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. ## 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)