RILASSAMENTO LAGRANGIANO 1 Rilassamento Lagrangiano Tecnica più usata e conosciuta in ottimizzazione combinatoria per il calcolo di lower/upper bounds (Held and Karp (1970)). Si consideri il seguente problema P di programmazione lineare a numeri interi: (P ) z(p ) = min c T x s.t. Ax b (1) Bx d x {0, 1} dove A è una matrice m 1 n, B è una matrice m 2 n, b è un vettore di dimensione m 1, d è un vettore di dimensione m 2 e c ed x sono vettori di dimensioni n. Supponiamo che i vincoli (1) siano vincoli difficili. Il Rilassamento Lagrangiano di P rispetto ai vincoli (1) si ottiene: 1. rilassando dal problema P i vincoli (1); 2. introducendo tali vincoli nella funzione obiettivo associando a loro un vettore di penalità, chiamato vettore delle penalità Lagrangiane (o moltiplicatori Lagrangiani).
RILASSAMENTO LAGRANGIANO 2 Il rilassamento Lagrangiano di P rispetto ai vincoli Ax b è il seguente problema L(λ): L(λ) z(l(λ)) = min c T x λ(ax b) s.t. Bx d x {0, 1} dove λ 0 è il vettore delle penalià Lagrangiane di dimensione m 1 e L(λ) viene chiamata Funzione Lagrangiana. Esempio 1: (P ) z(p ) = min 3x 1 + 7x 2 + 10x 3 s.t. x 1 + 3x 2 + 5x 3 7 x 1, x 2, x 3 {0, 1} L(λ) z(l(λ)) = min 3x 1 + 7x 2 + 10x 3 λ(x 1 + 3x 2 + 5x 3 7) s.t. x 1, x 2, x 3 {0, 1} L importanza di L(λ) sta nel fatto che z(l(λ)), λ 0, è un valido lower bound al costo della soluzione ottima di P, z(p ). In certe condizione la soluzione ottima di L(λ) è anche la soluzione ottima di P.
RILASSAMENTO LAGRANGIANO 3 Teorema (Dualità Lagrangiana Debole). Il valore ottimo z(p ) del problema P è maggiore o uguale al valore ottimo z(l(λ)) del problema L(λ), per ogni vettore λ 0, ovvero: z(p ) z(l(λ)), λ 0. Dimostrazione. Sia x la soluzione ottima di P. Si noti che x è anche una soluzione ammissibile per L(λ) per ogni λ 0. Si ha quindi che c T x λ(ax b) z(l(λ)) ma λ(ax b) 0 (poichè λ 0 e Ax b), quindi c T x z(l(λ)) ovvero z(p ) z(l(λ)), λ 0.
RILASSAMENTO LAGRANGIANO 4 Set Covering Problem Il Set Covering Problem (SCP) è il problema di coprire le righe di una matrice m n (a ij ) con coefficienti 0 ed 1, con un sottoinsieme di colonne a costo minimo. Sia x j una variabile binaria 0-1 definita come segue: x j = 1 se la colonna j con costo c j è in soluzione; 0 altrimenti. Una formulazione matematica per il problema SCP è la seguente: (SC) z(sc) = min n s.t. n c j x j a ij x j 1, i = 1,..., m (2) x j {0, 1}, j = 1,..., n Esempio 2: m = 3, n = 6, c j = [1, 2, 3, 4, 5, 6] (a ij ) = 1 2 3 1 2 3 4 5 6 1 0 1 0 1 0 0 0 1 1 0 1 0 1 0 0 1 1 Soluzione ottima S = {2, 3} di costo 5.
RILASSAMENTO LAGRANGIANO 5 Il Rilassamento Lagrangiano del problema SC rispetto ai vincoli (2) è il seguente: (L(λ)) z(l(λ)) = min n c j x j m λ i ( n a ij x j 1) i=1 s.t. x j {0, 1}, j = 1,..., n dove λ i 0, i = 1,..., m. Il problema L(λ) può essere riscritto come segue: (L(λ)) z(l(λ)) = min n (c j m λ i a ij )x j + m i=1 λ i i=1 s.t. x j {0, 1}, j = 1,..., n Posto C j = c j m i=1 λ i a ij, j = 1,..., n, L(λ) diventa: (L(λ)) z(l(λ)) = min n C j x j + m λ i i=1 s.t. x j {0, 1}, j = 1,..., n la cui soluzione ottima può x essere calcolata ponendo: x j = 1 se C j 0; 0 altrimenti., j = 1,..., n
RILASSAMENTO LAGRANGIANO 6 Esempio 3 Si consideri il seguente problem di Set Covering: (P 1) z(p 1) = min 2x 1 + 3x 2 + 4x 3 + 5x 4 s.t. x 1 + x 3 1 x 1 + x 4 1 x 2 + x 3 + x 4 1 x 1, x 2, x 3, x 4 {0, 1} La soluzione ottima è x 1 = x 2 = 1 e x 3 = x 4 = 0. Rilassando mediante le penalità Lagrangiane λ 1, λ 2 e λ 3 i 3 vincoli di P 1 si ottiene il seguente problema: (L(λ)) z(l(λ)) = min 2x 1 + 3x 2 + 4x 3 + 5x 4 λ 1 (x 1 + x 3 1) ovvero λ 2 (x 1 + x 4 1) λ 3 (x 2 + x 3 + x4 1) s.t. x 1, x 2, x 3, x 4 {0, 1} (L(λ)) z(l(λ)) = min C 1 x 1 + C 2 x 2 + C 3 x 3 + C 4 x 4 + λ 1 + λ 2 + λ 3 s.t. x 1, x 2, x 3, x 4 {0, 1} dove C 1 = 2 λ 1 λ 2 C 2 = 3 λ 3 C 3 = 4 λ 1 λ 3 C 4 = 5 λ 2 λ 3
RILASSAMENTO LAGRANGIANO 7 Se λ 1 = 1.5, λ 2 = 1.6 e λ 3 = 2.2 si ha: C 1 = 2 λ 1 λ 2 = 1.1 C 2 = 3 λ 3 = 0.8 C 3 = 4 λ 1 λ 3 = 0.3 C 4 = 5 λ 2 λ 3 = 1.2 per cui la soluzione ottima x di L(λ) é x 1 = 1, x 2 = x 3 = x 4 = 0 di costo z(l(λ)) = 1.1 + 0 + 0 + 0 + 1.5 + 1.6 + 2.2 = 4.2 ( 5). Se λ 1 = 1, λ 2 = 1 e λ 3 = 3 si ha: C 1 = 2 λ 1 λ 2 = 0 C 2 = 3 λ 3 = 0 C 3 = 4 λ 1 λ 3 = 0 C 4 = 5 λ 2 λ 3 = 1 per cui la soluzione ottima x è di L(λ) x 1 = x 2 = x 3 = x 4 = 0 di costo L(λ) = 0 + 0 + 0 + 0 + 1 + 1 + 3 = 5 (= z(p 1)). Si noti che x non è una soluzione ammissibile per P 1. Si noti inoltre che esistono soluzioni ottime alternative di L(λ) tutte di costo z(l(λ)) = 5 che si ottengono ponendo x 1 = 1 e/o x 2 = 1 e/o x 3 = 1 e x 4 = 0. Fra tali soluzioni vi è anche la soluzione ottima di P 1.
RILASSAMENTO LAGRANGIANO 8 Lagrangiano Duale Dal teorema della Dualità debole per cui z(l(λ)) z(p ), λ 0, si ha che l ottimo z(d L ) del seguente problema: (D L ) z(d L ) = max λ 0 [z(l(λ))] è un valido lower bound a z(p ); ovvero z(d L ) z(p ). Il problema D L è detto Lagrangiano Duale di P. Duality Gap Nel caso in cui z(d L ) < z(p ) allora si dice che esiste un duality gap fra il problema P e il problema D L. Sia λ la soluzione ottima del problema D L. Sia inoltre x la soluzione ottima di RL(λ), ovvero: z(d L ) = z(l(λ)) = cx λ(ax b) Si consideri il caso in cui x è anche l ottimo di P, ovvero z(p ) = cx. È evidente che z(d L ) < z(p ) se λ(ax b) > 0.
RILASSAMENTO LAGRANGIANO 9 Esempio 4 (P ) z(p ) = min 3x 1 + 7x 2 + 10x 3 s.t. x 1 + 3x 2 + 5x 3 7 x 1, x 2, x 3 {0, 1} (L(λ)) z(l(λ)) = min 3x 1 + 7x 2 + 10x 3 λ(x 1 + 3x 2 + 5x 3 7) ovvero s.t. x 1, x 2, x 3 {0, 1} (L(λ)) z(l(λ)) = min (3 λ)x 1 + (7 3λ)x 2 + (10 5λ)x 3 + 7λ s.t. x 1, x 2, x 3 {0, 1} Per calcolare z(d L ), calcoliamo L(λ), λ 0: λ = 0, z(l(0)) = 0 e x = (0, 0, 0); λ = 1, z(l(1)) = 7 e x = (0, 0, 0); λ = 2, z(l(2)) = 14 e x = (0, 0, 0) oppure x = (0, 0, 1); λ = 7 3, z(l(7 44 )) = 3 3 e x = (0, 0, 1) oppure x = (0, 1, 1); λ = 3, z(l(3)) = 14 e x = (0, 1, 1) oppure x = (1, 1, 1); λ > 3, z(l(λ)) = 2λ + 20 e x = (1, 1, 1). Quindi esiste un gap di dualità in quanto z(d L ) = 44 3 (= z(l(7 3 ))), z(p ) = 17 e x = (0, 1, 1), che corrisponde ad una delle soluzioni di z(l( 7 3 )).
RILASSAMENTO LAGRANGIANO 10 Teorema (Dualità Lagrangiana Forte). Sia x la soluzione ottima di L(λ) per un dato λ 0. Se x e λ soddisfano le seguenti condizioni: x è ammissibile per P (ovvero Ax b) e (3) λ(ax b) = 0, (4) allora x è la soluzione ottima di P ed inoltre z(d L ) = z(l(λ)). Dimostrazione. Dimostriamo x è una soluzione ottima di P. Essendo x soluzione ammissibile di P si ha cx z(p ). (5) Per il teorema della dualità Lagrangiana debole si ha: Quindi da (5( e (6) si ottiene z(p ) L(λ) = cx λ(ax b) ). (6) } {{ } =0 per la (4 cx z(p ) cx ovvero z(p ) = cx (= z(l(λ))). (7) Dimostriamo che z(d L ) = z(l(λ)). Per come è definito il problema D L si ha che: z(d L ) L(λ) z(p ) z(d L ) (8) Quindi da (7) e (8) si ottiene z(d L ) = z(p ).
RILASSAMENTO LAGRANGIANO 11 Considerazioni Si noti che le condizioni del teorema della dualità lagrangiana forte sono sufficienti, ma non necessarie. Nell esempio 4 la soluzione duale ottima che si ha per λ = 7 3 soluzione ottima del problema primale (x = (0, 1, 1)), ma: fornisce la λ(ax b) = λ(x 1 + 3x 2 + 5x 3 7) = 7 3 (0 + 3 + 5 7) = 7 3 0 Dato un problema P : Quali vincoli devono essere rilassati in modo Lagrangiano? È necessario considerare rilassamenti per i quali la complessità computazionale necessaria per risolvere il problema L(λ) è di tipo polinomiale o pseudopolinomiale; Come risolvere il problema D L? Il numero di penalità Lagrangiane necessarie per effettuare il rilassamento influenza la complessità computazionale necessaria per risolvere il problema D L ; Che relazioni ci sono fra il Rilassamento Lineare di P ed il Rilassamento Lagrangiano di P?
RILASSAMENTO LAGRANGIANO 12 Relazione fra il Rilassamento Lineare ed il Rilassamento Lagrangiano Dato un insieme X la sua chiusura convessa (conv(x)) è il minimo insieme convesso che contiene X Sia X = {x : Bx d, x 0} Z n {x : Bx d, x 0} X conv(x) z(p ) = min c T x z(p ) = min c T x Ax b Ax b Bx d x conv(x) 0 intere x intere z(lp ) = min c T x z(p ) = min c T x Ax b Ax b Bx d x conv(x) x 0 Il valore ottimo z(lp ) del Rilassamento Lineare di P è un valido lower bound al costo della soluzione ottima di P, ovvero z(lp ) z(p ). Il valore ottimo z(p ) del rilassamento continuo della seconda formulazione di P è un valido lower bound di z(p ) ovvero z(p ) z(p ). QUALE RAPPORTO TRA z(lp ) e z(p )?
RILASSAMENTO LAGRANGIANO 13 Teorema Dimostrazione. z(lp ) z(p ) Siccome conv(x) {x : Bx d, x 0}, l insieme delle soluzioni del problema P dato da {x : Ax b, x conv(x)} è contenuto nell insieme delle soluzioni del problema LP dato da {x : Ax b, Bx d, x 0}, ovvero: {x : Ax b, x conv(x)} {x : Ax b, Bx d, x 0}. (9) Di conseguenza da (9) si ha che z(lp ) z(p ). Teorema (Caratterizzazione del Lagrangiano Duale, vedi per esempio L.A. Wolsey, Integer Programming, pag. 172, Wiley, 1998). Il costo della soluzione ottima z(d L ) del Lagrangiano Duale è uguale al costo della soluzione ottima del problema P z(p ) = min c T x s.t. Ax b x conv(x) Relazione fra Ril. Lagrangiano e Ril. Lineare Il lower bound ottenuto Rilassando in modo Lagrangiano il problema P è sempre maggiore o uguale del lower bound ottenuto dal Rilassamento Lineare di P z(lp ) z(d L )
RILASSAMENTO LAGRANGIANO 14 Esempio - Relazione fra Ril. Lagrangiano e Ril. Lineare Ax b Ax b Bx d Bx d (a) {x : Ax b, Bx d, x 0 intero } (b) {x : Ax b, Bx d, x 0} Ax b Bx d (a) conv(x) (b) {x : Ax b, x conv(x)}
RILASSAMENTO LAGRANGIANO 15 Proprietà di integralità Definizione: proprietà di integralità. Si dice che il Rilassamento Lagrangiano L(λ) soddisfa la proprietà di integralità se la regione ammissibile di L(λ) (per un dato vettore λ 0) ha solo vertici interi {x : Bx d, x 0} = conv({x : Bx d, x 0} Z n ) = conv(x). (10) Ne consegue che per qualunque vettore di costi c T z(l(λ)) = z(ril. lineare di L(λ)) Teorema (Proprietà d integralità). Se il Rilassamento Lagrangiano L(λ) di P soddisfa la proprietà di integralità, allora z(d L ) = z(lp ). Dimostrazione. Da (10) si ha {x : Ax b, x conv(x)} = {x : Ax b, Bx d, x 0} P LP Per cui il problema P ed il problema LP sono definiti sullo stesso insieme di soluzioni ammissibili, di conseguenza z(lp ) = z(p ) e per il teorema di caratterizzazione del lagrangiano duale z(p ) = z(d L ).
RILASSAMENTO LAGRANGIANO 16 Assegnamento Generalizzato Sono dati m contenitori ed n oggetti. Il contenitore j ha una capacità pari a b j (j = 1,..., m). Ogni oggetto i (i = 1,..., n) occupa una spazio pari a a ij nel contenitore j (j = 1,..., m). Sia c ij il costo per assegnare l oggetto i al contenitore j. Si vuole assegnare ogni oggetto ad uno ed un solo contenitore nel rispetto della capacità dei contenitori e minimizzando il costo complessivo. Una formulazione matematica è la seguente: x ij = 1 se l oggetto i viene assegnato al contenitore j; 0 altrimenti. (AG) z(ag) = Min s.t. n m i=1 m n i=1 c ij x ij x ij = 1, i = 1,..., n (11) a ij x ij b j, j = 1,..., m (12) x ij {0, 1}, i = 1,..., n, j = 1,..., m I vincoli (11) impongono che ogni oggetto sia assegnato ad un ed un solo contenitore, mentre le disuguaglianze (12) impongono il vincolo sulla capacità dei contenitori.
RILASSAMENTO LAGRANGIANO 17 Si considerino i seguenti tre Rilassamenti del problema AG: - Rilassamento Lagrangiano rispetto ai vincoli (11): z(l 1 (λ)) = min s.t. n m i=1 n i=1 (c ij λ i )x ij + n λ i i=1 a ij x ij b j, j = 1,..., m x ij {0, 1}, i = 1,..., n, j = 1,..., m - Rilassamento Lagrangiano rispetto ai vincoli (12): z(l 2 (µ)) = min s.t. n m i=1 m (c ij + a ij µ j )x ij m x ij = 1, i = 1,..., n µ j b j x ij {0, 1}, i = 1,..., n, j = 1,..., m µ j 0, j = 1,..., m - Rilassamento Lagrangiano rispetto ai vincoli (11) e (12): z(l 3 (λ, µ)) = min n m i=1 (c ij λ i + a ij µ j )x ij + n i=1 λ i m s.t. x ij {0, 1}, i = 1,..., n, j = 1,..., m µ j 0, j = 1,..., m µ j b j Siccome L 2 e L 3 soddisfano la proprietà di integralità e possono essere facilmente risolti per ispezione. Si ha z(d L2 ) = z(d L3 ) = z(lp ). Per quanto riguarda L 1, si ha z(d L1 ) z(lp ). Si noti che la risoluzione di L 1 (λ) coinvolge la risoluzione di m problemi di knapsack.
RILASSAMENTO LAGRANGIANO 18 Risoluzione del Lagrangiano Duale Teorema La Funzione Lagrangiana è concava. z(l(λ)) = z(l(αλ 1 + (1 α)λ 2 )) z(l(λ 2 )) αz(l(λ 1 )) + (1 α)z(l(λ 2 )) z(l(λ 1 )) λ 1 λ = αλ 1 + (1 α)λ 2 λ 2 αz(l(λ 1 )) + (1 α)z(l(λ 2 )) z(l(λ)). Subgradiente Un vettore s è detto subgradiente di L(λ) in λ se soddisfa: z(l(λ)) z(l(λ)) + s(λ λ) z(l(λ)) + s(λ λ)) z(l(λ)) z(l(λ)) λ λ
RILASSAMENTO LAGRANGIANO 19 Il Lagrangiano Duale (D L ) z(d L ) = max λ 0 [z(l(λ))] potrebbe essere risolto come un problema di Programmazione Lineare Continua, ma spesso risulta molto oneroso dal punto di vista computazionale. Per risolvere D L si usano perciò altri metodi, di tipo euristico, fra i quali l ottimizzazione subgradiente. 1. Calcola la funzione z(l(λ)) per λ dato. 2. Calcola un subgradiente s in λ; 3. λ := λ + θs (un passo nella direzione del subgradiente) 4. Se non è attivo un criterio di arresto, then goto 1. Il metodo genera una sequenza finita di vettori λ 1, λ 2,..., λ k e di valori z(l(λ 1 )), z(l(λ 2 )),..., z(l(λ k )) N.B. i valori z(l(λ i )) non sono monotoni!
RILASSAMENTO LAGRANGIANO 20 Calcolo del subgradiente Dato λ sia x la soluzione di RL(λ), ovvero Per un generico λ si ha che z(l(λ)) = cx λ(ax b) (13) z(l(λ)) = min x X (ct x λ(ax b)) cx λ(ax b) (14) Sottraendo dalla (14) la (13) si ottiene: ovvero z(l(λ)) z(l(λ)) (λ λ)(ax b) z(l(λ)) z(l(λ)) (Ax b)(λ λ) ne segue che s = (Ax b) è un subgradiente di z(l(λ)) in λ. Affinche z(l(λ)) sia maggiore di z(l(λ)) è necessario che: (Ax b)(λ λ) > 0, ovvero, è necessario muoversi nella direzione del subgradiente: λ = λ + θs, θ > 0 Il problema (non facile) è quello di determinare il valore di θ.
RILASSAMENTO LAGRANGIANO 21 Metodo del Subgradiente Indichiamo in forma di sommatoria i vincoli Ax b, ovvero, n a ij x j b i, i = 1,..., m 1. Algoritmo Subgradiente Step 1. Step 2. Step 3. Sia α un parametro predefinito. Poni LB =. Sia inoltre z(u B) il costo di una soluzione euristica al problema. Si ponga λ i = 0, i = 1,..., m 1. Si risolva il problema L(λ). Sia x la soluzione ottima di L(λ) di costo z(l(λ)). Poni LB = max[lb, L(λ)]. Se Ax b e λ(ax b) = 0 allora x è la soluzione ottima di P. Siano s i, i = 1,..., m 1, i subgradienti per i vincoli rilassati, calcolati come: s i = b i n a ij x j, i = 1,..., m 1. Step 4. θ = α[z(ub) z(l(λ))] / m 1 i=1 s 2 i. Step 5. Si aggiornino le Penalita Lagrangiane nel seguente modo: λ i = max[0, λ i + θs i ], i = 1,..., m 1. Vai allo Step 2.
RILASSAMENTO LAGRANGIANO 22 In genere 0 < α 2. Osservazioni Il valore di α va opportunatamente ridotto (α = α/2) se per iterazioni risulta z(l(λ)) LB. In genere = 20. In generale è necessario imporre un numero massimo di iterazioni all algoritmo in quanto non vi è nessuna garanzia sulla sua terminazione. Il lower bound z(l(λ)) prodotto ad una generica iterazione può essere inferiore al lower bound prodotto all iterazione precedente. Il lower bound LB tende a crescere rapidamente durante le primi iterazioni dell algoritmo per poi convergere lentamente verso z(d L ).
RILASSAMENTO LAGRANGIANO 23 Set Covering Si consideri il problema di Set Covering dell esercizio 3. Una possibile iterazione del Metodo Subgradiente è la seguente. Step 1. Poni α = 2. Poni z(u B) = 6 (soluzione euristica ottenuta ponendo x 1 = x 3 = 1, x 2 = x 4 = 0). Poni λ 1 = 1.5, λ 2 = 1.6 e λ 3 = 2.2. Step 2. La soluzione di L(λ) è x 1 = 1 e x 2 = x 3 = x 4 = 0 con z(l(λ)) = 4.2 Step 3. Le equazioni per il subgradiente sono: s 1 = (1 x 1 x 3 ) = 0 s 2 = (1 x 1 x 4 ) = 0 s 3 = (1 x 2 x 3 x 4) = 1 Step 4. θ = 2(6 4.2) (0 2 + 0 2 + 1 2 ) = 3.6 Step 5. L aggiornamento delle penalità Lagrangiane produce: λ 1 = max(0, 1.5 + 3.6(0)) = 1.5 λ 2 = max(0, 1.6 + 3.6(0)) = 1.6 λ 3 = max(0, 2.2 + 3.6(1)) = 5.8 L iterazione successiva produce: x 1 = x 2 = x 3 = x 4 = 1 con z(l(λ)) = 0.7 (< 4.2).
RILASSAMENTO LAGRANGIANO 24 Rilassamenti con vincoli di tipo diverso Si consideri il seguente problema P di programmazione lineare a numeri interi: (P ) z(p ) = min c T x s.t. A 1 x b 1 (15) A 2 x b 2 (16) A 3 x = b 3 (17) Bx d x {0, 1} dove A 1 è una matrice m 1 n, A 2 è una matrice m 2 n ed A 3 è una matrice m 3 n. Il rilassamento Lagrangiano del problema P secondo i vincoli (15), (16) e (17) è il seguente: (L(λ, µ, ω)) z(l(λ, µ, ω) = min c T x λ(a 1 x b 1 ) + s.t. µ(a 2 x b 2 ) ω(a 3 x b 3 ) Bx d x {0, 1} λ, µ 0 - λ: vettore di dimensione m 1 associato ai vincoli (15); - µ: vettore di dimensione m 2 associato ai vincoli (16); - ω: vettore (libero) di dimensione m 3 associato ai vincoli (17);
RILASSAMENTO LAGRANGIANO 25 Nel caso del problema P lo Step 5 del Metodo del Subgradiente si modifica come segue: Calcolo dei subgradienti (Step 3): - G i = b 1 i n - F i = b 2 i n - H i = b 3 i n a 1 ijx j, i = 1,..., m 1 ; a 2 ijx j, i = 1,..., m 2 ; a 3 ijx j, i = 1,..., m 3. Calcolo dello step T (Step 4): θ = m 1 i=1 α(z(ub) L(λ)) G 2 i + m 2 Fi 2 + m 3 Hi 2 i=1 i=1 (18) Per quanto riguarda l aggiornamento delle penalità Lagrangiane si ha (Step 5): - A 1 x b 1 : λ i = max[0, λ i + θg i ], i = 1,..., m 1 ; - A 2 x b 2 : µ i = max[0, µ i + θf i ], i = 1,..., m 2 ; - A 3 x b 3 : ω i = ω i + θh i, i = 1,..., m 3.
RILASSAMENTO LAGRANGIANO 26 Euristici Lagrangiani La soluzione di L(λ) può essere utilizzata per costruire una soluzione ammissibile al problema originale P. Nel caso del Set Covering, una soluzione ammissibile per L(λ) può contenere righe non coperte dalle variabili {x j } in soluzione. Una possibile Euristico Lagrangiano per il Set Covering si basa perciò sul seguente semplice algoritmo, applicabile una volta calcolata la soluzione di L(λ): Step 1. Poni S = {j : x j = 1, j = 1,..., n}. Step 2. Per ogni riga i non coperta (ovvero per cui aggiungi ad S la colonna corrispondente al min,...,n {c j : a ij = 1}. j S a ij x j = 0) Step 3. S è una soluzione ammissibile per il SCP di costo c j j S Si noti che gli Euristici di tipo Lagrangiano permettono di stimare la distanza dall ottimo della soluzione euristica prodotta in quanto è noto un lower bound z(l(λ)) al costo della soluzione ottima.