Generazione orario - informazione

Started by Paolo, September 13, 2009, 07:32:10 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Paolo

Salve, ho scoperto FET due giorni fa e l'ho provato subito perché, naturalmente, potrebbe rappresentare una svolta nelle mie annuali fatiche per "creare" l'orario scolastico.
Un impegno che, dopo ore e ore di lavoro, assume tratti artistici per le fantasione soluzioni che ti vengono in mente. :D

Innanzitutto, i miei complimenti per questa straordinaria risorsa (a disposizione di quella umanità che chiusa in un ufficio passa il tempo a filtrare le numerose richieste... e poi ad eclissarsi per poter lavorare in pace.. :-X).

La mia scuola è piccola. Ho solo tre classi, 60 attività, di cui 6 di laboratorio che vanno da 4 a 8 ore consecutive.
Quindi le mie difficoltà non sono paragonabili a quelle della maggior parte delle scuole.

Tuttavia, il problema rimane sempre quello si trovare una soluzione alle richieste personali degli insegnanti, alle esigenze didattiche e a quelle organizzative.

Il motivo per cui vi scrivo è il seguente.

Nonostante abbia solo 60 attività, cogli attuali vincoli/pesi il software sta girando da 2h 30 min. Il massimo delle attività piazzate sono 55 dopo poco meno di 4 minuti.
Vorrei sapere se è possibile che il programma stia girando "a vuoto". Vorrei sapere, cioè, se viene un momento in cui il software dichiara che il calendario è impossibile.

In caso negativo (e in ogni caso), secondo voi - con sole 60 attività - quante ore ha senso lasciare attiva l'elaborazione prima di interrompere manualmente?

Vi ringrazio.

Cordiali saluti
Paolo

mbarsan

#1
Non è affatto semplice rispondere alla tua domanda. Certamente, che si tratti solo di 60 attività dovrebbe aiutare a capire se il problema può risolversi o meno.
Ad esempio, provando ad interrompere l'elaborazione  e guardando il risultato acquisito fino a quel momento, per vedere di piazzare a mano le ultime 5 attività.
Io cercherei dapprima di ridurre i vincoli più critici per ottenere una felice e rapida elaborazione. Acquisito questo risultato proverei ad aggiungere i vincoli che avevo tolto o ridotto, uno alla volta. E sempre verificando di volta in volta che l'elaborazione porti ad un risultato.

FET genera percorsi random, nell'elaborare gli orari e, oltre a trovare ogni volta che gira una soluzione diversa, ci mette anche tempi diversi. Spesso ho sfruttato questa caratteristica lanciando l'elaborazione multipla con la richiesta di elaborare (ad esempio) 30 orari con il limite di 8 minuti di elaborazione massima ciascuno. Alla fine mi sono trovato con una metà di elaborazioni abortite (dopo 8 minuti), e molte altre concluse con un orario completo. Forse anche quelle interrotte avrebbero potuto concludersi con un orario, ma chissà dopo quanto tempo.

Nella tua situazione proverei a lanciare la ricerca multipla di 20 orari col limite di 60 minuti   ::) .

Credo che FET alla fine esaurisca le combinazioni possibili ed emetta un verdetto di non fattibilità. Non so quanto tempo ci metta. Inoltre ho notato che FET è in grado di riconoscere che certe combinazioni di vincoli (singolarmente accettabili) danno origine a richieste impossibili da elaborare e lo segnala subito, senza iniziare a calcolare. Altre volte, però, in caso di combinazioni di vincoli più elaborate, non è in grado di riconoscere la non fattibilità e si perde in guru meditation...

Paolo

Ciao, grazie della risposta e del consiglio sulle elaborazioni multiple.

Spero che avrai la pazienza di rispondermi a qualche domanda elementare, in considerazione che uso da poco il software.

Se interrompo l'eleborazione, dove trovo il miglior risultato sino ad allora ottenuto per provare a "piazzare a mano" le ultime attività?

Mi dici di "cercare dapprima di ridurre i vincoli più difficili". Li individuo nella schermata successiva all'interruzione manuale ("Simulazione interrotta. FET non ha potuto trovare un orario perfetto" etc.)?
Se è così, però, io vedo solo le attività più difficili da piazzare (le ultime dell'elenco, giusto?); ma ho l'impressione che la difficoltà nasca da altri vincoli... a causa dei quali quelle attività (le ultime dell'elenco, appunto) non si riescono a piazzare.
C'è un altro modo per vedere i vincoli più critici? Forse tra i conflitti lievi? Ma quelli che mi vengono mostrati si riferiscono al migliore degli orari trovati?
:-[

Grazie.

mbarsan

#3
QuoteSe interrompo l'eleborazione, dove trovo il miglior risultato sino ad allora ottenuto per provare a "piazzare a mano" le ultime attività?

Menù Orario / Vedi ... Qui trovi le attività già piazzate.

Durante la ricerca dell'orario si può cliccare:

- Vedi le attività più difficili... Nella finestra che compare -senza interrompere l'elaborazione- vedi le ultime attività che FET ha piazzato. Ripetendo, vedi altre attività su cui vertono le difficoltà di piazzamento.

- Vedi l'ordine di piazzamento... Mostra un elenco di attività in ordine crescente di difficoltà di piazzamento, ovvero in ordine decrescente di grado di libertà e quantità di ore utilizzabili per il piazzamento. Può dare qualche altra indicazione generica.

- Scrivi, salva, aggiorna... Permette di valutare l'orario già determinato. Lo si trova nella cartella di output definita nel menù Opzioni.

- Interrompi e osserva... Ferma l'elaborazione, indica l'elenco delle attività piazzate e segnala l'esatta subattività che ha trovato impossibile piazzare. E' facile che il problema ruoti intorno a questa subattività: può essere utile, senza fare tante analisi, editarla -grazie all'id- nel menù Dati / Modifica subattività, e qui disattivarla togliendo il segno di spunta. Ora rilancia la ricerca dell'orario, ma tieni conto che FET potrebbe trovare impossibile elaborare, se quella subattività era legata da particolari vincoli, o se si riduce sotto il minimo, il numero di ore che deve fare una classe ecc..

FET usa un metodo di scelta random delle subattività da piazzare e perciò non ha facilità di riconoscere che sta dentro un loop.

QuoteMi dici di "cercare dapprima di ridurre i vincoli più difficili". Li individuo...

L'elenco dei conflitti lievi è legato ai vincoli che FET ha infranto per piazzare una subattività che non riusciva a risolvere. Tutto sommato si tratta di vincoli che non impediscono a FET di proseguire e, pertanto, nella fase iniziale di ricerca infuttuosa possono essere ignorati. Solo quando si troverà un orario, si potrà cercare di ridurre il numero di conflitti lievi che si sono ottenuti, elevando il peso dei vincoli che sono stati infranti (e continuando a scegliere valori inferiori al 100%, per essere certi che FET abbia comunque una scappatoia).

Dovremmo individuare da soli i vincoli più delicati: quelli legati a subattività che hanno poche ore dove essere piazzate; quelli che condizionano contemporaneamente il piazzamento di più subattività; i casi di cambio di edificio ecc. ecc. In generale converrebbe definire le attività e far girare FET senza alcun vincolo.
Poi inserendo:
- quelli che limitano le ore buche di studenti e insegnanti;
- quelli che limitano i numeri minimo e massimo di ore al giorno;
- quelli che limitano le ore disponibili (legati in particolare a insegnanti e aule speciali);
- quelli che impongono data e ora di svolgimento di particolari lezioni.
ecc.
Ogni volta rilanciando FET e constatando che il nuovo vincolo appena aggiunto non genera una situazione critica.