Un'anomalia in un orario generato è stata il punto di partenza per un'analisi e una riflessione sulla differenza tra i vincoli di spazio di assegnazione e i vincoli di spazio di preferenza in FET.
Mentre preparavo un orario scolastico mi sono imbattuto nel seguente scenario: due gruppi di studenti, 1L e 1M, fanno come seconda lingua Francese e Spagnolo. Cioè metà 1L e metà 1M fa Spagnolo e le altre due metà fanno Francese; ovviamente nelle stesse ore. Ho creato un'attività che prevede due professori, due gruppi di studenti e una materia chiamata Sp-Fr e tutto sembrava funzionare.
Ad un certo punto, però ho riscontrato un'anomalia. Dato che la scuola in questione è divisa in due plessi, ho definito oltre ai gruppi di studenti anche le aule, in modo da poter assegnare le aule ai plessi. Molto semplicemente ho definito due aule, Prima L e Prima M, assegnate entrambe alla succursale, e ho imposto tra i vincoli di spazio che l'insieme di studenti 1L abbia assegnata la classe Prima L e l'insieme di studenti 1M abbia assegnata la classe PrimaM
Inoltre uno dei due docenti, quello di Spagnolo, ha delle classi sia in centrale, sia in succursale. Quindi ho definito un vincolo di spazio per docenti che imponesse che lo spostamento da un plesso all'altro durasse un'ora in modo da permettere il trasferimento.
Ho generato l'orario è ho trovato che per il docente di Spagnolo erano state imposte ore consecutive in centrale e in succursale. Più precisamente che tra la lezione bilingue 1L/1M in succursale e una qualsiasi lezione in centrale non era garantito l'ora di buco per lo spostamento.
Da una rapida analisi è emerso che il problema era collegato al fatto che l'algoritmo non era in grado di assegnare l'attività ad un aula specifica, perché gli studenti della 1M devono far lezione in Prima M, quelli della 1L in Prima L, quindi una lezione che prevede entrambi i gruppi di studenti non viene assegnata a nessun aula.
Non so se sia un bug, ma probabilmente è voluto. I vincoli di spazio si dividono in FET in vincoli di assegnazione e di preferenza. I vincoli di assegnazione vengono sempre rispettati a meno che non ci sia qualcosa che lo impedisca, come nel caso che mi è capitato. Infatti i vincoli che che legano gruppi ad aule sono di tipo assegnazione.
I vincoli di preferenza, invece, sono più forti, prevalgono su quelli di assegnazione e non possono essere non rispettati.
Per risolvere ho creato un'aula fittizia, chiamata Bilinguismo e assegnata alla succursale, e ho usato un vincolo di tipo: Spazio > Materie > Una materia ha un'aula preferenziale e ho imposto che la materia Sp-Fr avesse come aula preferenziale l'aula bilinguismo.
Ovviamente questa non è l'unica soluzione, ma funziona.
Vi sono mai capitati casi simili? Come li avete risolti?
Per come scaricare FET cliccare sul seguente collegamento.
LEGGI TUTTO...