Istruzioni di Liviu Lalescu
aggiornamento del 30 settembre 2007
traduzione di Marco Barsotti del 7 novembre 2007
Questi sono alcuni accorgimenti che dovrete seguire per inserire insiemi di dati che sarà possibile risolvere.
Se ottenete un orario impossibile e la scuola permette di iniziare le lezioni ad ore successive alla prima, provate a riconsiderare i vincoli "presto" per le classi e / o sostituirne alcuni con vincoli di indisponibilità / interruzione nelle ultime ore. Inoltre la rimozione o l'alleggerimento del peso di altri vincoli potrebbe essere di aiuto. Se FET non riesce a trovare un buon orario per la tua scuola, scrivi all'autore e digli come FET può essere migliorato. Forse piccole modifiche al tuo file dati possono portare a soluzioni migliori o forse ci sono aspetti che devono essere modificati in FET.
Un orario impossibile potrebbe anche essere dovuto ad una errata divisione degli anni. Verificate le statistiche degli studenti per tutti i sottogruppi: ogni sottogruppo dovrebbe avere le ore necessarie, non di meno. Se avete per esempio alcuni sottogruppi diciamo con meno di 20 ore alla settimana potreste scontrarvi con un orario impossibile, probabilmente a causa di un errore di suddivisione degli anni o per attività aggiunte scorrettamente. Ogni sottogruppo è indipendente e dovrebbe avere un totale ore di studio alla settimana vicino alla media di tutti i sottogruppi. Consultate le FAQ per maggiori informazioni.
0) Impostate i giorni e le ore di insegnamento. Per garantire prestazioni ottimali, è meglio indicare l'esatto numero di ore al giorno che vi servono, e non di più. E' una buona prassi scegliere un valore per il numero di giorni e il numero di ore fin dall'inizio (se occorre potrete cambiarli in qualsiasi momento in seguito).
1) E' possibile utilizzare per il vincolo "numero minimo di giorni" il peso preferito. Esso può essere del 95%, 99,75% o addirittura il 100%. Se si specifica un valore al di sotto del 100% (99,75% o anche più) per un vincolo impossibile, FET è in grado di rilevare che è impossibile e ottenere comunque un orario alla fine; il peso è soggettivo. L'orario migliore potrebbe scaturire preferendo pesi del 99,75% per tutti (o quasi) i vincoli, ma il tempo di generazione potrebbe essere molto maggiore che scegliendo invece il 95%.
Si potrebbe provare prima il 95%, valore minimo raccomandato, quindi alzare il peso percentuale fino al 99,75% o anche fino al 100%. Se volete cambiare il 95% con un altro valore per tutti i vincoli di questo tipo, il modo più semplice è in Dati / Vincoli di tempo / Numero minimo di giorni tra attività, dove a partire dalla versione 5.3.6 vi è un semplice comando per questo.
Si potrebbero scegliere diversi pesi per diversi vincoli del tipo "numero minimo di giorni" (per esempio assegnando un valore più alto a corsi con un numero inferiore di attività settimanali)
2) Se abbiamo un corso con 4 attività per settimana, lezioni difficili, che si preferisce programmare all'inizio della giornata (diciamo che 3 lezioni su 4 dovrebbero svolgersi nella prima metà del giorno), è possibile inserire il vincolo di orari preferiti (si indica un insieme di ore preferenziali per un gruppo di attività) per le prime tre attività, con orari preferenziali nella prima metà della giornata e peso percentuale del 100% o poco meno. Potreste lavorare con un editor di testi con il file .fet per aggiungere questi vincoli se vi sembra più semplice. Questo metodo ha funzionato molto bene con i dati di una scuola superiore tedesca. Alternativamente, potreste usare il vincolo di orari preferiti per attività (un insieme di attività ha un insieme dei ore preferenziali) con peso inferiore al 100% per attività difficili da piazzare. Questo ultimo metodo è più semplice usare, ma i risultati potrebbero non essere così soddisfacenti.
3) Per il modo in cui è concepito e funziona l'algoritmo, la generazione automatica è più veloce se si usa il vincolo di indisponibilità di studenti (o insegnanti) e/o il vincolo di ore preferenziali per più attività al fine di specificare ore prive di lezioni, in aggiunta al possibile utilizzo del numero massimo di ore al giorno per studenti e/o insegnanti. Per esempio, se sapete che il quinto anno avrà soltanto ore dalle 8 alle 13, è meglio aggiungere studenti non disponibili in aggiunta al vincolo di numero massimo di ore al giorno. Se possibile, provi a seguire questo consiglio. Questo trucco aiuta a guidare meglio FET verso una soluzione.
Ogni vincolo di tipo non disponibile o ore preferenziali che filtra via le ore impossibili può portare un miglioramento nella velocità.
4) Vincolo "presto" nell'orario degli studenti: è un vincolo restrittivo che impone l'inizio delle attività degli studenti alla prima ora disponibile nella giornata (tenuto conto di possibili interruzioni o indisponibilità). Nel caso che qualche vincolo "presto" sia troppo restrittivo e la vostra scuola accetti di iniziare le lezioni successivamente, potreste dovere usare alle ultime ore delle giornate i vincoli per studenti non disponibili e/o interruzioni o altri vincoli. Potreste provare a usare il vincolo "presto" solo con alcuni insiemi di studenti.
Per esempio, se gli allievi X non sono disponibili il lunedì dalle 8 alle 9 e sono disponibile nelle altre ore, aggiungendo il vincolo "presto" per gli studenti X, essi dovranno iniziare ogni giorno (tranne il lunedì) alle 8 e il lunedì alle 9.
Inoltre, se si immettono soltanto dati parziali, si potrebbero ottenere orari impossibili (altre informazioni nelle FAQ).
5) Per i buchi nell'orario degli insegnanti: si noti che FET prenderà in considerazione i buchi se glielo chiederete, aggiungendo il vincolo del numero massimo di buchi alla settimana. È normale aggiungere tali vincoli dopo che abbiate verificato che i vostri dati sono risolvibili, usando come numero massimo di buchi un valore che sembri accettabile e abbassandolo man mano che si trovano nuovi orari.
6) Immettere soltanto i vincoli necessari alle aule speciali (palestre, laboratori ecc.) Non occorre definire tutte le aule. Potreste in primo luogo provare a generare un orario senza aule, vedere se è fattibile e, allora, aggiungere le aule ed i vincoli a loro riferiti.
7) E' possibile avere istituti nei quali gli studenti lavorano in turni (per esempio, le prime classi al mattino e le ultime classi al pomeriggio). Si consultino le FAQ per informazioni su come fare (in pratica occorre aggiungere i necessari vincoli di studenti non disponibili).
8) Il nuovo algoritmo (dopo la versione 5.0.0) non accetta attività quindicinali. Ma si può usare un trucco. Consultare le FAQ per la descrizione su come fare. (In pratica occorre definire una attività con la somma di insegnanti e di studenti di entrambe le attività quindicinali).
9) Anche se occorre molto tempo per generare il vostro orario con una certa serie di vincoli, se aumentate il peso percentuale dei vincoli stessi, la produzione del nuovo orario potrebbe non rallentare molto. Si consiglia di provare ad appesantire i pesi dei vincoli dopo aver già ottenuto soluzioni, perchè in questo modo si possono ottenere risultati migliori.
10) Se un vincolo ammette valori di peso inferiori a 100%, si può utilizzare qualsiasi peso, compresi anche numeri decimali come 99,75%. Ciò potrebbe essere utile con vincoli come numero minimo di giorni, aule preferenziali, o numero massimo di ore giornaliere ecc...
11) Ogni aula può ospitare una singola attività per volta. Se si dispone di una grande sala che può ospitare più attività contemporaneamente, si deve usare un piccolo trucco. Si possono definire più aule che rappresentino, insieme, questo ambiente più grande e aggiungere vincoli di aule preferenziali. C'è una voce nelle FAQ al riguardo.
12) Se qualche insegnante ottiene giorni con una sola ora di lavoro, si può aggiungere il vincolo del numero minimo di ore al giorno per insegnante (ad esempio 2 ore), ma occorre assicurarsi che l'orario sia possibile. Questo vincolo è intelligente e tiene conto solo di giorni non vuoti.