CLASSI ABBINATE AUTOMATICAMENTE E SENZA ACCAVALLAMENTI IN PALESTRA, UNA POSSIBIL

Started by alege, September 21, 2025, 01:20:32 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

alege

Ciao a tutti,

 È la prima volta che scrivo sul forum, intanto, un sentito, enorme, ringraziamento a Liviu Lalescu per aver sviluppato FET, quello che credo essere il miglior software orario attualmente in circolazione, se non altro per l'efficacia e l'efficienza dell'algoritmo (e comunque l'interfaccia, seppur meno user friendly di altri software, e ne ho confrontati tanti..., fa comunque il suo lavoro).
Raccomando l'uso di FET a tutti i colleghi oraristi che mi chiedono consiglio.

Riprendo un tema più volte discusso nel forum (con riferimento al caso specifico del mio istituto);
forse non ho cercato abbastanza a fondo, ma non ho letto la possibile soluzione che riporto qui.

Scuola con due plessi, "sede" e "succursale" (per cui è necessaria un'ora per il "trasferimento" per i docenti che nello stesso giorno hanno lezioni in entrambi i plessi).
Le lezioni, per biennio e triennio, sono su cinque giorni settimanali;
quelle del triennio da sei (o sette per le classi con potenziamenti) moduli giornalieri, per un totale di trenta (o fino a trentatré) moduli settimanali;
quelle del biennio da cinque o sei moduli giornalieri, per un totale di ventisette (o fino a ventinove per le classi con potenziamenti) moduli settimanali.

In sede abbiamo una palestra che può accogliere due classi in parallelo (in FET inserite come aula della "sede": "palestra sede 1" e "palestra sede 2").
Le classi della succursale fanno scienze motorie in un'altra palestra, tra l'altro condivisa con altri istituti, quindi con particolari restrizioni orarie (in FET inserita come: "palestra succursale").
Le lezioni di scienze motorie in palestra sono sempre blocchi da 2 moduli consecutivi.

Arrivo ora al punto. Per evitare "problemi" nell'uso degli spogliatoi nella palestra ("palestre") della sede, da sempre, si fa in modo che non sia possibile che una classe faccia lezione,
diciamo nella "palestra sede 2", nelle due ore a cavallo del cambio fra le lezioni contigue di due classi che fanno lezione nell'altra palestra, la "palestra sede 1" nell'esempio.
Con il software usato in precedenza, per forzare questa situazione, si "bruciavano" tutti i terzi moduli di lezione rendendoli non disponibili per le lezioni e si aggiungevano ulteriori vincoli a seconda di quanti classi in sede c'erano ogni anno.

Con FET ho risolto così, e qui vorrei consigli su potenziali miglioramenti:

-se il numero di classi che fanno ginnastica in sede è PARI uso il VINCOLO DI TEMPO SULLE ATTIVITA' (in "Others (2)"):

A SET OF ACTIVITIES OCCUPIES MAX TIME SLOTS FROM SELECTION

Imponendo che tutte le attività di ginnastica in sede occupino un numero di moduli ("slots") pari al numero (C) delle classi (i moduli effettivi sarebbero, se tutti disgiunti, al massimo 2C, ma con un numero pari di classi accoppiate l'occupazione "in parallelo" viene C). Il vincolo ha sempre funzionato benissimo e permette di non abbinare a mano le classi in partenza lasciando così più libertà a FET per cercare orari complessivamente migliori (vedi ulteriori vincoli e desiderata....). Il limite di questa strategia è che funziona solo se il numero di classi è pari.

-se il numero di classi che fanno ginnastica in sede è DISPARI, non ho trovato di meglio che ricondurmi al caso precedente...ma in un modo un po' "sporco": aggiungo una classe, in sede, e un docente (ovviamente poi rimossi dalle stampe) che come attività fanno solo ginnastica in palestra sede, per minimizzare il numero di "attività fittizie" da aggiungere (alla fine, per non trattare la classe fittizia in modo diverso dai vincoli imposti con "all students" e permettere gli "abbinamenti" giusti devo darle almeno 30 moduli)
Il docente fittizio ha un'attività con 9 componenti, 4 da 6 moduli (per "riempire" 4 giorni di attività della classe, che deve, come ogni classe, "entrare" al primo modulo e "uscire" al sesto...), 2 da 2 moduli e 3 da 1 modulo: uno di quelli da 2 sarà quello che si abbina a una vera classe in palestra, gli altri servono a completare l'orario della giornata della classe senza limitare le possibilità di abbinamento del "bimodulo fittizio di ginnastica abbinato". A questo punto uso il vincolo precedente. Il "trucco" funziona ma le 9 attività aggiunte rallentano un po' la ricerca della soluzione....


Scusate per la lunghezza del post. La domanda è: ci sono modi migliori? Soprattutto  per risolvere il caso dispari...

Un'altra richiesta: sarebbe comodo se FET evidenziasse in qualche modo i "moduli di trasferimento" (viaggi tra un plesso e l'altro) nell'interfaccia grafica e nelle statistiche avanzate, anche per distinguerli dai semplici "buchi": ne teniamo conto in fase di scelta fra i possibili orari prodotti da FET, un orario con meno trasferimenti complessivi è più efficiente (e, di solito, più gradito dai colleghi...soprattutto quando piove :p).
Al momento lavoriamo con un tapullo fatto combinando fogli excel...ma non è un granché... 

Liviu Lalescu

Ciao, alege,

Grazie per i complimenti!

I need more time to understand your question, which is difficult to understand (I read it in Italian and in English with Google Translate). I will let you know as soon as I understand completely.

Maybe you would like to share your fet file, to make it easier for me/us to understand. If it is public, attach it here (you can archive if it is too large); if it is private, send at fet4 AT lalescu.ro.

PS: Qualle e il software usato precendente?

Liviu Lalescu

Ciao, alege,

1) About your described problem, is it that out of a set of activities there should not be any two activities: (on the same day and ((t1=t2+1) or (t2=t1+1)))? It is not difficult to add this, but I cannot think of a suitable name. I'll add this in the list of suggestions (the TODO list/file).

2) I will also add your suggestion about highlighting the building changes in the TODO list.

alege

Dear Liviu,

thank you for your quick answer.

I emailed you the files to protect the privacy of colleagues.

mbarsan

Buongiorno! Se ho ben interpretato il problema, si tratta di evitare che a metà dello svolgimento di lezioni in palestra 1 sede (che durano due ore) si abbia l'uscita e/ o l'ingresso di una classe in palestra 2 sede. Sarebbe cioè opportuno che le due palestre siano occupate oppure lasciate allo scoccare della stessa ora, senza che nulla accada al termine della prima ora di lezione.

E' così?

Liviu Lalescu

I have put a snapshot with the new constraint, which seems to work. Thank you, @alege !

The snapshot is announced on the Snapshots section of the forum, or here is the usual test link (which will be removed after the release, I hope in maximum 2 days): https://lalescu.ro/liviu/fet/download/test/

alege

Quote from: mbarsan on September 22, 2025, 11:08:41 AMBuongiorno! Se ho ben interpretato il problema, si tratta di evitare che a metà dello svolgimento di lezioni in palestra 1 sede (che durano due ore) si abbia l'uscita e/ o l'ingresso di una classe in palestra 2 sede. Sarebbe cioè opportuno che le due palestre siano occupate oppure lasciate allo scoccare della stessa ora, senza che nulla accada al termine della prima ora di lezione.

E' così?

Buongiorno, sì la situazione è quella. Lo ottenevo usando il vincolo "...MAX TIME SLOTS...", con eventualmente il trucco della classe fittizia nel caso dispari, ma il nuovo vincolo di Liviu risolve il problema molto meglio, anche perché lascia libero FET di piazzare le attività di ginnastica anche non accoppiate purché non si accavallino...di fatto ci sono più possibilità per soddisfare altre vincoli...


Liviu Lalescu

Buonasera, alege,

If you would like to minimize the building changes, I would advise you a progressively decrease of the max building changes per week/day. Start with say 3 (or more) per week and 1 (or more) per day, and decrease them after a timetable is successfully generated.

alege

Quote from: Liviu Lalescu on September 22, 2025, 09:17:51 PMBuonasera, alege,

If you would like to minimize the building changes, I would advise you a progressively decrease of the max building changes per week/day. Start with say 3 (or more) per week and 1 (or more) per day, and decrease them after a timetable is successfully generated.


Thank you for the suggestion!

Besides minimize them we would also find useful, once a satisfying timetable is done, to be able to see them in the fet interface and in print.

Many thanks for all your work

Liviu Lalescu

Thank you for your suggestion! It is listed in the TODO file. Unfortunately, there are reasons why we cannot add it now; the main problem is the lack of financial support, also, Volker is responsible for the HTML and Print, and he is busy with his work. Also, with every new feature there are new fields to translate, and I already bothered too much the volunteering translators (we have complete Arabic, Greek, French, Italian, and Brazilian Portuguese, so 5 translators, without considering me doing Romanian) - I already asked the translators to complete the new constraint which we just added, and I have some translations in place and I hope to release soon the new FET version with the new constraint type. Also, I am not sure if it is feasible to mark the building changes in the output timetables, as maybe some users prefer to have a blank, not a symbol for building changes.

But I will think about it.