Studio di un problema di sequenziamento ottimale (scheduling) Corso di Ricerca Operativa- A.A. 2000/2001 Studio di un problema di sequenziamento ottimale (scheduling) Docente: Prof.Paola Zuddas Relatori: Depau Pierpaolo Piu Francesco Sulis Alessandro
In cosa consiste il problema di scheduling ? Riguarda l’ottimizzazione dei tempi di produzione in modo tale da minimizzarne i costi Permette di sequenziare opportunamente la lavorazione dei pezzi, programmare le operazioni di manutenzione e i set-up macchina, sfruttando al meglio le fasi di attesa
Scopo del lavoro Minimizzazione del tempo totale di completamento di m ordini su n macchine, dove: Tale tempo è funzione soltanto dei tempi di lavorazione richiesti da ciascun ordine su ogni macchina Lo scheduling deve essere eseguito nel rispetto delle date di consegna stabilite I tempi di lavorazione sono considerati comprensivi dei tempi di di set-up macchina tra due lavorazioni successive e di smontaggio e montaggio del pezzo
Analisi del problema Obiettivo: minimizzazione del tempo totale T di esecuzione di tutte le lavorazioni, nel rispetto dei seguenti vincoli: Rispetto di tempi e date di consegna Impedire la lavorazione simultanea di due ordini sulla stessa macchina Sequenzialità delle lavorazioni sulle macchine Non negatività dei tempi di lavorazione
Modello Matematico T tempo di completamento di tutte le lavorazioni dj data di consegna dell’ordine j sjk tempo di lavorazione dell’ordine j sulla macchina k tjk istante di avvio della lavorazione del prodotto j sulla macchina k M somma totale dei tempi di consegna yijk variabile binaria introdotta per rispettare la sequenza di lavorazione
Modello Matematico (cont.) Min T (1) tjm+sjm T (2) tjm+sjm dj (3) tik+sjk tik+M(1-yijk) (4) tik+sjk tik+Myijk (5) tjk+sjk tj, k+1 (6) tjk 0, T 0, yijk = {0,1} Definisce la funzione obiettivo Garantisce il rispetto delle date di consegna Impediscono la lavorazione simultanea di due ordini sulla stessa macchina Esecuzione delle lavorazioni nell’ordine previsto Vincoli di non negatività
Modello Matematico:complessità Il numero delle equazioni di vincolo è proporzionale al numero delle macchine utilizzate e degli ordini da eseguire: se questi sono in numero elevato il problema si complica notevolmente. Vediamo il numero di equazioni per tipo di vincolo, in funzione di m ed n: (1) e (2): pari al numero n di ordini (3) e (4): Per ogni macchina m abbiamo (n-1)+(n-2)+…….1 equazioni (5): Sono pari ad n(m-1) (6): nm per le tik,1 per T, e dello stesso numero di (4) e (5) per le yijk Totale: n+n+3m[(n-1)+(n-2)+…..1]+n(m-1)+nm+1 equazioni!
Applicazione Numerica Consideriamo un sistema produttivo semplice composto da due macchine, che deve soddisfare due ordini, con i seguenti dati: Tempi di lavorazione dei prodotti 1 e 2 : s11=2h s12=10h s21=5h s22=7h Scadenze di consegna dei due ordini: d1=24h d2=13h
Applicazione numerica (cont.) Il modello è stato implementato facendo uso del programma Lindo, ha in tutto 18 equazioni di vincolo, e l’output fornito è il seguente: OBJECTIVE FUNCTION VALUE 1) 22.00000 VARIABLE VALUE REDUCED COST Y121 0.000000 0.000000 Y122 0.000000 -37.000000 T 22.000000 0.000000 T12 12.000000 0.000000 T22 5.000000 0.000000 T11 5.000000 0.000000 T21 0.000000 1.000000
Applicazione numerica (cont.) Dall’analisi dei risultati otteniamo la seguente sequenza ottimale di lavorazione: 1) Ordine 2 sulla macchina 2 all’istante t=0; 2) Ordine 2 sulla macchina 2 e ordine 1 sulla macchina 1 all’istante t=5; 3) Ordine 1 sulla macchina 2 in t=12. Tempo di lavorazione ottimale: T=22h NB: Al termine della prima lavorazione, l’ordine 1 deve restare in attesa, in quanto la macchina 2 in quell’istante è ancora impegnata con la lavorazione del secondo ordine.Una rappresentazione grafica di tale concetto è fornita dal diagramma di Gantt.
Applicazione Numerica (cont.) Diagramma di Gantt
Applicazione Numerica 2 Consideriamo ora come secondo esempio un’estensione del caso precedente, con m=4 macchine e n=5 ordini: d1=26 d2=28 d3=54 d4=42 d5=36 s11=4 s12=6 s13=1 s14=5 s21=3 s22=4 s23=2 s24=7 s31=2 s32=5 s33=4 s34=4 s41=1 s42=5 s43=1 s44=2 s51=2 s52=4 s53=6 s54=7 M=26+28+54+42+36=186 Il modello in questo caso è molto più complesso del precedente, con ben 166 vincoli Lindo ha fornito la soluzione ottima dopo ben 214312 iterazioni
Applicazione Numerica 2 (cont.) Come output del problema abbiamo stavolta: OBJECTIVE FUNCTION VALUE 1) 36.00000 T 36.000000 0.000000 T14 16.000000 0.000000 T24 9.000000 0.000000 T34 30.000000 0.000000 T44 34.000000 0.000000 T54 23.000000 0.000000 T11 3.000000 0.000000 T21 0.000000 1.000000 T31 19.000000 0.000000 T41 18.000000 0.000000 T51 7.000000 0.000000 T12 7.000000 0.000000 T22 3.000000 0.000000 T32 21.000000 0.000000 T42 26.000000 0.000000 T52 13.000000 0.000000 T13 15.000000 0.000000 T23 7.000000 0.000000 T33 26.000000 0.000000 T43 31.000000 0.000000 T53 17.000000 0.000000 NB: L’ottimo risulta T=36, che coincide col termine di consegna più elevato (d5)
Applicazione Numerica 2 (cont.) Diagramma di Gantt
Applicazione Numerica 2 (cont.) Dall’analisi del diagramma precedente possiamo fare alcune importanti considerazioni: 1) Abbiamo ampi intervalli di attesa tra l’esecuzione degli ordini nelle varie macchine 2) Il tempo totale dipende dal fatto che gli ordini con termini di consegna più bassi devono necessariamente essere eseguiti per primi 3) La sequenzialità è un fattore che influisce negativamente sulla minimizzazione, in quanto aumenta il tempo totale di esecuzione delle lavorazioni
Scheduling Modificato Consideriamo dunque una variante del modello precedente, ottenuta eliminando i vincoli di tipo 5 (cioè la sequenzialità delle lavorazioni) sostituendoli con dei vincoli di non simultaneità di esecuzione dello stesso pezzo da parte di 2 diverse macchine contemporaneamente.A questo scopo introduciamo delle nuove variabili binarie xikr: (1) tjk+sjk T; (2) tjk+sjk dj; (3) tik+sjk tik+M(1-yijk) (4) tik+sjk tik+Myijk (5) tik+sir tir+M(1-xikr) (6) tir+sir tik+Mxikr (7) tjk 0, T 0, yijk={0,1}, xikr={0,1}
Scheduling Modificato: complessità La complessità del problema aumenta considerevolmente, perhè al posto degli n(m-1) vincoli di tipo (5) ne abbiamo messo 2n[ (m-1)+(m-2)+…..1 ] di tipo 3 e 4: infatti questi ultimi, in quanto vincoli di non simultaneità, sono più <<pesanti>>, come numero di equazioni, rispetto a quelli di sequenzialità. Utilizzando i dati dell’applicazione 2, il modello presenta complessivamente ben 250 equazioni di vincolo Per tale motivo Lindo si è <<rifiutato>> di operare e non è stato possibile determinare l’ottimo di questo problema
Applicazione 3 s11=2h s12=10h d1=24h d2=13h s21=5h s22=7h Per verificare la correttezza del modello modificato lo abbiamo applicato sui dati del primo problema considerato (Applicazione 1): s11=2h s12=10h d1=24h d2=13h s21=5h s22=7h Le equazioni di vincolo in questo caso risultano 25, contro le 18 dell’ Applicazione 1; le iterazioni sono 66, mentre nel caso precedente erano solo 14 Tuttavia il valore della funzione obiettivo, com’era da aspettarsi, è notevolmente migliorato, perché da 22 si è ridotto a 15
Diagramma di Gantt:confronto con l’Applicazione 1 Applicazione 3 (cont.) Diagramma di Gantt:confronto con l’Applicazione 1 NB:nel diagramma di destra non sono presenti tempi morti nella lavorazione del pezzo 2
Conclusioni Dagli esempi visti si può notare come la complessità del problema di scheduling cresca notevolmente al crescere del numero di macchine e di ordini considerato A causa di questo fatto non sempre il software Lindo è stato in grado di fornire la soluzione ottima Il modello modificato è risultato più complesso ma ha permesso di ridurre di molto il tempo totale, a parità di numero di macchine e ordini