Un applicazione della programmazione lineare ai problemi di trasporto Corso di Ricerca Operativa per il Corso di Laurea Magistrale in Ingegneria della Sicurezza: Trasporti e Sistemi Territoriali AA 2012-2013 Prof. Marcello Sanguineti Autore: Giorgio Gnecco Università di Genova Via Opera Pia, 13 16145 Genova, Italy 1 / 23
Formulazione del problema (I) Problema: si vuole minimizzare il costo di trasferimento di un prodotto da n magazzini a m distributori. Ipotesi: l iesimo magazzino ha una capacità assegnata M i (i = 1,...n) il jesimo distributore ha una domanda assegnata D j (j = 1,...m) il costo unitario di trasporto del prodotto lungo l arco (i,j) è C i,j. 2 / 23
Formulazione del problema (II) 3 / 23
Riformulazione come problema di PL (I) Individuazione delle variabili decisionali: quantità di prodotto da trasportare lungo ciascun collegamento: x 1,1,x 1,2,x 1,3,x 1,4,x 2,1,x 2,2,x 2,3,x 2,4,x 3,1,x 3,2,x 3,3,x 3,4 4 / 23
Riformulazione come problema di PL (II) Individuazione dei vincoli: la quantità di prodotto da trasportare lungo ciascun collegamento non può essere negativa: x 1,1 0 x 1,2 0 x 1,3 0 x 1,4 0 x 2,1 0 x 2,2 0 x 2,3 0 x 2,4 0 x 3,1 0 x 3,2 0 x 3,3 0 x 3,4 0 5 / 23
Riformulazione come problema di PL (III) Individuazione dei vincoli: la quantità di prodotto complessiva uscente da un magazzino non può superare la sua capacità: x 1,1 + x 1,2 + x 1,3 + x 1,4 M 1 x 2,1 + x 2,2 + x 2,3 + x 2,4 M 2 x 3,1 + x 3,2 + x 3,3 + x 3,4 M 3 la quantità di prodotto in arrivo ad un distributore deve eguagliare la sua domanda: x 1,1 + x 2,1 + x 3,1 = D 1 x 1,2 + x 2,2 + x 3,2 = D 2 x 1,3 + x 2,3 + x 3,3 = D 3 x 1,4 + x 2,4 + x 3,4 = D 4 6 / 23
Riformulazione come problema di PL (IV) Individuazione della funzione obiettivo: si vuole minimizzare il costo complessivo del trasporto funzione obiettivo: 3 4 z = C i,j x i,j i=1 j=1 7 / 23
Riformulazione come problema di PL (V) 3 4 min z = C i,j x i,j i=1 j=1 s.t. x 1,1 + x 1,2 + x 1,3 + x 1,4 M 1, x 2,1 + x 2,2 + x 2,3 + x 2,4 M 2, x 3,1 + x 3,2 + x 3,3 + x 3,4 M 3, x 1,1 + x 2,1 + x 3,1 = D 1, x 1,2 + x 2,2 + x 3,2 = D 2, x 1,3 + x 2,3 + x 3,3 = D 3, x 1,4 + x 2,4 + x 3,4 = D 4, x i,j 0, i = 1,2,3;j = 1,2,3,4. 8 / 23
Dati del problema Nel seguito, assumiamo: M 1 = 40,M 2 = 50,M 3 = 35; D 1 = 30,D 2 = 45,D 3 = 25,D 4 = 10; C 1,1 = 6,C 1,2 = 2,C 1,3 = 6,C 1,4 = 4; C 2,1 = 9,C 2,2 = 5,C 2,3 = 5,C 2,4 = 2; C 3,1 = 1,C 3,2 = 4,C 3,3 = 6,C 3,4 = 9. 9 / 23
Risoluzione con LINGO (I) 10 / 23
Risoluzione con LINGO (II) 11 / 23
Risoluzione con LINGO (III) 12 / 23
Risoluzione con LINGO (IV) 13 / 23
Risoluzione con LINGO (V) 14 / 23
Riformulazione del problema in forma standard (I) Si inseriscono delle variabili di slack s i, una per ogni magazzino. Si inseriscono delle variabili ausiliarie y j, una per ogni distributore. Le variabili di slack s i e le variabili ausiliarie y j sono 0. Si modifica la funzione obiettivo, aggiungendo ad essa il termine M 4 j=1 y j, con M sufficientemente grande (metodo del big M). 15 / 23
Riformulazione del problema in forma standard (II) 3 4 min z = C i,j x i,j + M 4 i=1 j=1 j=1 s.t. x 1,1 + x 1,2 + x 1,3 + x 1,4 + s 1 = M 1, x 2,1 + x 2,2 + x 2,3 + x 2,4 + s 2 = M 2, x 3,1 + x 3,2 + x 3,3 + x 3,4 + s 3 = M 3, x 1,1 + x 2,1 + x 3,1 + y 1 = D 1, x 1,2 + x 2,2 + x 3,2 + y 2 = D 2, x 1,3 + x 2,3 + x 3,3 + y 3 = D 3, x 1,4 + x 2,4 + x 3,4 + y 4 = D 4, x i,j 0, i = 1,2,3;j = 1,2,3,4, s i 0, i = 1,2,3;y j 0, j = 1,2,3,4. y j 16 / 23
Riformulazione del problema in forma standard (III) Problema della forma min z = c T t s.t. At = b, t 0, A,b,cassegnati,b 0. Soluzione iniziale di base ammissibile corrispondente alle variabili in base: s 1,s 2,s 3,y 1,y 2,y 3,y 4. Risolubile con il metodo del simplesso, massimizzando l obiettivo z anziché minimizzare l obiettivo z. Il metodo del simplesso può essere applicato, ad esempio, usando la funzione linprog di MATLAB. 17 / 23
Dati del problema (I) Vettore delle variabili decisionali ( t = x 1,1, x 1,2, x 1,3, x 1,4, x 2,1, x 2,2, x 2,3, x 2,4, x 3,1, x 3,2, x 3,3, x 3,4, s 1, s 2, s 3, y 1, y 2, y 3, y 4 ) T Vettore dei termini noti b = (40, 50, 35, 30, 45, 25, 10) T Vettore dei coefficienti della funzione obiettivo c = (6, 2, 6, 4, 9, 5, 5, 2, 1, 4, 6, 9, 0, 0, 0, M, M, M, M) T 18 / 23
Dati del problema (II) Matrice A dei vincoli 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 La sottomatrice quadrata corrispondente agli elementi colorati in blu e una matrice identità individua una soluzione iniziale di base ammissibile. 19 / 23
Risoluzione con il metodo del big M (I) Tableau iniziale (non in forma standard), M = 100 x1,1 x1,2 x1,3 x1,4 x2,1 x2,2 x2,3 x2,4 x3,1 x3,2 x3,3 x3,4 s1 s2 s3 y1 y2 y3 y4 sol. corrente z 6 2 6 4 9 5 5 2 1 4 6 9 0 0 0 100 100 100 100 0 s1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 40 s2 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 50 s3 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 0 35 y1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 30 y2 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 45 y3 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 25 y4 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 10 20 / 23
Risoluzione con il metodo del big M (II) Tableau iniziale (in forma standard), M = 100 x1,1 x1,2 x1,3 x1,4 x2,1 x2,2 x2,3 x2,4 x3,1 x3,2 x3,3 x3,4 s1 s2 s3 y1 y2 y3 y4 sol. corrente z -94-98 -94-96 -91-95 -95-98 -99-96 -94-91 0 0 0 0 0 0 0-11000 s1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 40 s2 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 50 s3 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 0 35 y1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 30 y2 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 45 y3 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 25 y4 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 10 21 / 23
Risoluzione con il metodo del big M (III) Tableau finale, M = 100 x1,1 x1,2 x1,3 x1,4 x2,1 x2,2 x2,3 x2,4 x3,1 x3,2 x3,3 x3,4 s1 s2 s3 y1 y2 y3 y4 sol. corrente z 7 0 4 5 7 0 0 0 0 0 2 8 3 0 1 98 95 95 98-275 x1,2 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 40 s2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1-1 -1-1 -1 15 x3,2-1 0 0 0-1 0 0 0 0 1 1 1 0 0 1-1 0 0 0 5 x3,1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 30 x2,2 0 0-1 -1 1 1 0 0 0 0 0-1 -1 0 0-1 1 0 0 0 x2,3 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 25 x2,4 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 10 22 / 23
Risoluzione con il metodo del big M (IV) Dopo 6 iterazioni del metodo del simplesso (con M = 100) si individua con MATLAB la soluzione di base ottima ( t = 0,40,0,0,0,0,25,10,30,5,0,0, ) T 0,15,0,0,0,0,0 Le variabili ausiliarie in t sono fuori base, quindi non influenzano il valore dell obiettivo all ottimo. Inoltre, una variabile in base è 0 (soluzione di base degenere). Il valore ottimo dell obiettivo (una volta ripristinato il segno originario) corrisponde a quello trovato con LINGO. 23 / 23