Specificare i numeri di ore nei giorni della settimana per una classe

Started by framan82, September 23, 2025, 08:01:50 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

framan82

Buongiorno,
sto utilizzando da qualche giorno questo meraviglioso programma, e sono riuscito a chiudere l'orario con 793 attività e diversi vincoli importanti.
Non riesco, però, a capire come poter ottenere questo risultato: vorrei poter specificare per una determinata classe, il numero di ore giornaliere per tutti i giorni della settimana.

Esempio: la classe 4D ha un monte ore totale di 31, che dovrebbe essere diviso in 5 giorni da 6+6+6+7+6; i giorni non devono corrispondere esattamente a Lun+Mar+Mer+Gio+Ven, FET può decidere di cambiarne la posizione liberamente, l'importante è mantenere il totale di ore giornaliere specificato per i singoli giorni. Quindi la distribuzione può essere anche 6+6+6+6+7, o 7+6+6+6+6, o qualsiasi altra combinazione possibile.

Le altre classi, hanno combinazioni diverse; in totale le combinazioni sono 5:
5+5+6+6+6 (28h totali), 6+6+6+6+5 (29h), 6+6+6+6+7 (31h), 6+6+6+7+7 (32h), 6+6+7+7+7 (33h).

Come è possibile ottenere questa distribuzione?
Ho cercato in lungo e in largo, ma nessun vincolo sembra fare al caso mio: quello sulle massime ore giornaliere per intervallo, permette di specificare solo il limite massimo e fa bloccare la generazione dell'orario istantaneamente.

I vincoli fondamentali attualmente presenti nell'orario sono i seguenti:

  • Students max gaps per day, WP:100%, MG:0
  • Students must begin early, respecting maximum 0 beginnings at second hour, WP:100%
  • Teachers max gaps per day, WP:100%, MG:1
  • Teachers max gaps per week, WP:100%, MG:2
  • Teachers max hours daily, WP:100%, MH:5
  • Teachers max hours continuously, WP:99%, MH:4
  • Teachers interval max days per week, WP:100%, ISH:H7, IEH:End of the day, MD:2
  • Students set not available, WP:100%, St:2A, NA at: D1 H7; D2 H6; D2 H7; D3 H7; D4 H7; D5 H7

Poi c'è questo vincolo fondamentale, applicato a ciascun insegnante (e non come regola generale a tutti gli insegnanti) perché alcuni insegnanti possono anche non rispettarlo:

  • Min days between activities, WP:100%, NA:2, Id:797, Id:798, mD:1, CSD:no


La soluzione ideale (anche a livello di interfaccia) sarebbe una tabella come quella degli intervalli, con le X per selezionare le ore da assegnare a ciascun giorno della settimana, da applicare a ciascuna classe. FET potrebbe rispettare l'ordine esatto oppure no, l'importante è mantenere i totali delle ore giornaliere, a prescindere che poi lo inserisca al Lunedì o al Venerdì.

Grazie in anticipo per qualsiasi suggerimento possiate fornirmi.

P.S.: ho notato che l'ordine dei vincoli influisce sulla generazione o meno dell'orario; è possibile? Ho letto che FET si basa solo sui pesi percentuali, ma effettivamente se sposto un vincolo in cima alla lista (tramite i pulsanti "Su" e "Giù") sembra funzionare meglio.


Francesco

Liviu Lalescu

Buongiorno, e grazie per i complimenti!

The order of the constraints does not bring better timetables, but you can obtain different generations for a different order, even if the starting seed is the same.

Why can't you use students set min hours daily?

framan82

Buongiorno Liviu,
"students set min hours daily" permette di impostare il valore per tutti i giorni allo stesso modo, a me servirebbe impostare valori diversi per ciascun giorno. E in ogni caso si tratterebbe solamente di valori minimini, a me servirebbero valori esatti.
Non voglio che la classe 4D faccia "almeno" 6 ore un giorno, ma che faccia "esattamente" 6 ore un giorno (non importa quale giorno della settimana).

Liviu Lalescu


framan82

Ok, ho realizzato solo ora che le combinazioni di ore giornaliere presentano solo 2 coppie di abbinamenti: 6n+7n e 5n+6n. Quindi impostando per la classe con combinazione 5n+6n il valore Min 5 e Max 6 FET sarà matematicamente costretto ad utilizzare solo combinazioni di 5 e 6 per raggiungere il totale di ore giornaliere.
Il problema, quindi, sarebbe irrisolvibile se le combinazioni fossero formate da 3 o più numeri (es: 5+5+6+7+7).

Provo subito ad impostare min e max e ti aggiorno!

Grazie

Liviu Lalescu

Prego, Francesco! :)

Yes, unfortunately in the 5,5,6,7,7 case you can only add min 5 and max 7. But might be satisfactory.

framan82

Ho 31 classi, quindi devo creare 2 vincoli (uno MIN e l'altro MAX) per ciascuna classe, giusto?
Non c'è un modo per applicare un TAG alle classi che hanno lo stesso orario, e quindi creare i vincoli solo per quei tag?

Liviu Lalescu

No, you cannot tag. You need to use the two constraints for a students set. If you add for a year, it propagates to the contained groups and subgroups, and if you add for a group, it propagates to the contained subgroups.

framan82

Ok, ci ha messo 10:00 minuti invece dei soliti 1:10, ma alla fine è riuscito a generare l'orario.
Me la sono cavata con molti meno vincoli, perche tutte le classi 1 e 2 avevano le stesse combinazioni, e cosi le classi 3-4-5. In tutto ho dovuto creare solo 10 vincoli.

Grazie mille per il supporto (un grandissimo valore aggiunto a questo meraviglioso progetto)!

Liviu Lalescu