Tecniche di Decomposizione per Programmazione Lineare Intera (Mista)

Documenti analoghi
Introduzione al Column Generation Caso di Studio: il Bin Packing Problem

5.3 Metodo dei piani di taglio

Ricerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015

Ricerca Operativa A.A. 2007/ Esercitazione di laboratorio: Branch and Bound.

Ricerca Operativa A.A. 2007/ Esercitazione di laboratorio: Branch and Bound.

Metodi e Modelli per l Ottimizzazione Combinatoria Cover inequalities

3.3 Problemi di PLI facili

Soluzione dei problemi di Programmazione Lineare Intera

RICERCA OPERATIVA (9 cfu)

Università degli Studi di Roma La Sapienza

3.6 Metodi basati sui piani di taglio

Registro dell'insegnamento

COMPITO DI RICERCA OPERATIVA. max x 1 + 2x 2 + x 3 x 1 x 2 + x 3 = 1 2x 1 + 3x 2 + x 4 = 2

COMPITO DI RICERCA OPERATIVA. max 5 2x 1 + 3x 2 x 3 = 2 + x 1 5x 2 x 4 = 5 + x 2. x 5 = 1 + x 1 x 2

5.1 Metodo Branch and Bound

COMPITO DI RICERCA OPERATIVA APPELLO DEL 07/04/04

1 Il metodo dei tagli di Gomory

Formulazioni. Consideriamo il seguente problema di Knapsack 0-1. max (5x x 2. ) st 3x x 2. < 6 x {0,1} 2

Figura 1: 1) Si scriva la formulazione del problema come problema di PLI (con un numero minimo di vincoli) e la matrice dei vincoli.

Programmazione lineare

Programmazione Lineare Intera: Piani di Taglio

Domande d esame. Ricerca Operativa. G. Liuzzi. Giovedí 14 Maggio Istituto di Analisi dei Sistemi ed Informatica IASI - CNR

5.1 Metodo Branch and Bound

Macchine parallele M 1 M 2 M 3 J 1 J 2 LAVORI J 3 J 4

Programmazione Matematica: VII La scomposizione di Dantzig Wolfe

Possibile applicazione

Domini di funzioni di due variabili. Determinare i domini delle seguenti funzioni di due variabili (le soluzioni sono alla fine del fascicolo):

Parte V: Rilassamento Lagrangiano

Algoritmo Branch and Cut (B&C)

PROGRAMMAZIONE LINEARE E DUALITA'

RICERCA OPERATIVA (a.a. 2016/17) Nome: Cognome: Matricola:

Contenuto e scopo presentazione. Modelli Lineari Interi/Misti. Piani di taglio. Piani di taglio. Piani di taglio Versione 31/08/

COMPITO DI RICERCA OPERATIVA. max 3x 1 + 2x 2 x x 2 + x 3 = 4 2x 1 + x 2 + x 4 = 3

Programmazione Lineare Intera

Macchine parallele M 1 M 2 M 3 J 1 J 2 LAVORI J 3 J 4

Soluzione dei problemi di Programmazione Lineare Intera

Esercizio 1. Variabili decisionali:

3.4 Metodo di Branch and Bound

Stime dell ottimo - Rilassamenti. PRTLC - Rilassamenti

Algoritmi per la programmazione lineare: il metodo del simplesso

Algoritmi esatti. La teoria ci dice che per problemi difficili (come il

1) Data la seguente istanza di TSP (grafo completo con 5 nodi): c 12 = 52; c 13 = 51; c 14 = 40; c 15 = 53; c 23 = 44;

Il Branch & Bound. Definizione 1. Sia S R n. La famiglia S = {S 1, S 2,..., S k S} tale che S 1 S 2 S k = S viene detta suddivisione di S.

RICERCA OPERATIVA (a.a. 2015/16) Nome: Cognome: Matricola:

Si consideri il seguente tableau ottimo di un problema di programmazione lineare

x 1 x 2 x 3 x 5 La base iniziale è B 0 = I e risulta x B 0 = , x N 0 = Iterazione 0. Calcolo dei costi ridotti. γ 0 = c N 0 (N 0 ) T c B 0 =

5.5 Metodi dei piani di taglio

Massimo flusso e matching

COMPITO DI RICERCA OPERATIVA. max x 1 + x 2 x 1 2x 2 + x 3 = 4 x 1 x 2 x 3 = 3 x 2 + 2x 3 = 1 x 1, x 2, x 3 0

Bilanciamento di tempi e costi Progetti a risorse limitate Note bibliografiche

Metodi e Modelli per l Ottimizzazione Combinatoria Metodi basati su generazione di colonne

Parte IV: Matrici totalmente unimodulari

4. METODI DUALI DEL SIMPLESSO

4. Programmazione Lineare Intera

RICERCA OPERATIVA. Tema d esame del 13/12/2005

RICERCA OPERATIVA. Stock bamboline automobiline libri peluches costo (euro)

Esercizi di Programmazione Lineare

Dualitá in Programmazione Lineare e alcune conseguenze

Esercizi sulla Programmazione Lineare Intera

Programmazione Matematica / A.A Soluzioni di alcuni esercizi

min 2x 1 +4x 2 2x 3 +2x 4 x 1 +4x 2 +2x 3 + x 4 =6 2x 1 + x 2 +2x 3 + x 5 =3 x 0.

Programmazione Lineare Intera. Programmazione Lineare Intera p. 1/4

Metodi e Modelli per l Ottimizzazione Combinatoria Ripasso sulla teoria della dualità in programmazione lineare

RICERCA OPERATIVA (a.a. 2011/12) Nome: Cognome: Matricola:

Università Ca Foscari Venezia

COMPITO DI RICERCA OPERATIVA APPELLO DEL 08/01/04

RICERCA OPERATIVA. Tema d esame del 04/03/2008 (Simulazione)

Parte III: Algoritmo di Branch-and-Bound

Algoritmi generali per PLI

Metodi generali per la soluzione di problemi di PLI

Problemi di Localizzazione Impianti

RICERCA OPERATIVA (a.a. 2012/13) Nome: Cognome: Matricola:

3.2 Rilassamenti lineari/combinatori e bounds

Metodi e Modelli per l Ottimizzazione Combinatoria Ripasso sulla Programmazione Lineare e il metodo del Simplesso (parte I)

Sull algoritmo di ascesa duale per il problema della localizzazione di impianti

Geometria della programmazione lineare

Simplesso Revised. Domenico Salvagnin

Risoluzione di problemi di programmazione lineare tramite generazione di colonne

Programmazione Lineare Intera (ILP)

Esame di Ricerca Operativa del 16/02/15. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Quinto appello 27/6/ = 4. B b B = 2 b N = 4

Esame di Ricerca Operativa del 30/06/14. max 4 x 1 7 x 2 x 1 +7 x 2 7 x 1 4 x 2 7 x 1 +5 x 2 5 x 1 x 2 5 x 2 1 x 1 +4 x 2 6

Teoria della Programmazione Lineare Intera

RICERCA OPERATIVA. Tema d esame del 04/12/2008 (Simulazione 1)

RICERCA OPERATIVA (a.a. 2014/15) Nome: Cognome: Matricola:

12.1 IL PROBLEMA DEL CAMMINO MINIMO: L ALGORITMO DI DIJKSTRA

Le condizioni di Karush-Kuhn-Tucker

Esame di Ricerca Operativa del 17/07/17. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Rilassamento Lagrangiano

A.A Fondamenti di Ricerca Operativa. 2. Determinare β affinchè il poliedro descritto dal sistema di disequazioni

Sviluppando ancora per colonna sulla prima colonna della prima matrice e sulla seconda della seconda matrice si ottiene:

Algoritmi generali per PLI

Esame di Ricerca Operativa del 15/01/19. max 6 x 1 x 2 6 x x x 1 +2 x x 1 3 x x 1 4 x x 1 +2 x x 1 x 2 19

Indice. Premessa alla prima edizione 15 Premessa alla seconda edizione 17 Premessa alla terza edizione 19. Introduzione 21

RICERCA OPERATIVA (a.a. 2017/18) Nome: Cognome: Matricola:

COMPITO DI RICERCA OPERATIVA. max 8 5x 1 3x 2 x 3 = 1 + 4x 1 + x 2 x 4 = 1 x 1 + x 2 x 5 = 5 x 1 x 2

La dualità nella Programmazione Lineare

Il teorema di dualità forte

Transcript:

Tecniche di Decomposizione per Programmazione Lineare Intera (Mista) Domenico Salvagnin 2011-06-12 1 Introduzione Dato un problema di programmazione lineare intera (mista), non è sempre possibile (o conveniente) risolvere tale problema risolvendo a scatola chiusa la sua formulazione più naturale. Infatti tale formulazione potrebbe essere: troppo grande per poter essere risolta con un metodo esatto troppo debole per garantire la risoluzione in tempi accettabili Una possibile soluzione a tali problemi consiste nel ricorrere a tecniche di decomposizione. L impiego di tali tecniche è giustificato da i modelli decomposti sono di dimensione sensibilmente più piccola. Questo è ovviamente vantaggioso data la complessità esponenziale degli algoritmi MIP. la decomposizione permette di sfruttare la sparsità della matrice dei vincoli, ed in particolare una sua eventuale struttura quasi diagonale a blocchi. In generale, eventualmente dopo una permutazione delle righe e delle colonne del problema, la matrice A dei vincoli di un problema MIP ha una struttura arrow-head come in Figura 1(a), con una parte diagonale a blocchi e un insieme di vincoli/variabili complicanti. la decomposizione permette di sfruttare una sottostruttura specifica del problema, per la quale esistono algoritmi ad-hoc efficienti (polinomiali o molto veloci in pratica, come ad esempio una struttura knapsack). 2 Decomposizione di Benders La decomposizione di Benders si applica quando il problema si semplifica parecchio fissando un sottoinsieme di variabili (un caso particolare è la presenza di matrici di vincoli con struttura come in Figura 1(b)). Vediamo l applicazione di tale tecnica nel suo contesto più classico, cioè la risoluzione di problemi di programmazione lineare intera mista (tale classe di problemi rientra banalmente nella classe appena descritta, in quanto dopo aver fissato le variabili intere quello che resta è un semplice problema di programmazione lineare). Sia dato un problema di programmazione lineare intera mista min c T x + d T y Ax + By b x intero y 0 1

(a) (b) (c) Figure 1: Possibili strutture della matrice A. che assumiamo avere ottimo finito o essere impossibile. Introduciamo una variabile continua libera η che tenga conto del contributo delle variabili continue y nella funzione obiettivo, ottenendo: min c T x + η Ax + By b η d T y x intero y 0 e consideriamo la proiezione della regione ammissibile di tale problema nello spazio delle variabili (x, η). Attraverso il lemma di Farkas è possibile dimostrare che una descrizione esplicita di tale proiezione è data da min c T x + η (2.1) η u T i (b Ax) u i U (2.2) v T i (b Ax) 0 v i V (2.3) x intero (2.4) dove U e V sono gli insiemi dei vertici e dei raggi estremi (rispettivamente) del seguente poliedro P D = {π : π T B d T, π 0} Il sistema (2.1)-(2.4) è una riformulazione equivalente del sistema di partenza, quindi il valore delle rispettive soluzioni ottime coincide. I vincoli (2.2) prendono il nome di tagli di ottimalità, mentre i vincoli (2.3) prendono il nome di tagli di ammissibilità. Purtroppo la riformulazione (2.1)-(2.4) è caratterizzata da un numero esponenziale di vincoli (uno per ogni vertice e raggio estremo di P D ) e quindi non è pensabile poterla scrivere esplicitamente per poi risolverla a scatola chiusa con un algoritmo branch-and-cut. Si usa invece un algoritmo iterativo dovuto a Benders in cui si considera inizialmente un sottoinsieme dei vincoli che definiscono il problema, e vincoli ulteriori sono aggiunti nel corso dell algoritmo man mano che risultano violati. In particolare, vengono eseguiti i seguenti passi: Passo 1 Si considerino dei sottoinsiemi U r U e V r V (eventualmente all inizio U r = V r = ). Risolvere il sistema (2.1)-(2.4) con i soli vincoli (2.2) associati a U r e i soli vincoli (2.3) associati a V r, ottenendo una soluzione (x, η ). Tale problema viene detto master ed è a tutti gli effetti un rilassamento del problema originario. 2

Passo 2 Data la soluzione (x, η ) del master corrente, risolvere il problema di separazione max π T (b Ax ) π P D Tale problema viene detto problema slave ed è a tutti gli effetti un CGLP. Passo 3 Se il problema di separazione è illimitato, sia v un raggio estremo che ne certifichi l illimitatezza. Aggiornare V r = V r {v} e tornare al Passo 1. Passo 4 Se il problema di separazione ammette ottimo finito, sia u un vertice ottimo. Se η u T (b Ax ) allora la soluzione corrente è ottima (la soluzione (x, η ) soddisfa implicitamente tutti i vincoli della riformulazione). Altrimenti aggiornare U r = U r {u} e tornare al Passo 1. L interpretazione dell algoritmo di Benders è la seguente: al Passo 1 il problema master fornisce una assegnamento x per le variabili intere x e una stima η sul contributo delle variabili continue y nel miglior completamento di x. Al Passo 2 il problema di separazione verifica tale soluzione, controllando che effettivamente esista almeno un completamento ammissibile e che la stima sia corretta. Se il problema di separazione è illimitato (cioè {y : By b Ax, y 0} = ), allora non esiste nessun completamento y ammissibile e viene ritornato un taglio di ammissibilità (violato dalla soluzione x corrente) da aggiungere al master (Passo 3). In caso contrario, se anche la stima η è corretta allora l algoritmo termina. Altrimenti viene ritornato un taglio di ottimalità che corregge la stima (Passo 4). Vale la pena fare alcune osservazioni: l algoritmo di Benders non è altro che un algoritmo cutting-plane puro, in cui però il problema master non è un problema di programmazione lineare, ma un MIP a sua volta. i tagli (2.2)-(2.3), seppur derivati per una particolare soluzione (x, η ), sono globalmente validi (grazie alla teoria della dualità). la funzione obiettivo del problema di separazione non fa altro ce massimizzare la violazione del taglio da generare. la decomposizione di Benders non è limitata ai problemi MIP, ma può essere applicata anche in contesti diversi, ad esempio a problemi di programmazione lineare in cui vi sia una struttura come in Figura 1(b), come ad esempio quelli che nascono nella programmazione stocastica. 3 Decomposizione di Dantzig-Wolfe La decomposizione di Dantzig-Wolfe si applica quando il problema si semplifica parecchio eliminando un sottoinsieme di vincoli (un caso particolare è la presenza di matrici di vincoli con struttura come in Figura 1(c)). Vediamo l applicazione di tale tecnica nel suo contesto più semplice, cioè la risoluzione di problemi di programmazione lineare, ad esempio min c T x Dx = d Ax = b x 0 3

Per ipotesi, la regione ammissibile del nostro problema si può descrivere come X = {x : Dx = d} {x : Ax = b, x 0} dove i vincoli Dx = b sono considerati complicanti, mentre l insieme P x = {x : Ax = b, x 0} è un insieme semplice, cioè sul quale è possibile ottimizzare una arbitraria funzione obiettivo efficientemente. Assumiamo che l insieme P x sia limitato, cioè un politopo. Per il teorema di Minkowski, è possibile esprimere ogni vettore x P x come combinazione convessa di un numero finito di vertici {x g }: P x = {x : x = λ g x g λ g = 1 λ g 0} È possibile sostituire tale espressione per x nel sistema originario, ottenendo min (c T x g )λ g (3.1) (Dx g )λ g = d (3.2) λ g = 1 (3.3) λ g 0 (3.4) Come per la decomposizione di Benders, questa è una riformulazione esattamente equivalente al problema di partenza, seppur di dimensione esponenziale. In questo caso abbiamo infatti un numero esponenziale di variabili (una per ogni vertice di P x ). Ancora una volta la soluzione consiste in un approccio iterativo, in cui si parte con un sottoinsieme delle variabili ed ad ogni passo ne vengono aggiunte alcune di nuove. Il criterio con cui una variabile viene considerata necessaria è il costo ridotto. Difatti, se tutte le variabili ignorate hanno costo ridotto non negativo, allora la soluzione corrente è comunque ottima. In particolare, si ha il seguente schema: Passo 1 Si consideri il sottoinsieme G r G (eventualmente all inizio G r = ). Risolvere il sistema (3.1)- (3.4) con le sole variabili associate a G r. Sia (π, α ) una soluzione duale ottima di tale problema, dove i moltiplicatori π e α corrispondo ai vincoli (3.2) e (3.3). Passo 2 Data la soluzione duale (π, α ) del master corrente, risolvere il problema di pricing Sia z il valore della sua soluzione ottima x. min(c D T π ) T x x P x Passo 3 Se z α non esiste nessun vertice x g di costo ridotto negativo e l algoritmo termina. Altrimenti (z < α ), aggiornare G r = G r {x} e tornare al Passo 1. Si noti che a differenza di quanto accade nella decomposizione di Benders, il problema master non costituisce un rilassamento del problema originario e quindi il valore della sua soluzione non è un lower bound, se non all ultima iterazione in cui lo slave di pricing non trova nessuna colonna di costo ridotto negativo. 4

4 Metodi a generazione di colonne La decomposizione di Dantzig-Wolfe della sezione precedente può essere estesa alla risoluzione di problemi di programmazione lineare intera, con opportuni aggiustamenti. Consideriamo innanzitutto la definizione di P x. Ora siamo interessati alle soluzioni intere contenute in P x, cioè stiamo considerando l insieme Z Abbiamo due metodi a disposizione: Z = {x : x P x x Z n } convessificazione le soluzioni intere in Z sono ancora ottenute come combinazione convessa dei vertici di P x, ma le variabili originarie x devo essere mantenute nel problema per poter imporre il vincolo di interezza. Z = {x : x = λ g x g λ g = 1 λ g 0 x Z n } In tal caso la riformulazione diventa min (c T x g )λ g (Dx g )λ g = d λ g = 1 x = λ g x g λ g 0 x Z n (4.1) discretizzazione le soluzioni intere di P x sono ottenute come combinazione convessa a coefficienti interi delle soluzioni di Z. Questo equivale a considerare tutte le soluzioni di Z e poi sceglierne una. Z = {x : x = λ g x g λ g = 1 λ g {0, 1}} In tal caso la riformulazione diventa Vale la pena osservare che: min (c T x g )λ g (Dx g )λ g = d λ g = 1 λ g {0, 1} a seconda dell approccio seguito cambia leggermente il problema di pricing. Infatti nel primo caso abbiamo una variabile per ogni vertice di P x, mentre nel secondo abbiamo una variabile per ogni soluzione di Z. Nel secondo caso il problema di pricing è quindi un problema di programmazione lineare intera. 5

se P x ha solo vertici interi, cioè P x = conv(z), il rilassamento continuo delle formulazioni ottenute con entrambi i metodi è uguale (entrambi i metodi permettono di descrivere conv(z)). È possibile risolvere il rilassamento continuo di tali formulazioni esattamente come descritto nella sezione precedente. In generale però la soluzione ottima di tale rilassamento non corrisponderà ad una soluzione intera (a seconda della formulazione, x o λ non sono intere). È pertanto necessaria una fase enumerativa, in cui si combina l algoritmo branch-and-bound con la generazione di colonne: l algoritmo risultante prende il nome di branch-and-price. L implementazione di un algoritmo branch-and-price richiede alcune accortezze per avere un metodo corretto ed efficiente. In particolare: il tipo di branching deve essere scelto con cura, in quanto deve essere efficace e soprattutto non deve distruggere la struttura del problema di pricing. A questo riguardo si noti come fare branching sulle variabili λ non abbia queste proprietà, in quanto il fissare λ g = 0 è una scelta molto debole (scarta una sola soluzione/vertice) e complica notevolmente il problema di pricing (che deve essere modificato opportunamente per non ritornare come ottime le soluzioni vietate ). L alternativa è quella di effettuare branching sulle variabili originarie x del problema, scelta generalmente molto più efficace ma che richiede comunque uno studio ad-hoc del problema. come il master continuo al nodo radice non costituisce un rilassamento per il problema di partenza a meno che non venga portata a termine la generazione di colonne, lo stesso vale per gli altri nodi dell albero decisionale. Pertanto è necessario portare sempre a termine l algoritmo di Dantzig-Wolfe per avere un bound corretto ad un nodo e poter eventualmente applicare bounding. Si noti infine che la tecnica di generazione di colonne può essere usata come una euristica primale per il problema di partenza. In particolare è possibile risolvere in una prima fase il rilassamento continuo del nodo radice all ottimo (con l algoritmo di Dantzig-Wolfe) e poi risolvere con un algoritmo branch-and-cut a scatola chiusa la riformulazione ottenuta con il solo insieme di colonne generate nella prima fase. L algoritmo che ne risulta è euristico in quanto il sottoinsieme di colonne considerato è sufficiente per ottenere una soluzione ottima del solo rilassamento continuo, ma non necessariamente l ottimo intero. 6