Sulla base delle caratteristiche delle operazioni è possibile distinguere tra:
Problemi a fase unica
Tutte le lavorazioni richiedono una sola operazione e, pertanto, si può parlare indifferentemente di lavorazione o operazione (job o task);
Problemi multifase
Ogni lavorazione che, in questo caso, viene detta job, è composta da più operazioni tra le quali esistono vincoli di precedenza.
Un problema di scheduling su macchina singola è un problema a fase singola caratterizzato dalla presenza di una sola macchina.
I problemi su macchina singola possono essere:
Come tutti i problemi di ottimizzazione un problema di scheduling può essere risolto con metodi esatti o con metodi euristici in funzione della sua complessità.
Un metodo costruttivo molto utilizzato per risolvere problemi di scheduling è il metodo delle liste di priorità (dispatching rules). Si tratta di un metodo costruttivo che, in fase di inizializzazione, ordina le operazioni sulla base di regole o indici di priorità (dispatching rules), e quindi costruisce la soluzione assegnandole, secondo quest’ordine, alle macchine disponibili.
Le regole di priorità sono statiche se il valore dell’indice non dipende dal tempo di inizio dell’operazione, dinamiche altrimenti.
Per alcuni problemi, scelta opportunamente la regola di priorità, il metodo ottiene la soluzione ottima.
Il metodo delle regole di priorità (dispatching rules)
1. Inizializzazione
Si ordinano le operazioni secondo una regola di priorità (j1,… jn) e si costruisce la soluzione parziale S={j1}.
2. Scelta elemento da aggiungere alla soluzione parziale
All’iterazione k si sceglie l’operazione jk da aggiungere alla soluzione parziale e la si schedula al più presto in modo da rispettare i vincoli presenti.
3. Criterio di arresto
Se tutte le operazioni sono state schedulate, l’algoritmo si arresta, altrimenti si torna al passo 2.
Regole di priorità statiche più utilizzate
FCFS (First Come First Served)
Tempo di rilascio crescente
WSPT (Weighted Shortest Processing Time)
Rapporto wj/pj decrescente ovvero, se wj=1 ∀j, tempo di processamento crescente
LPT (Longest Processing Time)
Tempo di processamento decrescente
EDD (Earliest Due Date)
Tempo di scadenza crescente
MST (Minimum Slack Time)
Valore della slack slj=dj-rj-pj crescente (dinamica)
CR (Critical Ratio) (dj-rj)/pj
Valore del rapporto (dj-rj)/pj crescente (dinamica)
1 ||Cmax 1 || ΣwjCj 1 ||Lmax
Sono problemi di complessità polinomiale per i quali è possibile ottenere la soluzione ottima attraverso l’applicazione di opportune regole di priorità.
1 || Cmax
Si può applicare qualsiasi regola
1 || ΣwjCj
Si deve applicare la regola WSPT (Weighted Shortest Proc. Time)
1 || Lmax
Si deve applicare la regola EDD (Earliest Processing Time)
1 |rj|Cmax;
1 |rj| ΣwjCj;
1 |rj |Lmax
Ad eccezione del problema 1|rj|Cmax che resta polinomiale, gli altri problemi sono di tipo NP-hard.
Il metodo delle liste di priorità può essere esteso anche al caso dinamico. Dopo aver definito la schedulazione di un insieme di operazioni fino all’istante t, si individua l’insieme Ot delle operazioni disponibili, ovvero che presentano rj ≤ t.
Tra le operazioni Ot si schedula quella che presenta la priorità maggiore secondo la regola utilizzata.
Il procedimento si itera assumendo, come nuovo istante t, il tempo di completamento della nuova operazione schedulata
1. Inizializzazione
Si pone O’=O e t=min j∈O‘ rj
2. Aggiunta di un nuovo elemento alla soluzione parziale
Si individuano le operazioni Ot={j∈O‘: rj≤t}; si individua l’operazione j*∈Ot che presenta il valore di priorità più elevato secondo la regola scelta.
Si pone sj*=t, Cj*= t+ pj* e O’=O’-{j*}.
3. Criterio di arresto
Se la soluzione è completa (O’=Ø) l’algoritmo si arresta; altrimenti si pone t= max(Cj*, min j∈O’ rj) e si ritorna al passo 2.
Il valore di t al passo 3 viene aggiornato considerando che in certi istanti può accadere che Ot=Ø perché tutte le operazioni ancora da schedulare presentano rj≥t; in questo caso, quindi, la schedulazione deve ripartire dal valore di rj minore.
La scelta della regola di priorità dipende dall’obiettivo; si possono, pertanto, utilizzare le stesse regole del caso statico.
Le soluzioni prodotte dalla metodologia indicata sono senza ritardo (non delay) dal momento che non è prevista la possibilità che la macchina resti inattiva nel caso sia nelle condizioni di poter effettuare un’operazione.
1. Introduzione al corso di Ricerca operativa II
2. Generalità e classificazione dei sistemi di produzione
3. La logistica dei sistemi di produzione
4. Introduzione all'ottimizzazione combinatoria
5. Fondamenti di teoria della complessità computazionale
6. Algoritmi euristici costruttivi e migliorativi
10. Problemi di Localizzazione
12. Introduzione alla gestione delle scorte
13. Modelli stocastici per la gestione delle scorte
14. Modelli discreti per la gestione delle scorte
15. Introduzione allo scheduling
16. Scheduling su macchina singola
17. Problemi di scheduling su macchina singola e su macchine parall...