• Non ci sono risultati.

Parte V: Rilassamento Lagrangiano

N/A
N/A
Protected

Academic year: 2021

Condividi "Parte V: Rilassamento Lagrangiano"

Copied!
27
0
0

Testo completo

(1)

Parte V:

Rilassamento Lagrangiano

(2)

Tecnica Lagrangiana

Consideriamo il seguente problema di Programmazione Lineare Intera:

P1L I min cTx Ax > b

Cx > d

x > 0, intera in cui

A = matrice m x n

C = matrice m1 x n

b = vettore di dimensione m

d = vettore di dimensione m1

x, c = vettori di dimensione n

(3)

Tecnica Lagrangiana

Supponiamo che

P1

L I sia un problema difficile, e

min cTx Cx > d

x > 0, intera

sia un problema facile.

In altre parole, stiamo supponendo che i vincoli Ax > b siano quelli che complicano la risoluzione del problema.

(4)

Tecnica Lagrangiana

Costruiamo allora un nuovo problema P2L I “inserendo” nella funzione obiettivo i vincoli complicati nel modo seguente:

P2L I min cTx – λT(Ax – b) Cx > d

x > 0, intera

λRm+ = vettore dei moltiplicatori di Lagrange

P2L I = problema Lagrangiano

L(λ) = min{cTx – λT(Ax – b): Cx > d, x > 0, intera }= funzione Lagrangiana

(5)

Tecnica Lagrangiana

Per ogni valore di λ > 0 fissato, la soluzione ottima del problema lagrangiano costituisce un bound duale sull'ottimo del problema originario. Infatti, il problema lagrangiano corrisponde ad un rilassamento (lagrangiano) del problema iniziale.

Proposizione: Sia z* il valore della soluzione ottima di P1L I.

Per ogni vettore non negativo λ si ha L(λ) < z*.

(6)

Tecnica Lagrangiana

Dim. Per ogni soluzione ammissibile x di P1L I si ha Ax > b Ax – b > 0.

Poiché λ > 0, abbiamo che λT(Ax – b) > 0.

Pertanto, per ogni vettore non negativo λ si ha z* = min{cTx : Ax > b, Cx > d, x > 0, intera}

> min {cTx – λT(Ax – b): Ax > b, Cx > d, x > 0, intera}

> min {cTx – λT(Ax – b): Cx > d, x > 0, intera} = L(λ).

(7)

Duale Lagrangiano

L'obiettivo di questo approccio è quello di determinare il vettore λ*

che fornisce il miglior lower bound L(λ*) per z*.

Per calcolare λ* è necessario risolvere il seguente problema di ottimizzazione

L(λ*) = max{L(λ): λ > 0}.

denominato duale Lagrangiano.

Perché si utilizza la denominazione di duale?

(8)

Duale Lagrangiano

Consideriamo un problema lineare della forma

PL = min{cTx : Ax > b, x > 0}

ed applichiamo il rilassamento lagrangiano sui vincoli Ax > b L(λ) = min{(cT – λA)x + λb: x > 0}.

Il duale lagrangiano avrà la forma

L(λ*) = max{L(λ): λ > 0}= max{min{(cT – λA)x + λb: x > 0}, λ > 0}.

Per λ fissato, se (cT – λA) < 0 la corrispondente componente di x sarà posta a + e quindi L(λ) = –.

Poiché il duale lagrangiano è in forma di max ha senso considerare solo quei vettori λ per cui (cT – λA) > 0. Pertanto il duale lagrangiano può essere riscritto nella forma

L(λ*) = max{λb: (cT – λA) > 0, λ > 0}

che corrisponde proprio al duale di PL.

(9)

Rilassamento lagrangiano e rilassamento lineare

Che relazione esiste tra il bound ottenibile con il rilassamento lineare zRL e quello ottenibile con il rilassamento lagrangiano L(λ*)?

Teorema: L(λ*) > zRL.

Pertanto il rilassamento lagrangiano è almeno tanto buono quanto il rilassamento lineare.

Tuttavia l'efficacia del rilassamento lagrangiano è legata all'efficienza con cui si riesce a risolvere il duale Lagrangiano.

(10)

Condizioni di ottimalità

per il rilassamento lagrangiano

La soluzione ottima del rilassamento lagrangiano potrebbe non essere ammissibile per P1L I a causa dei vincoli rilassati.

Inoltre, se anche la soluzione del rilassamento lagrangiano è ammissibile, non è detto che essa sia ottima per P1L I.

Proposizione(condizione sufficiente): Se, per un fissato valore di λ*, si ha che

1. La soluzione ottima xL* del problema lagrangiano è ammissibile per P1LI

2. (λ*)T(AxL* – b) = 0

allora xL* è una soluzione ottima anche per P1L I.

(11)

Condizioni di ottimalità

per il rilassamento lagrangiano

Dim: Per definizione, fissato λ, L(λ) = min{cTx – λT(Ax – b)}.

Dalla condizione 2, si ottiene che L(λ*) = cTxL*.

Inoltre L(λ*) è un lower bound per l'ottimo di P1L I, ossia cTxL* = L(λ*) < cTx

per ogni soluzione ammissibile x.

Dalla condizione 1. sappiamo che xL* è ammissibile per P1L I e

pertanto deduciamo che xL* è anche ottima per P1L I.

(12)

Soluzione del duale lagrangiano

Consideriamo il problema lagrangiano

e sia X = {x1, ..., xH} l'insieme di punti interi che soddisfano i vincoli di P2L I.

Per un dato λ, in ciascun punto xh, la funzione lagrangiana assume il valore (cT – λTA)xh + λTb, per h = 1, ..., H. Pertanto,

L(λ) = min {(cT – λTA)x1 + λTb, (cT – λTA)x2 + λTb,

...

(cT – λTA)xH + λTb}

P2L I min cTx – λT(Ax – b) Cx > d

x > 0, intera

(13)

Soluzione del duale lagrangiano

Pertanto

L(λ) = max v

v < (cT – λTA)xh + λTb per h = 1, ..., H λ > 0

Ricordiamo che:

Una funzione f: Rn R si dice concava se per ogni coppia x1, x2Rn e per ogni α, 0 < α < 1, risulta

αf(x1) + (1 – α)f(x2) < f(x1 + (1 – α)x2).

L(λ) è una funzione continua, lineare a tratti e concava.

(14)

Funzione lagrangiana per m = 1

λ L(λ)

λ*

L(λ*)

(cT – λaT)x1 + λTb

(cT – λaT)x2 + λTb

(cT – λaT)x3 + λTb (cT – λaT)x4 + λTb

(cT – λaT)x5 + λTb

(15)

Soluzione del duale lagrangiano

Pertanto risolvere il duale lagrangiano significa determinare il punto di massimo della funzione L(λ).

Osserviamo che L(λ) è una funzione non differenziabile.

Uno dei metodi più utilizzati per risolvere il duale lagrangiano è il metodo del subgradiente, che può essere applicato a funzioni continue ma non differenziabili.

(16)

Metodo del subgradiente

Def: Data L(λ) concava e un punto λ Rm in cui L non è differenziabile un subgradiente di L in λ è un vettore s Rm tale che, per qualsiasi altro punto λ'∈ Rm, si ha

L(λ') – L(λ) < sT(λ' – λ)

Osservazione 1: Possono esistere molti vettori s che soddisfano la relazione precedente.

Osservazione 2: Se L fosse differenziabile il suo unico subgradiente in λ sarebbe il suo gradiente ∇L(λ).

Osservazione 3: λ* è un punto di ottimo per la funzione L(λ) se 0 è un subgradiente di L in λ*.

(17)

Metodo del subgradiente

Il metodo del subgradiente per il calcolo di λ* consiste nel generare una successione di valori λ(0), λ(1), ..., λ(k), … convergente a λ* in cui

λ(k+1)= λ(k)+ θ(k)d(k) con

– d(k) = direzione di spostamento

– θ(k) = passo opportunamente specificato

Se il passo è scelto in maniera opportuna, l'algoritmo del subgradiente converge a λ*.

(18)

Scelta del subgradiente

Teorema: Siano λ(k) Rm e x(k) Zn+ due vettori tali che

L(λ(k)) = min{cTx – λ(k)T(Ax – b): Cx > d, > 0, intera}

= cTx(k) – λ(k)T(Ax(k) – b).

Allora il vettore (b – Ax(k)) è un subgradiente di L(λ) in λ(k).

Dim: Per un generico vettore λ risulta:

L(λ) = min{cTx + λT(b– Ax): Cx > d, > 0, intera}

< cTx(k) + λT(b– Ax(k))

= cTx(k) + λ(k)T(b– Ax(k)) + (λ – λ(k))(b– Ax(k)) = L(λ(k)) + (b– Ax(k))(λ – λ(k))

Dalla definizione di subgradiente segue la tesi.

(19)

Scelta del passo

La scelta del passo θ(k) è fondamentale per la convergenza o meno ad un punto di massimo λ*.

Inoltre, nel caso di convergenza, la scelta di θ(k) ne influenza notevolmente la velocità.

Se la sequenza θ(k) soddisfa le condizioni lim θ(k) = 0

θ(k) = +

allora la successione {λ(k)} generata scegliendo d(k) = s(k)/||s(k)||

converge a λ*.

k→ +∞

k=0 +∞

(20)

Algoritmo del subgradiente

Input: L(λ), λ(0) =punto iniziale , KMAX = massimo numero di iterazioni senza miglioramento 1. Inizializzazione k := 1.

2. Per un dato λ(k), calcola la soluzione x(k) del problema Lagrangiano.

3. s(k) := b − Ax(k). Se s(k) = 0, STOP 4. θ(k) := (zUB − L(λ(k – 1)))/||s(k) ||

5. λ(k+1) := λ(k) + θ(k) s(k)/||s(k) ||

6. k := k + 1

7. Se il lower bound non è migliorato nelle ultime K

MAX iterazioni, STOP, altrimenti vai al passo 2.

(21)

Esempio: TSP simmetrico

Una delle applicazioni più efficaci della tecnica lagrangiana è quella del TSP simmetrico.

Dati

G = (V, E) grafo completo, |V| = n

cij = costo associato all'arco ij, per ogni ij E

determinare un ciclo hamiltoniano su G di costo minimo.

Per formulare il TSP simmetrico, definiamo

S = sottoinsieme di nodi di V

E(S) = archi con entrambi gli estremi in S

δ(S) = archi con un estremo in S ed uno in V\S.

(22)

Esempio: TSP simmetrico

Consideriamo le variabili binarie xij = 1 se l'arco ij appartiene al ciclo hamiltoniano, xij = 0 altrimenti.

Formulazione:

min

cijxij

xij = 2 per ogni i V

xij < |S|– 1 2 < |S| < n–1 xij {0, 1} per ogni ij E

ij∈E

ijδ(i)

ij∈E(S)

(23)

Esempio: TSP simmetrico

I vincoli

xij = 2 per ogni i V

indicano che su ogni nodo del grafo devono incidere esattamente due archi del ciclo hamiltoniano.

ijδ(i)

ijE(S)

I vincoli

xij < |S|– 1 2 < |S| < n–1

garantiscono che nessun sottografo indotto dai nodi in S contenga sottocicli.

Tali vincoli sono in numero esponenziale (O(2n))!

(24)

Esempio: TSP simmetrico

Tuttavia alcuni degli (O(2n)) vincoli sono superflui.

Infatti, consideriamo un nodo arbitrario, sia esso v = 1, e scriviamo i vincoli soltanto per i sottoinsiemi S che non contengono tale nodo.

Una soluzione ammissibile per il TSP con questi vincoli corrisponde ancora ad un ciclo hamiltoniano.

Se, per assurdo, non fosse un ciclo hamiltoniano dovrebbe contenere un sottociclo. In realtà, dai vincoli di uguaglianza deduciamo che dovrebbe contenere almeno due sottocicli. Di questi, uno sicuramente non conterrà il nodo v = 1. Ma allora, per questo sottociclo il vincolo precedente sarebbe violato!!!

xij < |S|– 1 2 < |S| < n–1, 1 S

ij∈E(S)

(25)

Esempio: TSP simmetrico

Pertanto possiamo riformulare il problema come segue:

Formulazione:

min

cijxij

xij = 2

xij = 2 per ogni i V

xij < |S|– 1 2 < |S| < n–1, 1 S

xij = n

ij∈E

ijδ(1)

ijE(S)

ij∈E

ijδ(i)

(26)

Esempio: TSP simmetrico

Dato che il problema così formulato è difficile da risolvere, proviamo ad applicare il rilassamento lagrangiano rilassando gli n – 1 vincoli di uguaglianza sui nodi

Problema Lagrangiano:

L(

λ

) =min

cijxij

∑ λ

i

( ∑

xij – 2)

xij = 2

xij < |S|– 1 2 < |S| < n–1, 1 S

xij = n

xij {0, 1} per ogni ij E

ij∈E

ijδ(1)

ijE(S)

ijE

ijδ(i) i =2

n

(27)

Esempio: TSP simmetrico

Le soluzioni ammissibili del problema lagrangiano sono tutti gli 1-alberi sul grafo iniziale in cui ogni arco ij ha peso

cij

λ

i

λ

j

Pertanto, il problema lagrangiano è facile da risolvere.

Ad una generica iterazione i, dato il moltiplicatore

λ ' ,

scegliamo

s(i) = 2 –

x'ij

dove x' è la soluzione ottima del corrispondente problema lagrangiano L(

λ '

). Osserviamo che

||s||2=

∑ ( ∑

x'ij – 2)2

i =2 n

ijδ(i) ijδ(i)

Riferimenti

Documenti correlati

Prima di inviare la soluzione TRAMITE CELLULARE lo studente contatta il docente, il docente controlla il foglio della soluzione, se neces- sario fará una foto.. Solo dopo lo

• la chiamata ricorsiva che riproduce la struttura della formula (N + soluzione del problema della somma dei primi N-1 numeri.

In effetti, le 1000 particelle rilasciate tutte nello stesso punto e con le medesime condizioni iniziali (la velocità iniziale è sempre nulla) grazie alla natura stocastica della loro

=&gt; ad ogni istante t i da ciascuna sorgente attiva viene emesso un numero di puff proporzionale al tasso di emissione della sorgente:. - ogni puff contiene una

=&gt; conoscenza, ad ogni istante di interesse, del campo di turbolenza (soprattutto delle deviazioni standard delle tre componenti del vento).... Per quanto riguarda le sorgenti

[r]

Allora la soluzione ottima duale non cambia e, per la dualit` a forte, neanche la soluzione ottima del primale, cio` e l’aggiunta di due nuove alternative non inficia l’ottimalit`

Infatti, nei casi pratici, i volumi di produzione sono tali da richiedere un numero elevato di tondini tagliati secondo un determinato schema di taglio e pertanto, una buona