Problemi dello zaino e di bin packing Laura Galli Dipartimento di Informatica Largo B. Pontecorvo 3, 56127 Pisa laura.galli@unipi.it http://www.di.unipi.it/~galli 2 Dicembre 2014 Ricerca Operativa 2 Laurea Magistrale in Ingegneria Gestionale Università di Pisa A.A. 2014/15 L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 1 / 27
Problema dello zaino (knapsack problem) Problema Dati: un contenitore di capacità C, n oggetti di valore v 1,...,v n e peso p 1,...,p n. Quali oggetti inserisco nel contenitore, rispettando la sua capacità, in modo da massimizzare il valore totale? Teorema Questo problema è NP-hard. Investire 100 mila euro. Scegliere tra 9 investimenti possibili: Investimento 1 2 3 4 5 6 7 8 9 Ricavo atteso 50 65 35 16 18 45 45 40 25 (migliaia di euro) Costo 40 50 25 10 10 40 35 30 20 (migliaia di euro) L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 2 / 27
Modello Variabili: x j = { 1 se oggetto j viene inserito, 0 altrimenti. max n v j x j j=1 n p j x j C j=1 x j {0,1} j = 1,...,n L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 3 / 27
Metodi greedy per trovare una soluzione ammissibile. Metodo 1 Esamino gli oggetti in ordine di valore decrescente. Ogni oggetto viene inserito purché sia rispettato il vincolo di capacità. Oggetto 1 2 3 4 5 6 7 8 9 Valore 50 65 35 16 18 55 45 40 25 Peso 31 39 26 21 25 28 29 27 23 C = 100 x 2 = 1, x 6 = 1, x 1 = 1, x 7 = 0, x 8 = 0, x 3 = 0, x 9 = 0, x 5 = 0, x 4 = 0. Quindi v I (P) = 170. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 4 / 27
Metodo 2 Esamino gli oggetti in ordine di peso crescente. Ogni oggetto viene inserito purché sia rispettato il vincolo di capacità. Oggetto 1 2 3 4 5 6 7 8 9 Valore 50 65 35 16 18 55 45 40 25 Peso 31 39 26 21 25 28 29 27 23 C = 100 x 4 = 1, x 9 = 1, x 5 = 1, x 3 = 1, x 8 = 0, x 6 = 0, x 7 = 0, x 1 = 0, x 2 = 0. Quindi v I (P) = 94. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 5 / 27
Metodo 3 Esamino gli oggetti in ordine di rendimento decrescente (rendimento=valore/peso). Ogni oggetto viene inserito purché sia rispettato il vincolo di capacità. Oggetto 1 2 3 4 5 6 7 8 9 Valore 50 65 35 16 18 55 45 40 25 Peso 31 39 26 21 25 28 29 27 23 C = 100 x 6 = 1, x 2 = 1, x 1 = 1, x 7 = 0, x 8 = 0, x 3 = 0, x 9 = 0, x 4 = 0, x 5 = 0. Quindi v I (P) = 170. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 6 / 27
Teorema Supponiamo che le variabili siano in ordine di rendimento decrescente. Sia h l indice tale che h p j C e h+1 p j > C. j=1 j=1 max n v j x j j=1 Allora il rilassamento continuo n ha come soluzione ottima p j x j C j=1 0 x j 1 C h p j j=1 x 1 = 1,..., x h = 1, x h+1 =, x h+2 = 0,..., x n = 0 p h+1 e valore ottimo v 1 + +v h + v h+1 p h+1 C h j=1 p j. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 7 / 27
Risolviamo con il Branch and Bound il seguente problema: max 10x 1 +13x 2 +18x 3 +24x 4 2x 1 +3x 2 +4x 3 +6x 4 7 x j {0,1} Disponiamo le variabili in ordine di rendimento decrescente: variabili 1 3 2 4 rendimenti 5 4.5 4.33 4 Applicando il terzo algoritmo greedy otteniamo la soluzione ammissibile (1, 0, 1, 0) e quindi v I (P) = 28. L ottimo del rilassamento continuo è ( 1, 1 3,1,0), quindi v S (P) = 32. In ogni nodo aperto istanziamo la variabile frazionaria nella soluzione ottima del rilassamento e visitiamo l albero in ampiezza. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 8 / 27
28,32 P x 2 = 0 x 2 = 1 28,32 P 1 28,32 P 2 L ottimo del rilassamento di P 1 è (1,0,1, 1 6 ), non amm., v S(P 1 ) = 32 > 28, pertanto il nodo P 1 rimane aperto. L ottimo del rilassamento di P 2 è (1,1, 1 2,0), non amm., v S(P 2 ) = 32 > 28, pertanto anche P 2 rimane aperto. Dal nodo P 1 istanziamo la variabile x 4, mentre dal nodo P 2 istanziamo x 3. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 9 / 27
28,32 P x 2 = 0 x 2 = 1 28,32 P 1 28,32 P 2 x 4 = 0 x 4 = 1 x 3 = 0 x 3 = 1 31 31 28,28 28,29 28,31 31,31 P 3 P 4 P 5 P 6 ottimo rilas. è (0,1,1,0). Aggiorno v I (P) = 31 La soluzione ottima è (0,1,1,0). L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 10 / 27
Rilassamento Lagrangiano Dato il problema dello zaino max n v j x j j=1 n p j x j C j=1 x j {0,1} (P) il rilassamento lagrangiano è: max n v j x j +λ(c n p j x j ) = j=1 j=1 = n (v j λp j )x j +Cλ j=1 x j {0,1} (RL λ ) Il valore ottimo di (RL λ ) è uguale al valore ottimo del suo rilassamento continuo. Quindi il valore ottimo del duale lagrangiano di (P) coincide con il valore ottimo del rilassamento continuo di (P). L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 11 / 27
Cover Definizione Un insieme S {1,...,n} è una cover se j S p j > C. Una cover S è minimale se S \{j} NON è una cover per ogni j S. Teorema 1. Se S è una cover, allora x j S 1 è una DV. j S 2. Se S 1,S 2 sono due cover e S 1 S 2, allora la DV generata da S 1 domina quella generata da S 2. 3. Se S è una cover e E(S) = S {j : p j p i per ogni i S}, allora j E(S) x j S 1 è una DV che domina quella generata da S. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 12 / 27
Cover max 5x 1 +3x 2 +8x 3 +2x 4 +3x 5 +7x 6 +6x 7 11x 1 +6x 2 +6x 3 +5x 4 +5x 5 +4x 6 +x 7 19 x j {0,1} Alcune DV generate da cover minimali: S = {1,2,3} x 1 +x 2 +x 3 2 S = {1,2,6} x 1 +x 2 +x 6 2 S = {1,5,6} x 1 +x 5 +x 6 2 S = {3,4,5,6} x 3 +x 4 +x 5 +x 6 3 Dalla cover S = {3,4,5,6} si ricava E(S) = {1,2,3,4,5,6}, quindi x 1 +x 2 +x 3 +x 4 +x 5 +x 6 3 è una DV che domina x 3 +x 4 +x 5 +x 6 3. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 13 / 27
Problema dello zaino a variabili intere Problema Dati: n tipi di oggetti, ognuno di valore v j peso p j ; un contenitore di capacità C. Quanti oggetti di ogni tipo devo inserire nel contenitore in modo da massimizzare il valore totale? Modello Variabili: x j = numero (intero) di oggetti di tipo j inseriti nel contenitore Modello: n max v j x j j=1 n p j x j C j=1 x j N j = 1,...,n L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 14 / 27
Metodi greedy per trovare una soluzione ammissibile. Metodo 1 Esamino gli oggetti in ordine di valore decrescente. Inserisco ogni oggetto nella massima quantità possibile, purché sia rispettato il vincolo di capacità. Oggetto 1 2 3 4 5 6 7 8 9 Valore 50 65 35 16 18 55 45 40 25 Peso 31 39 26 21 25 28 29 27 23 C = 100 x 2 = 2, x 6 = 0, x 1 = 0, x 7 = 0, x 8 = 0, x 3 = 0, x 9 = 0, x 5 = 0, x 4 = 1. Quindi v I (P) = 146. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 15 / 27
Metodo 2 Esamino gli oggetti in ordine di peso crescente. Inserisco ogni oggetto nella massima quantità possibile, purché sia rispettato il vincolo di capacità. Oggetto 1 2 3 4 5 6 7 8 9 Valore 50 65 35 16 18 55 45 40 25 Peso 31 39 26 21 25 28 29 27 23 C = 100 x 4 = 4, x 9 = 0, x 5 = 0, x 3 = 0, x 8 = 0, x 6 = 0, x 7 = 0, x 1 = 0, x 2 = 0. Quindi v I (P) = 64. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 16 / 27
Metodo 3 Esamino gli oggetti in ordine di rendimento decrescente. Inserisco ogni oggetto nella massima quantità possibile, purché sia rispettato il vincolo di capacità. Oggetto 1 2 3 4 5 6 7 8 9 Valore 50 65 35 16 18 55 45 40 25 Peso 31 39 26 21 25 28 29 27 23 C = 100 x 6 = 3, x 2 = 0, x 1 = 0, x 7 = 0, x 8 = 0, x 3 = 0, x 9 = 0, x 4 = 0, x 5 = 0. Quindi v I (P) = 165. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 17 / 27
Calcoliamo una v S (P) risolvendo il rilassamento continuo. Teorema Se max{ vj j p j } = vr p r, allora il rilassamento continuo max n v j x j j=1 n p j x j C j=1 x 0 ha come soluzione ottima x 1 = 0,..., x r 1 = 0, x r = C p r, x r+1 = 0,..., x n = 0 e valore ottimo C v r /p r. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 18 / 27
Consideriamo il problema: max 4x 1 +20x 2 +27x 3 +26x 4 4x 1 +19x 2 +16x 3 +14x 4 32 x j N (P) Disponiamo le variabili in ordine di rendimento decrescente: variabili 4 3 2 1 rendimenti 1.85 1.68 1.05 1 Il terzo algoritmo greedy trova la soluzione (1,0,0,2) con v I (P) = 56. La soluzione ottima del rilassamento continuo è (0,0,0, 32 14 ), quindi v S(P) = 59. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 19 / 27
(segue) Istanziamo la variabile x 4 (frazionaria nell ottimo del rilassamento continuo di P) e facciamo un branch non binario in modo che anche i sottoproblemi siano problemi di zaino: 56,59 P 56,54 x 4 = 0 x 4 = 1 56,56 x 4 = 2 56,58 P 1 P 2 P 3 La soluzione ottima del rilassamento continuo di P 1 è (0,0,2,0), quindi v S (P 1) = 54 < 56 = v I (P) e chiudiamo P 1. La soluzione ottima del rilassamento continuo di P 2 è (0,0, 9,1), quindi 8 v S (P 2) = 56 = v I (P) e chiudiamo anche P 2. La soluzione ottima del rilassamento continuo di P 3 è (0,0, 1,2), quindi 4 v S (P 3) = 58 > 56 = v I (P), pertanto P 3 rimane aperto. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 20 / 27
(segue) Dal nodo P 3 istanziamo la variabile x 3: 56,59 P 56,54 x 4 = 0 x 4 = 1 56,56 x 4 = 2 56,58 P 1 P 2 P 3 x 3 = 0 x 3 = 2 x 3 = 1 56,56 P 4 P 5 P 6 L ottimo del rilassamento di P 4 è (0, 4 19,0,2): v S(P 4) = 56 = v I (P). P 5 e P 6 non contengono soluzioni ammissibili, quindi si possono chiudere. Pertanto la soluzione ottima è (1,0,0,2) con valore 56. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 21 / 27
Problema del Bin packing Problema Dati: n oggetti di peso p 1,...,p n e m contenitori ognuno di capacità C. Trovare il minimo numero di contenitori in cui inserire tutti gli oggetti. Teorema Questo problema è NP-hard. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 22 / 27
Modello Variabili: x ij = { 1 se oggetto j inserito contenitore i, 0 altrimenti, min m i=1 y i y i = { 1 se i è usato, 0 altrimenti. m x ij = 1 j = 1,...,n (1) i=1 n p j x ij C y i i = 1,...,m (2) j=1 x ij {0,1} y i {0,1} i,j i (1): ogni oggetto è inserito in un solo contenitore. (2): capacità contenitori. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 23 / 27
Metodi euristici Per calcolare una v S (P) descriviamo 3 algoritmi greedy. Algoritmo Next-Fit Decreasing (NFD) Esamina gli oggetti in ordine di peso decrescente. Il primo contenitore è il contenitore corrente. Se possibile, assegna un oggetto al contenitore corrente; altrimenti assegnalo ad un nuovo contenitore, che diventa quello corrente. j 1 2 3 4 5 6 7 8 9 p j 70 60 50 33 33 33 11 7 3 C = 100 Contenitori Oggetti Capacità residua 1 1 30 2 2 40 3 3 4 50 17 4 5 6 7 8 9 67 34 23 16 13 L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 24 / 27
Metodi euristici Algoritmo First-Fit Decreasing (FFD) Esamina gli oggetti in ordine di peso decrescente. Assegna ogni oggetto al primo contenitore usato che può contenerlo. Se nessuno di essi può contenerlo, assegna l oggetto ad un nuovo contenitore. j 1 2 3 4 5 6 7 8 9 p j 70 60 50 33 33 33 11 7 3 C = 100 Contenitori Oggetti Capacità residua 1 1 7 8 9 30 19 12 9 2 2 4 40 7 3 3 5 50 17 4 6 67 L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 25 / 27
Metodi euristici Algoritmo Best-Fit Decreasing (BFD) Esamina gli oggetti in ordine di peso decrescente. Tra tutti i contenitori usati che possono contenere un oggetto, scegli quello con la minima capacità residua. Se nessuno di essi può contenerlo, assegna l oggetto ad un nuovo contenitore. j 1 2 3 4 5 6 7 8 9 p j 70 60 50 33 33 33 11 7 3 C = 100 Contenitori Oggetti Capacità residua 1 1 30 2 2 4 8 40 7 0 3 3 5 7 9 50 17 6 3 4 6 67 L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 26 / 27
Rilassamento continuo Teorema Il rilassamento continuo di (P): min n y i i=1 n x ij = 1 j = 1,...,n i=1 n p j x ij C y i i = 1,...,n j=1 0 x ij 1 i,j 0 y i 1 i { 1 se i = j, ha come soluzione ottima x ij = y i = pi per ogni i. 0 se i j, C n Quindi L 1 = p i/c è una v I (P). i=1 (RC) L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Università di Pisa 27 / 27