martedì 7 settembre 2010

L'orario scolastico - FET: un'esempio, l'inserimento dei vincoli di tempo

Condividi questo articolo
Ok, sono ripetitivo ma riprendo l'esempio sul funzionamento di FET che ho preparato e che è scaricabile cliccando sul seguente link:
per parlarvi dei vincoli di tempo in FET.

Dopo aver visto nei precedenti articoli come inserire i dati principali e le attività, vediamo ora come inserire in FET i vincoli di tempo. Premetto che non starò a descrivere ogni possibile schermata e ogni possibile vincolo per tre motivi:
  1. sono molte e finirei di scrivere l'articolo per il 2055;
  2. sono simili tra loro, quindi quel che conta è capire il meccanismo;
  3. spesso con una nuova versione di FET vengono forniti nuovi vincoli da poter utilizzare
Se una volta avviato FET si clicca su "Tempo" si apre la scheda relativa hai vincoli di tempo.

Se si clicca su "Tutti" si apre una finestra che ci permette di visionare, modificare e/o eliminare tutti i vincoli di tempo.

sulla sinistra è possibile vedere la lista di tutti i vincoli di tempo inseriti, sulla destra le caratteristiche del vincolo evidenziato nella colonna di sinistra. In questo caso di tratta del vincolo che impone che una certa attività relativa a lettere deve svolgersi in quattro giorni distinti. Se si clicca sul vincolo evidenziato si apre la finestra relativa al vincolo dal quale è possibile modificare il vincolo stesso, finestra a cui si accede anche dagli altri pulsanti della scheda "Tempo" che ora andremo a descrivere.

Se dalla scheda "Tempo" si clicca su "Interruzione" si apre una finestra, che non ho riportato, dalla quale è possibile inserire, visionare, modificare e/o eliminare un vincolo che ci dice quali sono le ore nel piano orario nel quale non c'è lezione. Ad esempio se avete un orario dalle 8.00 alle 16.00 potreste mettere un' interruzione per consentire la pausa pranzo dalle 13.00 alle 14.00. Se da questa finestra si clicca su "Aggiungi" si apre la seguente finestra:

dalla quale è possibile aggiungere le ore di interruzione cliccandoci sopra. Come scritto sulla finestra le ore di interruzione non sono considerate ore di buco. La voce peso percentuale indica quanto deve essere rispettato questo vincolo, in questa finestra non può essere modificata.

Se dalla scheda "Tempo" si clicca su insegnanti si apre un menù che ci permette di inserire vincoli di tempo relativi agli insegnanti.

Se fate attenzione noterete che le voci del menù si ripetono due volte, una volta nella prima metà di sopra della lista, un'altra volta nella seconda metà di sotto (osservazione, in alcune versioni di FET i due vincoli simili sono contigui nella lista). Avrete già capito la differenza: la prima metà di vincoli è relativa ad un singolo insegnate, la seconda metà è relativa a tutti gli insegnanti. Posso imporre, ad esempio, il numero massimo di ore al giorno docente per docente, oppure per tutti i docenti. Diciamo che se si ha un vincolo uguale per tutti i docenti conviene utilizzare i vincoli relativi a tutti gli insegnanti, altrimenti, se per ogni insegnante ho necessità diverse, devo usare i vincoli relativi al singolo insegnate. E se il vincolo vale per tutti tranne che per uno? Dipende. I vincoli funzionano secondo la funzione logica dell'AND, cioè valgono contemporaneamente. Allora supponiamo, sempre relativamente al vincolo sul numero massimo di ore al giorno per insegnante, che tutti i professori tranne uno debbano fare al massimo 5 ore in un giorno e uno solo al massimo 4. In questo caso nessun problema, metto il vincolo delle 5 ore per tutti gli insegnanti e aggiungo quello delle quattro per il singolo insegnante. I due vincoli non sono in conflitto, e per il docente in questione vince il più stringente, cioè quello delle quattro ore. Problemi sorgono quando invece vorremmo che tutti facessero 4 ore al massimo, ad eccezione di uno con cinque ore. In questo caso se metto il vincolo delle quattro ore per tutti gli insegnanti e quello delle cinque per il singolo insegnante,  comunque, anche per questo rimarrebbe più stringente quello delle quattro ore. Quindi nulla da fare, si è costretti a mettere un vincolo ad personam per tutti i docenti. Mettiamola così,  come vincolo valido per tutti i docenti si deve mettere quello meno stringente, per i singoli docenti possiamo essere stringenti quanto vogliamo.

Non sto a leggere tutta la lista dei vincoli, anche perché dal nome già mi sembrano abbastanza chiari. Alcuni vincoli della lista hanno un lucchetto e se ci cliccate sopra vi viene detto che sono vincoli non perfettamente ottimizzati, che rallentano molto il calcolo e che alcune volte rendono impossibile la generazione dell'orario e vi viene consigliato di utilizzarli con cautela. Possono essere attivati cliccando su "Opzioni" nel menù sotto la barra della finestra e poi selezionando "Avanzate".

Per ognuno dei vincoli della lista se si clicca sul vincolo si apre una finestra che permette di visionare, aggiungere, modificare ed eliminare un vincolo di quel tipo. Come al solito queste finestre hanno sulla sinistra la lista di vincoli, sulla destra il riepilogo del vincolo selezionato nella lista dei vincoli e poi una serie di filtri per selezionare i vincoli di un determinato professore e/o di determinate materie e/o di determinati studenti e/o con determinata chiave.

Ad esempio se dalla lista dei vincoli si clicca su "Ore non disponibili di un insegnante" si apre la seguente finestra:

Se poi clicco su modifica mentre è selezionato il vincolo per il professore di Educazione Fisica delle sezioni B e C si apre la seguente finestra, dalla quale possibile modificare il vincolo (quella per aggiungerli è uguale):

Le "x" indicano le ore nel quale il professore non può fare lezione.

Di seguito è riporta la finestra relativa al "Numero massimo di giorni a settimana per insegnante".

In questo caso stiamo imponendo che il professore di Inglese della sezione A faccia al più tre giorni di lezione.

Una piccola osservazione, non vorrei generare confusione. In (A) è il nome che io nell'esempio ho dato al dicente, il fatto che poi l'insegnante insegni effettivamente Inglese nella sezione A esce fuori dall'inserimento delle attività.

Tutti gli altri vincoli per insegnanti hanno schermate simili, ad eccezione di:  "Un insegnante fa lezione in un intervallo orario massimo n  giorni a settimana", qui riportata

Si tratta di un vincolo utile e interessante per far in modo che i docenti abbiano qualche giorno nel quale escono presto o entrano tardi. Nella scheda mostrata stiamo imponendo che In (B-C) faccia lezione al più tre volte a settimana dalle 13.00 alle 14.00 (orario di fine lezione), cioè gli garantiamo che almeno due volte a settimana non fa l'ultima ora.

Un altra osservazione, prima di chiudere con i vincoli per i docenti. Se invece di selezionare il vincolo per il singolo docente avessimo selezionato il vincolo per tutti i docenti nelle finestre di inserimento non ci sarebbe stata la possibilità di scegliere il docente.

Se della scheda "Tempo" si clicca su "Studenti" si apre un menù a tendina con tutti i vincoli di tempo per gli studenti.

Non sto qui a descriverli in quanto valgono considerazioni del tutto analoghe a quelle per i vincoli di tempo degli insegnati. Le schermate e le finestre sono molto simili.

Se della scheda "Tempo" si clicca su "Attività" si apre un menù a tendina con tutti i vincoli di tempo per le attività.

Se si clicca su una qualsiasi delle voci del menù si apre la consueta finestra divisa in due colonne: nella colonna di sinistra sono riportati tutti i vincoli di quel tipo, in quella di destra le informazioni relative al vincolo selezionato nella colonna di sinistra e una serie di filtri che ci permettono di fare delle ricerche tra i vincoli inseriti. Sono inoltre presenti dei pulsanti che ci permettono di aggiungere, modificare e eliminare i vincoli.

I primi tre vincoli ci permettono di imporre che una determinata attività debba avvenire in determinate ore della settimana. La seguente finestra è relativa all'inserimento del vincolo "Una subattività ha un ora di inizio preferenziale".

Tramite il filtro, o scorrendole, possiamo scegliere un'attività alla quale imporre a che ora e in che giorno iniziare.

La finestra successiva e relativa all'aggiunta del vincolo "Una subattività con id cade in un insieme di ore preferenziali".

Tramite il filtro, o scorrendole si sceglie l'attività; poi si selezionano le ore della settimana in cui può cadere. E' ovvio che se la subattività dura due ore e noi lasciamo una sola ora a disposizione l'orario non può esistere. Viceversa, se diamo più ore della durata dell'attività, magari anche in più giorni, stiamo dicendo al software che può scegliere quando piazzare una determinata attività tra una serie di ore lecite.

La finestra seguente è relativa alla modifica di un vincolo del tipo "Le subattività di una selezione iniziano in un insieme di ore" preferenziali".

In questo caso stiamo imponendo, con peso del 99% che le ore di matematica devono iniziare nelle prime quattro ore della giornata. Un modo per spingere verso l'alto matematica.

Ricapitolando, tutti questi primi vincoli di tempo delle attività permettono di forzare una o più subattività ad iniziare o a cadere in determinate ore. Se ad esempio volete imporre che una certa lezione avvenga un certo giorno in una certa ora questi sono i vincoli che fanno per voi.

La finestra seguente è relativa ad un vincolo del tipo "Numero minimo di giorni tra un insieme di subattività"

In questo caso, ad esempio, stiamo imponendo che le due ore di spagnolo in 2C siano distanziate da almeno un giorno. Molti di questi vincoli possono anche essere inseriti direttamente in fase di inserimento delle attività. Se si mette al vincolo un peso inferiore al 100% si può imporre, nel caso le due attività capitino nello stesso giorno, che debbano essere consecutive.

Le finestre di questo tipo sono divise in due colonne: nella colonna di sinistra sono riportate tutte le attività, in quella di destra le attività del vincolo che stiamo mettendo.

La finestra seguente è relativa al vincolo "Una subattività conclude la giornata degli studenti"

Come si nota il meccanismo di inserimento è sempre lo stesso.

Il vincolo nell'immagine successiva, "Un insieme di attività inizia alla stesso ora (giorno + ora)" permette di imporre che una o più attività avvengano nelle stesse ore.

Il vincolo "Un insieme di sub(attività) non sono concomitanti" ci dice che due attività non devono avvenire contemporaneamente. Nell'esempio l'ho usato per far in modo che se due classi fanno Educazione Fisica contemporaneamente siano due classi parallele, cioè due prime, o due seconde, o due terze.

Il sistema funziona, anche se ad onor del vero la finestra precedente è inutile, perché essendo attività relative allo stesso docente, il professore di Educazione Fisica delle sezioni B e C, è chiaro che non possono avvenire contemporaneamente. Diciamo che ha senso inserire vincoli del genere solo relativamente a docenti diversi. Ad esempio avrebbe avuto senso, e nell'esempio c'è, il vincolo che impone che le due attività di Educazione Fisica della 2B non siano concomitanti con quelle della 3A perché hanno un docente diverso. Purtroppo, per garantire che le ore di Educazione Fisica di classi non parallele non siano concomitanti è necessario inserire un vincolo per ogni coppia di classi non parallele.

Di vincoli di tempo sulle attività ce ne sono anche altri, ma io mi fermo qui perché lo scopo di questo articolo è far capire il meccanismo di inserimento dei vincoli, non descriverli tutti.

Concludiamo la descrizione della scheda relativa ai vincoli di tempo cliccando su "Avanzate".

Dal menù a tendina che si apre è possibile scegliere due opzioni: "Distribuisci le subattività uniformemente nella settimana" e "Rimuovi i vincoli ridondanti". Si tratta di due funzioni delicate da usare con cautela, la seconda permette di eliminare i vincoli inutili, di troppo. Se si clicca sulla prima voce si apre, invece, la seguente finestra:

che permette di distanziare nella settimana in modo uniforme le attività suddivise in due o tre subattività. Io di solito inserisco questi vincoli in fase di inserimento delle singole attività, ma se volete farlo a posteriori potete farlo da qui.

Con questo ho concluso questo lungo articolo sui vincoli di tempo in FET, spero vi sia stato utile, e vi invito a lasciare qualche commento.

Per maggiori informazioni su FET cliccate su questi questi due siti:

2 commenti:

  1. Trovo chiarezza espositiva nonostante ci sia la necessità di condensare il più possibile per non essere prolissi.
    Per i neofiti è un grande aiuto alla comprensione dei meccanismi alla base del software.

    RispondiElimina
  2. Grazie, grazie davvero!

    RispondiElimina

Che ne pensi di questo articolo, ti è piaciuto? Lo trovi interessante? Oppure ti sembra completamente inutile? Hai trovato errori o imprecisioni?

La moderazione, non è attiva, mi riservo il diritto di farne uso in particolari momenti, situazioni o contesti.

Articoli corrlati