Modelli Branch and Bound Problemi di selezione di sottoinsiemi Laura Galli Dipartimento di Informatica Largo B. Pontecorvo 3, 56127 Pisa [email protected] http://www.di.unipi.it/~galli 1 Dicembre 2014 Ricerca Operativa 2 Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa A.A. 2014/15 L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa 1 / 19 Modelli Branch and Bound Problemi di selezione di sottoinsiemi Insieme I = {1, . . . , m}. Famiglia S1 , . . . , Sn di sottoinsiemi di I , ognuno ha costo (valore) cj . Problema di copertura: determinare una sottofamiglia F di costo minimo tale che ogni elemento di I appartenga ad almeno un sottoinsieme di F. Problema di partizione: determinare una sottofamiglia F di costo minimo tale che ogni elemento di I appartenga esattamente ad un sottoinsieme di F. Problema di riempimento: determinare una sottofamiglia F di valore massimo tale che ogni elemento di I appartenga ad al pi` u un sottoinsieme di F. I = {1, 2, 3, 4, 5, 6}, S1 = {1, 3}, S2 = {2, 4}, S3 = {2, 5, 6}, S4 = {5, 6}, S5 = {3, 4}. copertura: F = {S1 , S2 , S3 } partizione: F = {S1 , S2 , S4 } riempimento: F = {S3 , S5 } L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa 2 / 19 Modelli Branch and Bound Modelli ( 1 Definiamo la matrice: aij = 0 se i ∈ Sj , altrimenti. Ad ogni sottofamiglia F associamo una variabile x, dove xj = ( 1 0 se Sj ∈ F, altrimenti. Copertura Partizione Riempimento n P cj xj min j=1 n P aij xj ≥ 1 ∀ i j=1 xj ∈ {0, 1} ∀ j n P cj xj min j=1 n P aij xj = 1 ∀ i j=1 xj ∈ {0, 1} ∀ j n P cj xj max j=1 n P aij xj ≤ 1 ∀ i j=1 xj ∈ {0, 1} ∀ j L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa 3 / 19 Modelli Branch and Bound Riduzione di un problema di copertura Si possono eliminare variabili e vincoli applicando le seguenti regole: 1. Se cj ≤ 0 allora pongo xj = 1 ed elimino tutti i vincoli in cui compare xj (perch´e esiste una sol. ottima con xj = 1). ( 1 se j = p, 2. Se esiste un vincolo r tale che arj = allora pongo xp = 1 ed 0 altrimenti, elimino tutti i vincoli in cui compare xp (perch´e ogni sol. ammissibile ha xp = 1). 3. Se esistono 2 vincoli r , s tali che arj ≤ asj per ogni j, allora elimino il vincolo s (perch´e il vincolo r implica il vincolo s). 4. Se esiste un sottoinsieme Sp e una famiglia F tali che P aip ≤ aij per ogni i ∈ I j∈F P cj cp ≥ j∈F allora pongo xp = 0 (perch´e gli elementi di Sp sono coperti anche dalla famiglia F ed il costo di Sp non `e inferiore a quello di F ). L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa 4 / 19 Modelli Branch and Bound Riduzione di un problema di copertura: esempio Consideriamo il problema di copertura: cj i\ A= j 1 2 3 4 5 6 7 8 9 10 1 1 0 1 0 1 1 1 1 0 6 2 1 0 1 0 0 1 0 0 1 4 3 0 1 1 0 0 0 0 0 0 2 4 0 0 0 0 1 0 1 0 0 8 5 0 1 0 1 0 0 0 0 1 5 6 1 0 0 0 0 1 1 1 0 3 7 1 0 0 0 1 1 0 1 1 7 8 0 1 1 0 0 1 0 1 0 Dalla 4◦ riga si ottiene x5 = 1 e si eliminano le righe 2, 4 e 9. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa 5 / 19 Modelli Branch and Bound Riduzione di un problema di copertura: esempio (segue) Il problema ridotto diventa: cj j i\ 1 3 A= 5 6 7 8 10 1 1 1 1 1 1 1 6 2 1 1 0 1 0 0 4 3 0 1 0 0 0 0 2 4 0 0 1 0 1 0 5 6 1 0 0 1 1 1 3 7 1 0 1 1 0 1 7 8 0 1 0 1 0 1 Poich´e a1j ≤ a6j per ogni j, si pu` o eliminare la riga 6. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa 6 / 19 Modelli Branch and Bound Riduzione di un problema di copertura: esempio (segue) 10 1 1 1 1 1 1 cj i\ A= j 1 3 5 7 8 6 2 1 1 0 0 0 4 3 0 1 0 0 0 2 4 0 0 1 1 0 5 6 1 0 0 1 1 3 7 1 0 1 0 1 7 8 0 1 0 0 1 La 1◦ colonna `e dominata dalle colonne 3, 4 e 7, quindi si pone x1 = 0. cj i\ A= L. Galli j 1 3 5 7 8 6 2 1 1 0 0 0 Corso di Ricerca Operativa 2 4 3 0 1 0 0 0 - 2 4 0 0 1 1 0 5 6 1 0 0 1 1 3 7 1 0 1 0 1 7 8 0 1 0 0 1 Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa 7 / 19 Modelli Branch and Bound Metodo Branch and Bound per problemi di copertura D’ora in poi consideriamo un problema di copertura: n P cj xj min j=1 n P aij xj ≥ 1 ∀ i j=1 xj ∈ {0, 1} ∀ j Per applicare il metodo Branch and Bound `e necessario: • calcolare le vI (Pi ) • calcolare una vS (P) L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa 8 / 19 Modelli Branch and Bound Rilassamenti vI (P): possiamo usare il rilassamento continuo o il rilassamento lagrangiano. Il rilassamento lagrangiano `e facile da risolvere: ! n m n P P P aij xj = λi 1 − cj xj + min j=1 i =1 j=1 m m n P P P λi x + λ a c − j i ij j i =1 i =1 j=1 xj ∈ {0, 1} ∀ j (RLλ ) La soluzione ottima `e m 1 se c − P λ a ≤ 0, i ij j x¯j = i =1 0 altrimenti. Teorema Il valore ottimo del duale lagrangiano `e uguale al valore ottimo del rilassamento continuo del problema di copertura. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa 9 / 19 Modelli Branch and Bound Metodi euristici: algoritmo di Chv´ atal vS (P): un algoritmo greedy. Algoritmo di Chv´ atal 1. I = {1, . . . , m}, J = {1, . . . , n}, x := 0. 2. Per ogni j ∈ J calcola i costi unitari di copertura cj uj = P aij i ∈I 3. Trova un indice k ∈ J tale che uk = min uj j∈J Poni xk := 1, da J elimina k, da I elimina {i : aik = 1} 4. Se I = ∅ allora STOP (x `e una copertura) 5. Se J = ∅ allora STOP (non esistono coperture) altrimenti torna al passo 2. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa 10 / 19 Modelli Branch and Bound Metodi euristici: algoritmo di Chv´ atal Esempio I = {1, . . . , 9}, J = {1, . . . , 8}. cj i\ j Costi unitari: L. Galli uj j A 1 2 3 4 5 6 7 8 9 1 10 6 2 6 5 10 1 1 0 1 0 1 1 1 1 0 6 2 1 0 1 1 0 1 0 0 1 3 4 2 1 Corso di Ricerca Operativa 2 4 3 0 1 1 0 0 0 0 0 0 5 8 3 - 2 4 0 0 0 0 1 0 1 0 0 8 5 0 1 0 1 0 0 0 0 1 6 5 4 7 3 5 5 6 1 0 0 0 0 1 1 1 0 8 7 4 3 7 1 0 0 0 1 1 0 1 1 7 8 0 1 1 0 0 1 0 1 0 u7 = min uj → x7 = 1 Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa 11 / 19 Modelli Branch and Bound Metodi euristici: algoritmo di Chv´ atal Esempio (segue) Elimino la colonna 7 e le righe 1,5,6,8,9: 10 1 0 1 0 1 cj j i\ 2 3 4 7 Costi unitari: j uj 1 5 2 3 3 2 4 2 6 2 0 1 1 0 4 3 1 1 0 0 5 4 6 5 2 4 0 0 0 1 8 5 1 0 1 0 5 6 0 0 0 1 7 8 1 1 0 0 8 u = min uj → x3 = 1. 7/2 3 In seguito si trova x4 = 1 e x2 = 1. L’algoritmo di Chv´atal trova la copertura (0, 1, 1, 1, 0, 0, 1, 0) di costo 15. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa 12 / 19 Modelli Branch and Bound Metodi euristici: arrotondamento Un altro metodo euristico `e risolvere il rilassamento continuo e arrotondare per eccesso (cio`e ad 1) le componenti frazionarie. Esempio A cj 10 6 4 2 8 5 3 7 j i\ 1 2 3 4 5 6 7 8 9 1 1 0 1 0 1 1 1 1 0 2 1 0 1 1 0 1 0 0 1 3 0 1 1 0 0 0 0 0 0 4 0 0 0 0 1 0 1 0 0 5 0 1 0 1 0 0 0 0 1 6 1 0 0 0 0 1 1 1 0 7 1 0 0 0 1 1 0 1 1 8 0 1 1 0 0 1 0 1 0 L’ottimo del rilassamento continuo (trovato con AMPL) `e 1 1 1 1 1 1 1 0, , , , , , , , 0 , 2 2 2 2 2 2 2 quindi (0, 1, 1, 1, 1, 1, 1, 0) `e una copertura di costo 28. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa 13 / 19 Modelli Branch and Bound Metodi euristici: algoritmo di aggiustamento dei moltiplicatori Metodo euristico lagrangiano: ad ogni iterazione risolviamo il RLλ e cambiamo i valori di λ fino a trovare una soluzione ammissibile. Fissiamo λ. Il rilassamento lagrangiano `e n m m P P min P λi λi aij xj + cj − j=1 i =1 i =1 xj ∈ {0, 1} Chiamiamo costo ridotto c¯j (λ) = cj − m P (RLλ ) λi aij . Quindi l’ottimo di RLλ `e i =1 L. Galli x¯j (λ) = ( Corso di Ricerca Operativa 2 - 1 0 se c¯j (λ) ≤ 0, altrimenti. Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa 14 / 19 Modelli Branch and Bound Metodi euristici: algoritmo di aggiustamento dei moltiplicatori Se x¯ non `e una copertura, allora esiste un elemento k che non `e coperto da x¯. Chiamiamo K = {j : k ∈ Sj } la famiglia dei sottoinsiemi che contengono k. Allora x¯j = 0 per ogni j ∈ K e quindi c¯j (λ) > 0 per ogni j ∈ K . Per coprire anche l’elemento k, almeno una delle variabili x¯j con j ∈ K deve assumere valore 1. Per far questo modifichiamo λ in modo che una di queste variabili abbia costo ridotto nullo. Modifichiamo solo la k-esima componente di λ: ( λi se i 6= k, ′ λi = λk + δ se i = k. I nuovi costi ridotti sono: ′ c¯j (λ ) = ( c¯j (λ) c¯j (λ) − δ se j ∈ / K, se j ∈ K . Se scegliamo δ = min c¯j (λ), nel nuovo rilassamento lagrangiano avremo un costo j∈K ridotto nullo per un indice j ∈ K e quindi potremo coprire k. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa 15 / 19 Modelli Branch and Bound Metodi euristici: algoritmo di aggiustamento dei moltiplicatori Algoritmo di aggiustamento dei moltiplicatori 1. Poni λ = 0 e c¯j = cj per ogni j. 2. Calcola l’ottimo del rilassamento lagrangiano: ( 1 se c¯j ≤ 0, x¯j = 0 altrimenti. 3. Se x¯ `e una copertura allora STOP Pn 4. Scegli il primo indice k tale che j=1 akj x¯j = 0. Calcola K = {j : akj = 1} e δ = min c¯j . j∈K 5. Aggiorna i moltiplicatori e i costi ridotti: ( ( λi se i 6= k, c¯j λi := c¯j := λk + δ se i = k. c¯j − δ se j ∈ / K, se j ∈ K . e torna al passo 2. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa 16 / 19 Modelli Branch and Bound Metodi euristici: algoritmo di aggiustamento dei moltiplicatori Esempio Applichiamo l’algoritmo di aggiustamento dei moltiplicatori al problema precedente: λ c¯ x¯ k K δ λ c¯ x¯ k K δ 1◦ iterazione (0, 0, 0, 0, 0, 0, 0, 0, 0) (10, 6, 4, 2, 8, 5, 3, 7) (0, 0, 0, 0, 0, 0, 0, 0) 1 {1, 2, 6, 7} min{10, 6, 5, 3} = 3 3◦ iterazione (3, 4, 0, 0, 0, 0, 0, 0, 0) (7, 3, 0, 2, 4, 2, 0, 3) (0, 0, 1, 0, 0, 0, 1, 0) 4 {2, 5} min{3, 4} = 3 2◦ iterazione (3, 0, 0, 0, 0, 0, 0, 0, 0) (7, 3, 4, 2, 8, 2, 0, 7) (0, 0, 0, 0, 0, 0, 1, 0) 2 {3, 5, 8} min{4, 8, 7} = 4 4◦ iterazione (3, 4, 0, 3, 0, 0, 0, 0, 0) (7, 0, 0, 2, 1, 2, 0, 3) (0, 1, 1, 0, 0, 0, 1, 0) 7 {1, 4, 6} min{7, 2, 2} = 2 5◦ iterazione (3, 4, 0, 3, 0, 0, 2, 0, 0) (5, 0, 0, 0, 1, 0, 0, 3) (0, 1, 1, 1, 0, 1, 1, 0) L’algoritmo trova la copertura (0, 1, 1, 1, 0, 1, 1, 0) di costo 20. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa 17 / 19 Modelli Branch and Bound Metodi euristici: algoritmo di aggiustamento dei moltiplicatori Osservazione L’algoritmo di aggiustamento dei moltiplicatori, essendo basto sulla risoluzione di rilassamenti lagrangiani, fornisce sia una vS (P) (costo della copertura trovata), sia una vI (P). Infatti se l’algoritmo termina con la copertura x¯ e i moltiplicatori λ allora n m X X vI (P) = c¯j x¯j + λi . j=1 i =1 Nell’esempio precedente si ha vI (P) = 0 + 12 = 12. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa 18 / 19 Modelli Branch and Bound Esempio di applicazione del metodo Branch and Bound Risolviamo il problema precedente con il metodo Branch and Bound. Conosciamo la copertura costo 15 = vS (P) e l’ottimo del (0, 1, 1, 1, 0, 0, 1, 0) di 1 1 1 1 1 1 1 rilassamento continuo 0, , , , , , , , 0 di costo 14 = vI (P). 2 2 2 2 2 2 2 Istanziamo la prima variabile frazionaria, cio`e x2 : 14,15 P x2 = 1 x2 = 0 17,15 15,15 P1 P2 L’ottimo del rilassamento continuo di P1 `e (0, 0, 1, 1, 1, 0, 1, 0) di costo 17 = vI (P1 ) > vS (P) = 15, pertanto chiudiamo il nodo P1 . L’ottimo del rilassamento continuo di P2 `e (0, 1, 1, 12 , 0, 12 , 21 , 0) di costo 15 = vI (P2 ) = vS (P), quindi chiudiamo anche il nodo P2 . La copertura ottima `e (0, 1, 1, 1, 0, 0, 1, 0) di costo 15. L. Galli Corso di Ricerca Operativa 2 - Laurea Magistrale in Ingegneria Gestionale Universit` a di Pisa 19 / 19
© Copyright 2024 ExpyDoc