Aule per classi di studenti che non tornano

Started by Lizio, September 06, 2016, 09:12:42 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Lizio

Sto provando a chiudere l'orario introducendo attività e vincoli un po' per volta, ma qui mi è successa una cosa particolare:

Ho assegnato le aule ad ogni classe, nello specifico Palestra 1 e Palestra 2.
Ho assegnato ad ogni attività di educazione fisica una chiave corrispondente nel nome all'aula dove dovrebbe svolgersi (Palestra 1 e Palesta 2).
Ho poi assegnato dei vincoli in modo che in Palestra 1 e Palestra 2 ci siano concomitanti classi dello stesso ordine (prime, seconde ecc.) e per fare questo ho usato il vincolo della non concomitanza in questo modo (le attività sono una per classe di 2 ore):
Tutte le prime in Palestra 1 non devono essere concomitanti con tutte le seconde, terze, quarte e quinte di Palestra 2;
Tutte le seconde in Palestra 1 non devono essere concomitanti con tutte le prime, terze, quarte e quinte di Palestra 2;
E così via per terze, quarte e quinte.

Il programma chiude come sempre in "0 secondi", ma nel risultato cambia le aule alle classi (verificabili con facilità dalle chiavi) scambiando Palestra 1 con Palestra 2 e sembra sovrapporre due attività in Palestra 2 al sabato (di fatto cambia l'aula a una delle due classi) e comunque rende concomitanti due attività che non potrebbero esserlo...
Come è possibile?
Cosa sbaglio?

In allegato il file fet e i risultati zippati

Lizio

Ho risolto aggirando il problema e creando una chiave per ogni classe per poi usare i vincoli sulle chiavi, in questo modo, assegnando la chiave giusta ad ogni attività, viene messa nel posto giusto.

Forse c'è un bug nel programma da verificare.

utismetis

Se hai risolto, come non detto, non ho mai usato la concomitanza, comunque non si può impostare che le prime lavorano dalle 8 alle 10, le seconde dalle 10 alle 12, le terze dalle 12 alle 14... di certi giorni?

Lizio

In questo modo riduci le possibilità e, siccome ho a che fare con vincoli pesantissimi, rischio di non chiudere.

Secondo me c'è un baco o un malfunzionamento da cercare comunque.

Se uso una chiave per assegnare aule ad attività accomunate da una classe, sarebbe molto più comodo ed immediato assegnare il vincolo di spazio alla classe, ma se poi la soluzione non ne tiene conto, non lo si può fare.

utismetis

Anche le chiavi riducono le possibilità; io ho 2 palestre che ho fatto diventare 8 per sistemare 59 classi: ho risolto con spazio / attività / un'attività ha un insieme di aule preferenziali

Lizio

Hai 4 classi per palestra concomitanti?

Le chiavi mi servono per avere classi dello stesso anno insieme in palestra lasciando scegliere a Fet il quando.

utismetis

Sì, quasi sempre ho 2 palestre con 4 classi in contemporanea. Mi puoi scrivere per favore le istruzioni per creare le chiavi per le palestre?

Lizio

#7
Se hai due palestre con 4 classi in contemporanea devi creare 4 aule: Palestra 1a, Palestra1b, Palestra 2a e Palestra 2b.

Poi crei 4 chiavi che chiami pl1a, pl1b, pl2a, pl2b.

(ovviamente per i nomi scegli tu quelli che ti piacciono di più)

Ora imposti il vincolo di spazio sulle chiavi: una chiave ha un'aula preferenziale.
Accoppi le palestre con le chiavi: pl1a avrà aula preferenziale Palestra 1a al 100% e così via anche per le altre tre.

Ora devi assegnare le chiavi in base a quello che vuoi ottenere. Per esempio, se vuoi che nelle due palestre le classi che le condividono siano dello stesso anno (prime con prime, ecc.), allora devi suddividere le classi dei vari anni in parti uguali sulle due palestre fittizie relative ad ogni palestra vera.

Se hai 6 prime, 6 seconde, 7 terze, 7 quarte e 6 quinte che devono usare la palestra 1, allora scegli per la palestra1a 3 prime, 3 seconde, 3 terze, 4 quarte e 3 quinte e per la palestra 1b le altre.
A questo punto crei le attività di educazione fisica che si svolgono nella Palestra 1 a man mano che le crei, assegni loro la chiave corretta fra pl1a e pl1b.

Fai altrettanto per la Palestra2.

Le classi che vanno in una palestra o nell'altra o ti vengono indicate oppure se sei libero le scegli tu opportunamente in modo da aver più blocchi pari possibili e se hai blocchi dispari, in modo che siano in quantità pari per ogni palestra (per palestra 1 nell'esempio hai 6+6+7+7+6), questo facilita la chiusura della soluzione.

Ora imposti i vincoli per le chiavi:
Vincoli di tempo per attività: un insieme di attività con una stessa chiave non sono concomitanti (minimo numero di giorni fra un insieme di attività)
Primo vincolo: selezioni tutte le prime con chiave pl1a e tutte le seconde, terze, quarte e quinte con chiave pl1b
Secondo vincolo: selezioni tutte le seconde con chiave pl1a e tutte le prime, le terze, le quarte e le quinte con chiave pl1b
E così via con terze, quarte e quinte con chiave pl1a.

Fai l'analogo con la Palestra 2.

Et voilà i giochi sono fatti!

Se le attività di educazione fisica le crei come singole attività di 2 ore per ogni classe (così hai le ore appaiate), i dati e i vincoli da inserire non sono granché.

Aggiungo:

Quando hai ottenuto l'orario, lo blocchi e togli la "a" e la "b" dai nomi delle 4 palestre, dove c'era la "b" aggiungi uno spazio prima e uno dopo al nome.
Quando guardi l'orario o lo stampi avrai ancora le 4 palestre, ma due si chiameranno Palestra 1 e due Palestra 2 e così avrai ottenuto la compresenza delle classi che cercavi.

Se usi attività da 2 ore, potrebbe capitarti di avere compresenze sfalsate di 1 ora, ma sempre dello stesso ordine con ore buche (ad esempio alla prima e alla seconda ora hai la 2B, alla seconda e terza ora la2A e alla terza e quarta ora la 2C, quindi in palestra la 2A sarà sempre in compresenza, la 2B e la 2C avranno un'ora da sole e una in compresenza con la 2A).

utismetis

Mamma mia che operazioni! Appena ho un attimo verifico con le mie classi e palestre, nel frattempo ti ringazio moltissimo della risposta e soprattutto del procedimento geniale che hai ideato: complimenti!