Risolutore / Algoritmo di generazione automatica
Il risolutore di Omniscol calcola automaticamente il posizionamento delle lezioni di un orario settimanale, ciclico o calendario. Posiziona le lezioni create che non sono ancora collocate, può spostare le lezioni già collocate se ciò migliora l'orario e mantiene le lezioni bloccate al loro posto.
Come funziona
Quando si avvia una generazione, Omniscol predispone un ambiente di calcolo dedicato e parallelizzato. Non c'è alcuna coda da gestire lato scuola; l'inizializzazione richiede spesso circa una decina di secondi prima dei primi calcoli visibili. Il risultato dipende dalla qualità dei dati inseriti: siti, aule, professori, gruppi, volumi orari, disponibilità e incompatibilità. Più i vincoli sono numerosi o contraddittori, più la generazione può essere lunga o produrre un risultato parziale.
Il motore è un'IA di ottimizzazione metaeuristica Monte Carlo neuro-simbolica: combina ricerca stocastica, regole di business simboliche e scoring dei vincoli. Il punto importante è operativo: il risolutore è progettato per casi molto vincolati, segnalando al contempo le situazioni impossibili invece di nascondere i conflitti.
Vincoli rigidi
Il risolutore rispetta rigorosamente i vincoli che renderebbero l'orario non valido:
- un professore non può trovarsi in due luoghi contemporaneamente;
- una classe non può seguire due lezioni contemporaneamente, salvo i casi previsti da gruppi in partizione;
- le disponibilità e i vincoli di livello impossibile bloccano il posizionamento;
- un'aula standard non può ospitare due lezioni nello stesso momento;
- un'aula grande può ospitare più lezioni solo entro i limiti di capacità e di numero di classi configurati;
- le aule specializzate, le capacità, le risorse materiali e gli spostamenti tra siti devono restare compatibili;
- una lezione bloccata conserva la propria posizione.
Vincoli di ottimizzazione
I vincoli morbidi servono a valutare e migliorare le soluzioni trovate. Non vengono ignorati: diventano penalità che il risolutore cerca di ridurre.
Esempi frequenti:
- disponibilità o vincoli indesiderati per un professore, un'aula, una materia, un gruppo o una classe;
- incompatibilità pedagogiche tra materie, per esempio evitare un laboratorio prima della lezione frontale corrispondente, evitare lo sport subito dopo una lezione molto intensa, oppure imporre l'ordine di una progressione;
- evitare di avere due volte la stessa materia nello stesso giorno per una classe;
- minimo o massimo di ore di lezione al giorno o a settimana;
- equilibrio delle giornate;
- riduzione dei buchi negli orari delle classi e dei professori;
- numero di giorni di presenza dei professori, secondo le consuetudini della scuola o del paese.
La ricerca di una soluzione valida è la prima fase. L'ottimizzazione delle penalità può poi diventare la parte più lunga del calcolo.
Disponibilità
- Orari settimanali — disponibile.
- Orari ciclici — disponibile.
- Orari calendario — disponibile con lezioni datate e un intervallo di date.
Cosa fare se la generazione non riesce
Se non viene trovata alcuna soluzione completa, Omniscol conserva il miglior orario calcolato e lascia le lezioni impossibili da collocare nell'elenco dei post-it non posizionati. Può quindi ispezionare l'orario parziale, leggere la diagnostica e correggere i vincoli.
Cause frequenti:
- disponibilità troppo restrittive (un professore non ha alcuna fascia oraria libera compatibile),
- aule insufficienti, oppure nessuna aula specializzata disponibile,
- allineamento incoerente (volumi orari diversi tra i gruppi allineati),
- incompatibilità troppo numerose o troppo rigide,
- effettivo teorico della classe > capacità di tutte le aule candidate.
Vedi Diagnosticare una generazione che fallisce.
Forzare il posizionamento di una lezione
Può bloccare la posizione di una lezione prima di rilanciare la generazione: il risolutore non la sposta più, ma adatta le altre intorno. Utile per ancorare le lezioni «immutabili» (interventi esterni fissati per contratto, esami datati, ecc.).