04.02.2013 Views

3. Rilassamento Lagrangiano

3. Rilassamento Lagrangiano

3. Rilassamento Lagrangiano

SHOW MORE
SHOW LESS

Trasformi i suoi PDF in rivista online e aumenti il suo fatturato!

Ottimizzi le sue riviste online per SEO, utilizza backlink potenti e contenuti multimediali per aumentare la sua visibilità e il suo fatturato.

<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 1<br />

<strong>Rilassamento</strong> <strong>Lagrangiano</strong><br />

Tecnica più usata e conosciuta in ottimizzazione combinatoria per il<br />

calcolo di lower/upper bounds (Held and Karp (1970)).<br />

Si consideri il seguente problema P di programmazione lineare a<br />

numeri interi:<br />

(P) z(P) = min c T x<br />

s.t. Ax ≥ b (1)<br />

Bx ≥ d<br />

x ∈ {0,1}<br />

dove A è una matrice m1×n, B è una matrice m2×n, b è un vettore<br />

di dimensione m1, d è un vettore di dimensione m2 e c ed x sono vettori<br />

di dimensioni n.<br />

Supponiamo che i vincoli (1) siano vincoli “difficili”.<br />

Il <strong>Rilassamento</strong> <strong>Lagrangiano</strong> di P rispetto ai vincoli (1) si ottiene:<br />

1. rilassando dal problema P i vincoli (1);<br />

2. introducendo tali vincoli nella funzione obiettivo associando a loro<br />

un vettore di penalità, chiamato vettore delle penalità Lagrangiane<br />

(o moltiplicatori Lagrangiani).<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 2<br />

Il rilassamento <strong>Lagrangiano</strong> di P rispetto ai vincoli Ax ≥ b è il<br />

seguente problema L(λ):<br />

L(λ) z(L(λ)) = min c T x−λ(Ax−b)<br />

s.t. Bx ≥ d<br />

x ∈ {0,1}<br />

dove λ ≥ 0 è il vettore delle penalià Lagrangiane di dimensione m1 e<br />

L(λ) viene chiamata Funzione Lagrangiana.<br />

Esempio 1:<br />

(P) z(P) = min 3x1 +7x2+10x3<br />

s.t. x1 +3x2 +5x3 ≥ 7<br />

x1,x2,x3 ∈ {0,1}<br />

L(λ) z(L(λ)) = min 3x1+7x2 +10x3−λ(x1+3x2 +5x3−7)<br />

s.t. x1,x2,x3 ∈ {0,1}<br />

L’importanza di L(λ) sta nel fatto che z(L(λ)) , ∀λ ≥ 0, è un<br />

valido lower bound al costo della soluzione ottima di P, z(P).<br />

In certe condizione la soluzione ottima di L(λ) è anche la soluzione<br />

ottima di P.<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 3<br />

Teorema (Dualità Lagrangiana Debole).<br />

Il valore ottimo z(P) del problema P è maggiore o uguale al valore<br />

ottimo z(L(λ)) del problema L(λ), per ogni vettore λ ≥ 0, ovvero:<br />

Dimostrazione.<br />

z(P) ≥ z(L(λ)), ∀λ ≥ 0.<br />

Sia x ∗ la soluzione ottima di P.<br />

Si noti che x ∗ è anche una soluzione ammissibile per L(λ) per ogni<br />

λ ≥ 0. Si ha quindi che<br />

c T x ∗ −λ(Ax ∗ −b) ≥ z(L(λ))<br />

ma λ(Ax ∗ −b) ≥ 0 (poichè λ ≥ 0 e Ax ∗ ≥ b), quindi<br />

c T x ∗ ≥ z(L(λ)) ovvero z(P) ≥ z(L(λ)), ∀λ ≥ 0.<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 4<br />

Set Covering Problem<br />

Il Set Covering Problem (SCP) è il problema di coprire le righe di<br />

una matrice m×n (aij) con coefficienti 0 ed 1, con un sottoinsieme di<br />

colonne a costo minimo.<br />

Sia xj una variabile binaria 0-1 definita come segue:<br />

xj =<br />

⎧<br />

⎪⎨<br />

⎪⎩<br />

1 se la colonna j con costo cj è in soluzione;<br />

0 altrimenti.<br />

Una formulazione matematica per il problema SCP è la seguente:<br />

(SC) z(SC) = min n �<br />

cjxj<br />

j=1<br />

n�<br />

s.t.<br />

j=1<br />

aijxj ≥ 1, i = 1,...,m (2)<br />

xj ∈ {0,1}, j = 1,...,n<br />

Esempio 2: m = 3, n = 6, cj = [1,2,3,4,5,6]<br />

(aij) =<br />

Soluzione ottima S = {2,3} di costo 5.<br />

1<br />

2<br />

3<br />

⎡<br />

⎢<br />

⎣<br />

1 2 3 4 5 6<br />

1 0 1 0 1 0<br />

0 0 1 1 0 1<br />

0 1 0 0 1 1<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori<br />

⎤<br />

⎥<br />


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 5<br />

Il <strong>Rilassamento</strong> <strong>Lagrangiano</strong> del problema SC rispetto ai vincoli (2)<br />

è il seguente:<br />

(L(λ)) z(L(λ)) = min n �<br />

cjxj −<br />

j=1<br />

m �<br />

λi(<br />

i=1<br />

n �<br />

aijxj −1)<br />

j=1<br />

dove λi ≥ 0,i = 1,...,m.<br />

s.t. xj ∈ {0,1}, j = 1,...,n<br />

Il problema L(λ) può essere riscritto come segue:<br />

(L(λ)) z(L(λ)) = min n �<br />

(cj −<br />

j=1<br />

m �<br />

λiaij)xj +<br />

i=1<br />

m �<br />

λi<br />

i=1<br />

Posto Cj = cj − m �<br />

i=1<br />

s.t. xj ∈ {0,1}, j = 1,...,n<br />

λiaij,j = 1,...,n, L(λ) diventa:<br />

(L(λ)) z(L(λ)) = min n �<br />

Cjxj +<br />

j=1<br />

m �<br />

λi<br />

i=1<br />

s.t. xj ∈ {0,1}, j = 1,...,n<br />

la cui soluzione ottima può x ∗ essere calcolata ponendo:<br />

x ∗ j =<br />

⎧<br />

⎪⎨<br />

⎪⎩<br />

1 se Cj ≤ 0;<br />

0 altrimenti.<br />

,j = 1,...,n<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 6<br />

Esempio 3<br />

Si consideri il seguente problem di Set Covering:<br />

(P1) z(P1) = min 2x1 +3x2+4x3+5x4<br />

s.t. x1 +x3 ≥ 1<br />

x1 +x4 ≥ 1<br />

x2 +x3 +x4 ≥ 1<br />

x1,x2,x3,x4 ∈ {0,1}<br />

La soluzione ottima è x1 = x2 = 1 e x3 = x4 = 0.<br />

Rilassando mediante le penalità Lagrangiane λ1, λ2 e λ3 i 3 vincoli di<br />

P1 si ottiene il seguente problema:<br />

(L(λ)) z(L(λ)) = min 2x1 +3x2+4x3+5x4 −λ1(x1+x3−1)<br />

ovvero<br />

−λ2(x1+x4−1)−λ3(x2 +x3 +x4−1)<br />

s.t. x1,x2,x3,x4 ∈ {0,1}<br />

(L(λ)) z(L(λ)) = min C1x1 +C2x2+C3x3 +C4x4 +λ1 +λ2 +λ3<br />

s.t. x1,x2,x3,x4 ∈ {0,1}<br />

dove<br />

C1 = 2−λ1−λ2<br />

C2 = 3−λ3<br />

C3 = 4−λ1−λ3<br />

C4 = 5−λ2−λ3<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 7<br />

Se λ1 = 1.5, λ2 = 1.6 e λ3 = 2.2 si ha:<br />

C1 = 2−λ1 −λ2 = −1.1<br />

C2 = 3−λ3 = 0.8<br />

C3 = 4−λ1 −λ3 = 0.3<br />

C4 = 5−λ2 −λ3 = 1.2<br />

per cui la soluzione ottima x ∗ di L(λ) é<br />

x ∗ 1 = 1,x∗ 2 = x∗ 3 = x∗ 4<br />

= 0<br />

di costo z(L(λ)) = −1.1+0+0+0+1.5+1.6+2.2 = 4.2 (≤ 5).<br />

Se λ1 = 1, λ2 = 1 e λ3 = 3 si ha:<br />

C1 = 2−λ1 −λ2 = 0<br />

C2 = 3−λ3 = 0<br />

C3 = 4−λ1 −λ3 = 0<br />

C4 = 5−λ2 −λ3 = 1<br />

per cui la soluzione ottima x ∗ è di L(λ)<br />

x ∗ 1 = x ∗ 2 = x ∗ 3 = x ∗ 4 = 0<br />

di costo L(λ) = 0+0+0+0+1+1+3 = 5 (= z(P1)).<br />

Si noti che x ∗ non è una soluzione ammissibile per P1.<br />

Si noti inoltre che esistono soluzioni ottime alternative di L(λ) tutte di<br />

costo z(L(λ)) = 5 che si ottengono ponendo x ∗ 1 = 1 e/o x ∗ 2 = 1 e/o<br />

x ∗ 3 = 1 e x ∗ 4 = 0. Fra tali soluzioni vi è anche la soluzione ottima di P1.<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 8<br />

<strong>Lagrangiano</strong> Duale<br />

Dal teorema della Dualità debole per cui z(L(λ)) ≤ z(P), ∀λ ≥ 0,<br />

si ha che l’ottimo z(DL) del seguente problema:<br />

(DL) z(DL) = max<br />

λ≥0<br />

[z(L(λ))]<br />

è un valido lower bound a z(P); ovvero z(DL) ≤ z(P).<br />

Il problema DL è detto <strong>Lagrangiano</strong> Duale di P.<br />

Duality Gap<br />

Nel caso in cui z(DL) < z(P) allora si dice che esiste un duality<br />

gap fra il problema P e il problema DL.<br />

Siaλla soluzione ottima del problema DL. Siainoltre xla soluzione<br />

ottima di RL(λ), ovvero:<br />

z(DL) = z(L(λ)) = cx−λ(Ax−b)<br />

Si consideri il caso in cui x è anche l’ottimo di P, ovvero z(P) = cx.<br />

È evidente che z(DL) < z(P) se λ(Ax−b) > 0.<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 9<br />

Esempio 4<br />

(P) z(P) = min 3x1 +7x2+10x3<br />

s.t. x1 +3x2 +5x3 ≥ 7<br />

x1,x2,x3 ∈ {0,1}<br />

(L(λ)) z(L(λ)) = min 3x1+7x2 +10x3−λ(x1+3x2+5x3−7)<br />

ovvero<br />

s.t. x1,x2,x3 ∈ {0,1}<br />

(L(λ)) z(L(λ)) = min (3−λ)x1+(7−3λ)x2+(10−5λ)x3+7λ<br />

s.t. x1,x2,x3 ∈ {0,1}<br />

Per calcolare z(DL), calcoliamo L(λ), λ ≥ 0:<br />

λ = 0, z(L(0)) = 0 e x = (0,0,0);<br />

λ = 1, z(L(1)) = 7 e x = (0,0,0);<br />

λ = 2, z(L(2)) = 14 e x = (0,0,0) oppure x = (0,0,1);<br />

λ = 7 44 , z(L(7))<br />

= 3 3 3<br />

e x = (0,0,1) oppure x = (0,1,1);<br />

λ = 3, z(L(3)) = 14 e x = (0,1,1) oppure x = (1,1,1);<br />

λ > 3, z(L(λ)) = −2λ+20 e x = (1,1,1).<br />

Quindi esiste un gap di dualità in quanto z(DL) = 44<br />

3<br />

(= z(L(7<br />

3 ))),<br />

z(P) = 17 e x ∗ = (0,1,1), che corrisponde ad una delle soluzioni di<br />

z(L( 7<br />

3 )).<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 10<br />

Teorema (Dualità Lagrangiana Forte).<br />

Sia x la soluzione ottima di L(λ) per un dato λ ≥ 0.<br />

Se x e λ soddisfano le seguenti condizioni:<br />

x è ammissibile per P(ovvero Ax ≥ b) e (3)<br />

λ(Ax−b) = 0, (4)<br />

allora x è la soluzione ottima di P ed inoltre z(DL) = z(L(λ)).<br />

Dimostrazione.<br />

Dimostriamo x è una soluzione ottima di P.<br />

Essendo x soluzione ammissibile di P si ha<br />

cx ≥ z(P). (5)<br />

Per il teorema della dualità Lagrangiana debole si ha:<br />

Quindi da (5( e (6) si ottiene<br />

z(P) ≥ L(λ) = cx−λ(Ax−b) ). (6)<br />

� �� �<br />

=0 per la (4<br />

cx ≥ z(P) ≥ cx ovvero z(P) = cx (= z(L(λ))). (7)<br />

Dimostriamo che z(DL) = z(L(λ)).<br />

Per come è definito il problema DL si ha che:<br />

Quindi da (7) e (8) si ottiene<br />

z(DL) ≥ L(λ)<br />

z(P) ≥ z(DL)<br />

z(DL) = z(P).<br />

⎫<br />

⎪⎬<br />

⎪⎭<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori<br />

(8)


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 11<br />

Considerazioni<br />

Si noti che le condizioni del teorema della dualità lagrangiana forte<br />

sono sufficienti, ma non necessarie.<br />

Nell’esempio 4 la soluzione duale ottima che si ha per λ = 7<br />

3<br />

soluzione ottima del problema primale (x∗ = (0,1,1)), ma:<br />

λ(Ax−b) = λ(x1+3x2 +5x3−7) = 7 7<br />

(0+3+5−7) =<br />

3 3<br />

Dato un problema P:<br />

fornisce la<br />

�= 0<br />

Quali vincoli devono essere rilassati in modo <strong>Lagrangiano</strong> ?<br />

È necessario considerare rilassamenti per i quali la complessità computazionale<br />

necessaria per risolvere il problema L(λ) è di tipo polinomiale<br />

o pseudopolinomiale;<br />

Come risolvere il problema DL ?<br />

Il numero di penalità Lagrangiane necessarie per effettuare il rilassamento<br />

influenza la complessità computazionale necessaria per<br />

risolvere il problema DL;<br />

Che relazioni ci sono fra il <strong>Rilassamento</strong> Lineare di P ed il <strong>Rilassamento</strong><br />

<strong>Lagrangiano</strong> di P ?<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 12<br />

Relazione fra il <strong>Rilassamento</strong> Lineare<br />

ed il <strong>Rilassamento</strong> <strong>Lagrangiano</strong><br />

Il miglior lower bound ottenuto rilassando in modo <strong>Lagrangiano</strong> il problema<br />

P (ovvero la soluzione ottima del lagrangiano duale) è sempre<br />

maggiore o uguale al lower bound ottenuto dal rilassamento lineare di P<br />

Proprietà di integralità<br />

z(LP) ≤ z(DL)<br />

Definizione: proprietà di integralità. Si dice che il <strong>Rilassamento</strong><br />

<strong>Lagrangiano</strong> L(λ) soddisfa la proprietà di integralità se la regione ammissibile<br />

di L(λ) (per un dato vettore λ ≥ 0) ha solo vertici interi.<br />

Ne consegue che<br />

per qualunque vettore di costi c T<br />

z(L(λ)) = z(ril. lineare di L(λ))<br />

Teorema (Proprietà d’integralità). Se il <strong>Rilassamento</strong> <strong>Lagrangiano</strong><br />

L(λ) di P soddisfa la proprietà di integralità, allora z(DL) = z(LP).<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 13<br />

Assegnamento Generalizzato<br />

Sono dati m contenitori ed n oggetti. Il contenitore j ha una<br />

capacità pari a bj (j = 1,...,m). Ogni oggetto i (i = 1,...,n)<br />

occupa una spazio pari a aij nel contenitore j (j = 1,...,m). Sia cij il<br />

costo per assegnare l’oggetto i al contenitore j.<br />

Si vuole assegnare ogni oggetto ad uno ed un solo contenitore nel rispetto<br />

della capacità dei contenitori e minimizzando il costo complessivo.<br />

Una formulazione matematica è la seguente:<br />

xij =<br />

⎧<br />

⎪⎨<br />

⎪⎩<br />

1 se l’oggetto i viene assegnato al contenitore j;<br />

0 altrimenti.<br />

(AG) z(AG) = Min n � m�<br />

cijxij<br />

i=1j=1<br />

m�<br />

s.t.<br />

j=1<br />

n�<br />

i=1<br />

xij = 1,i = 1,...,n (9)<br />

aijxij ≤ bj,j = 1,...,m (10)<br />

xij ∈ {0,1},i = 1,...,n,j = 1,...,m<br />

I vincoli (9) impongono che ogni oggetto sia assegnato ad un ed un solo<br />

contenitore, mentre le disuguaglianze (10) impongono il vincolo sulla<br />

capacità dei contenitori.<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 14<br />

Si considerino i seguenti tre Rilassamenti del problema AG:<br />

- <strong>Rilassamento</strong> <strong>Lagrangiano</strong> rispetto ai vincoli (9):<br />

z(L1(λ)) = min n � m�<br />

(cij −λi)xij +<br />

i=1j=1<br />

n �<br />

λi<br />

i=1<br />

n�<br />

s.t.<br />

i=1<br />

aijxij ≤ bj,j = 1,...,m<br />

xij ∈ {0,1},i = 1,...,n,j = 1,...,m<br />

- <strong>Rilassamento</strong> <strong>Lagrangiano</strong> rispetto ai vincoli (10):<br />

z(L2(µ)) = min n � m�<br />

(cij +aijµj)xij −<br />

i=1j=1<br />

m �<br />

µjbj<br />

j=1<br />

s.t. m �<br />

j=1<br />

xij = 1,i = 1,...,n<br />

xij ∈ {0,1},i = 1,...,n,j = 1,...,m<br />

µj ≥ 0,j = 1,...,m<br />

- <strong>Rilassamento</strong> <strong>Lagrangiano</strong> rispetto ai vincoli (9) e (10):<br />

z(L3(λ,µ)) = min n � m�<br />

(cij −λi+aijµj)xij +<br />

i=1j=1<br />

n �<br />

λi−<br />

i=1<br />

m �<br />

µjbj<br />

j=1<br />

s.t. xij ∈ {0,1},i = 1,...,n,j = 1,...,m<br />

µj ≥ 0,j = 1,...,m<br />

Siccome L2 e L3 soddisfano la proprietà di integralità e possono essere<br />

facilmente risolti per ispezione. Si ha z(DL2 ) = z(DL3 ) = z(LP).<br />

Per quanto riguarda L1, si ha z(DL1 ) ≥ z(LP). Si noti che la<br />

risoluzione di L1(λ) coinvolge la risoluzione di m problemi di knapsack.<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 15<br />

Risoluzione del <strong>Lagrangiano</strong> Duale<br />

Teorema La Funzione Lagrangiana è concava.<br />

✻<br />

z(L(λ)) = z(L(αλ 1 +(1−α)λ 2 ))<br />

z(L(λ 1 ))<br />

λ1 λ2 λ = αλ1 +(1−α)λ 2<br />

z(L(λ 2 ))<br />

αz(L(λ 1 ))+(1−α)z(L(λ 2 ))<br />

αz(L(λ 1 ))+(1−α)z(L(λ 2 )) ≤ z(L(λ)).<br />

Subgradiente<br />

Un vettore s è detto subgradiente di L(λ) in λ se soddisfa:<br />

✻<br />

z(L(λ)) ≤ z(L(λ))+s(λ−λ)<br />

z(L(λ))+s(λ−λ))<br />

z(L(λ))<br />

λ λ<br />

z(L(λ))<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori<br />

✲<br />


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 16<br />

Il <strong>Lagrangiano</strong> Duale<br />

(DL) z(DL) = max<br />

λ≥0<br />

[z(L(λ))]<br />

potrebbe essere risolto come un problema di Programmazione Lineare<br />

Continua, ma spesso risulta molto oneroso dal punto di vista computazionale.<br />

Per risolvere DL si usano perciò altri metodi, di tipo euristico, fra i<br />

quali l’ottimizzazione subgradiente.<br />

1. Calcola la funzione z(L(λ)) per λ dato.<br />

2. Calcola un subgradiente s in λ;<br />

<strong>3.</strong> λ := λ+θs (un passo nella direzione del subgradiente)<br />

4. Se non è attivo un criterio di arresto, then goto 1.<br />

Il metodo genera una sequenza finita di vettori λ 1 ,λ 2 ,...,λ k e di valori<br />

z(L(λ 1 )), z(L(λ 2 )), ...,z(L(λ k ))<br />

N.B. i valori z(L(λ i )) non sono monotoni !<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 17<br />

Calcolo del subgradiente<br />

Dato λ sia x la soluzione di RL(λ), ovvero<br />

Per un generico λ si ha che<br />

z(L(λ)) = cx−λ(Ax−b) (11)<br />

z(L(λ)) = min<br />

x∈X (cT x−λ(Ax−b)) ≤ cx−λ(Ax−b) (12)<br />

Sottraendo dalla (12) la (11) si ottiene:<br />

ovvero<br />

z(L(λ))−z(L(λ)) ≤ −(λ−λ)(Ax−b)<br />

z(L(λ)) ≤ z(L(λ))−(Ax−b)(λ−λ)<br />

ne segue che s = −(Ax−b) è un subgradiente di z(L(λ)) in λ.<br />

Affinche z(L(λ)) sia maggiore di z(L(λ)) è necessario che:<br />

−(Ax − b)(λ − λ) > 0, ovvero, è necessario muoversi nella direzione<br />

del subgradiente:<br />

λ = λ+θs, θ > 0<br />

Il problema (non facile) è quello di determinare il valore di θ.<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 18<br />

Metodo del Subgradiente<br />

Indichiamo in forma di sommatoria i vincoli Ax ≥ b, ovvero,<br />

n�<br />

j=1<br />

aijxj ≥ bi, i = 1,...,m1.<br />

Algoritmo Subgradiente<br />

Step 1. Sia α un parametro predefinito. Poni LB = −∞.<br />

Sia inoltre z(UB) il costo di una soluzione euristica al problema.<br />

Si ponga λi = 0,i = 1,...,m1.<br />

Step 2. Si risolva il problema L(λ).<br />

Sia x ∗ la soluzione ottima di L(λ) di costo z(L(λ)).<br />

Poni LB = max[LB,L(λ)]. Se Ax ∗ ≥ b e λ(Ax ∗ −b) = 0<br />

allora x ∗ è la soluzione ottima di P.<br />

Step <strong>3.</strong> Siano si, i = 1,...,m1, i subgradienti per i vincoli rilassati,<br />

calcolati come:<br />

si = bi− n �<br />

j=1<br />

aijx ∗ j , i = 1,...,m1.<br />

Step 4. θ = α[z(UB)−z(L(λ))] / m1<br />

�<br />

s<br />

i=1<br />

2 i .<br />

Step 5. Si aggiornino le Penalita’ Lagrangiane nel seguente modo:<br />

λi = max[0,λi+θsi], i = 1,...,m1.<br />

Vai allo Step 2.<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 19<br />

In genere 0 < α ≤ 2.<br />

Osservazioni<br />

Il valore di α va opportunatamente ridotto (α = α/2) se per ∆<br />

iterazioni risulta z(L(λ)) ≤ LB. In genere ∆ = 20.<br />

In generale è necessario imporre un numero massimo di iterazioni<br />

all’algoritmo in quanto non vi è nessuna garanzia sulla sua terminazione.<br />

Il lower bound z(L(λ)) prodotto ad una generica iterazione può essere<br />

inferiore al lower bound prodotto all’iterazione precedente.<br />

Il lower bound LB tende a crescere rapidamente durante le primi<br />

iterazioni dell’algoritmo per poi convergere lentamente verso z(DL).<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 20<br />

Set Covering<br />

Si consideri il problema di Set Covering dell’esercizio <strong>3.</strong><br />

Una possibile iterazione del Metodo Subgradiente è la seguente.<br />

Step 1. Poni α = 2.<br />

Poni z(UB) = 6 (soluzione euristica ottenuta ponendo<br />

x1 = x3 = 1, x2 = x4 = 0).<br />

Poni λ1 = 1.5, λ2 = 1.6 e λ3 = 2.2.<br />

Step 2. La soluzione di L(λ) è x ∗ 1 = 1 e x ∗ 2 = x ∗ 3 = x ∗ 4 = 0<br />

con z(L(λ)) = 4.2<br />

Step <strong>3.</strong> Le equazioni per il subgradiente sono:<br />

s1 = (1−x ∗ 1 −x∗3 ) = 0<br />

s2 = (1−x ∗ 1 −x∗4 ) = 0<br />

s3 = (1−x ∗ 2 −x∗ 3 −x∗ 4) = 1<br />

Step 4. θ = 2(6−4.2)<br />

(0 2 +0 2 +1 2 )<br />

= <strong>3.</strong>6<br />

Step 5. L’aggiornamento delle penalità Lagrangiane produce:<br />

λ1 = max(0,1.5+<strong>3.</strong>6(0)) = 1.5<br />

λ2 = max(0,1.6+<strong>3.</strong>6(0)) = 1.6<br />

λ3 = max(0,2.2+<strong>3.</strong>6(1)) = 5.8<br />

L’iterazione successiva produce:<br />

x∗ 1 = x∗2 = x∗3 = x∗4 = 1 con z(L(λ)) = −0.7 (< 4.2).<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 21<br />

Rilassamenti con vincoli di tipo diverso<br />

Si consideri il seguente problema P di programmazione lineare a<br />

numeri interi:<br />

(P) z(P) = min c T x<br />

s.t. A1x ≥ b1<br />

A2x ≤ b2<br />

A3x = b3<br />

Bx ≥ d<br />

x ∈ {0,1}<br />

(13)<br />

(14)<br />

(15)<br />

dove A1 è una matrice m1×n, A2 è una matrice m2×n ed A3 è una<br />

matrice m3 ×n.<br />

Il rilassamento <strong>Lagrangiano</strong> del problema P secondo i vincoli (13),<br />

(14) e (15) è il seguente:<br />

(L(λ,µ,ω)) z(L(λ,µ,ω) = min c T x−λ(A1x−b1)+<br />

s.t. µ(A2x−b2)−ω(A3x−b3)<br />

Bx ≥ d<br />

x ∈ {0,1}<br />

λ,µ ≥ 0<br />

- λ: vettore di dimensione m1 associato ai vincoli (13);<br />

- µ: vettore di dimensione m2 associato ai vincoli (14);<br />

- ω: vettore (libero) di dimensione m3 associato ai vincoli (15);<br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori


<strong>Rilassamento</strong> <strong>Lagrangiano</strong> AA 2009/10 22<br />

Nel caso del problema P lo Step 5 del Metodo del Subgradiente si<br />

modifica come segue:<br />

Calcolo dei subgradienti (Step 3):<br />

- Gi = b1 i − n �<br />

a<br />

j=1<br />

1 ijx ∗ j, i = 1,...,m1;<br />

- Fi = b2 i − n �<br />

a<br />

j=1<br />

2 ijx ∗ j, i = 1,...,m2;<br />

- Hi = b3 i − n �<br />

a<br />

j=1<br />

3 ijx ∗ j, i = 1,...,m<strong>3.</strong><br />

Calcolo dello step T (Step 4):<br />

θ =<br />

m1 �<br />

G<br />

i=1<br />

2 i<br />

α(z(UB)−L(λ))<br />

m2 �<br />

+<br />

i=1<br />

F 2<br />

i<br />

m3 �<br />

+ H<br />

i=1<br />

2 i<br />

(16)<br />

Per quanto riguarda l’aggiornamento delle penalità Lagrangiane si<br />

ha (Step 5):<br />

- A1x ≥ b1: λi = max[0,λi+θGi], i = 1,...,m1;<br />

- A2x ≤ b2: µi = max[0,µi+θFi], i = 1,...,m2;<br />

- A3x ≤ b3: ωi = ωi +θHi, i = 1,...,m<strong>3.</strong><br />

Modelli per le Decisioni - M. Dell’Amico/M. Iori

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!