Fondamenti di Ricerca Operativa T-A a.a. 2015-2016 Soluzione dei problemi di Programmazione Lineare Intera Andrea Lodi, Enrico Malaguti, Paolo Tubertini, Daniele Vigo rev. 2. ottobre 2016
Fondamenti di Ricerca Operativa T-A a.a. 2015-2016 Programmazione Lineare Intera Complessità e Rilassamento Continuo
Programmazione Lineare Intera (P) z P = min c T x A x d x 0, intere vincoli di interezza: non lineari x intera sin π x = 0 x binaria x (x 1) = x 2 x = 0 PLI NLP in realtà la non linearità del problema è concentrata nella prescrizione di interezza 3
Problemi e algoritmi Algoritmo esatto: determina la soluzione ottima Se il problema è difficile il tempo di calcolo necessario ad un algoritmo esatto cresce molto rapidamente (= esponenzialmente) con la dimensione del problema I problemi di Programmazione Lineare Intera appartengono alla classe dei problemi difficili Rilassando il vincolo di interezza delle variabili si ottiene un problema di Programmazione Lineare I problemi di Programmazione Lineare appartengono alla classe dei problemi facili per i quali il tempo di calcolo cresce meno rapidamente (= polinomialmente) Gli algoritmi per PLI risolvono sequenze di problemi PL. 4
Geometria della PL Definizione 1 Gli insiemi {x 2 R n : T x apple 0 } e {x 2 R n : T x = 0 } si dicono, rispettivamente, semispazio a ne e iperpiano indotti da (, 0 ). Definizione 2 Si dice poliedro (convesso) l intersezione di un numero finito di semispazi a ni e iperpiani. Definizione 3 Si dice politopo un poliedro P limitato (esiste cioè M>0 tale che x apple M per ogni x 2 P ). Definizione 4 Un punto x di un poliedro P si dice punto di estremo o vertice di P se non può essere espresso come combinazione convessa stretta di altri due punti del poliedro, cioè se non esistono y, z 2 P, y 6= z, e 2 (0, 1) tali che x = y +(1 )z. 5
Geometria della PL (2) Teorema 1 (Minkowsky-Weil) Ogni punto di un politopo si può ottenere come combinazione convessa dei suoi vertici. Teorema 2 Se l insieme P delle soluzioni ammissibili del problema di Programmazione Lineare min{c T x : x 2 P } è limitato, allora esiste almeno un vertice ottimo. Dimostrazione Siano x 1,...,x k i vertici di P e z =min{c T x i : i =1,...,k}. Datoun qualunque y 2 P, occorre dimostrare che c T y z. Infatti y 2 P implica l esistenza di moltiplicatori 1,..., k 0, P k i=1 i =1,talichey = P k i=1 ix i.sihaallora c T y = c T kx i=1 ix i = kx i=1 i(c T x i ) kx i=1 iz = z. 6
Algoritmo del simplesso per PL 1. La regione ammissibile è un poliedro (intersezione di semispazi); 2. Le soluzioni ottime possono essere cercate sui vertici del poliedro. 3. Se un vertice è migliore dei suoi adiacenti, è ottimo (convessità della regione ammissibile). Algoritmo: parto da un vertice del poliedro ed iterativamente mi sposto su un vertice adiacente migliore. Quando non posso migliorare rispetto al vertice corrente, questo è ottimo. (L algoritmo si muove sul confine della regione ammissibile.) 7
Rilassamento continuo di PLI rimuovendo il vincolo di interezza: rilassamento continuo C(P) associato a P z C(P) z P Dim.: si cerca il minimo in un insieme più ampio x P x C(P) - x C(P) 8
Rilassamento continuo di PLI Th.: se la soluzione del rilassamento continuo è ammissibile per P (= è intera), Dim.: allora è ottima per P 1) z C(P) z P 2) x C(P) è ammissibile per P z C(P) = c T x C(P) z P z C(P) = z P 9
Algoritmo (euristico) per PLI begin determina con simplesso la soluzione x di C(P) if C(P) impossibile then STOP (P impossibile) else if C(P) illimitato then STOP (P illimitato, salvo casi particolari) else if x intero then STOP (x sol. ottima di P) else arrotonda ogni x j frazionaria all intero più vicino end Che soluzioni produce questo algoritmo? 10
CASO 1: soluzioni utili Problemi per cui i valori delle variabili della soluzione ottima sono molto elevati Es. pezzi da produrre (elevata quantità) C(P) C(P) arrotondato x 1 = 2449.51 2450 x 2 = 14301.1 14301 x 3 = 7800.92 7801 max x 1 +x 2 +x 3 24551.53 24552 3x 1 +x 2 21650 21649.63 21651 11
CASO 2: soluzioni inutili Problemi in cui i valori delle variabili decisionali all ottimo sono molto piccoli: Numero di edifici da realizzare Numero di veicoli da assegnare ad un servizio Opportunità di una scelta uso o meno di un tratto di strada in un percorso (sì/no) La parte frazionaria non è trascurabile e l arrotondamento può produrre facilmente soluzioni non ammissibili 12
CASO 2: soluzioni inutili (2) Soluzione intera e continua possono essere molto lontane x 1 x C(P) : Ottimo C(P) x P : Ottimo intero 13 x 2
CASO 3: soluzioni non ammissibili x 1 x C(P) : Ottimo C(P) x P : Ottimo intero x 2 Nessuno dei quattro punti interi attorno a x C(P) è ammissibile per P Enrico Malaguti - UNIVERSITÀ DI BOLOGNA Fondamenti di Ricerca Operativa T-A, a.a. 2015-2016 14
Algoritmi generali per PLI Metodi esatti tradizionali (anni 60-oggi): Metodo dei piani di taglio (cutting planes) Branch-and-Bound Programmazione Dinamica Metodi esatti più avanzati (anni 90-oggi): Branch-and-Bound + Cutting planes = Branch-and-Cut Branch-and-Price/Column generation 15
Programmazione Lineare Intera Algoritmo Branch and Bound
Algoritmi generali per PLI Metodi esatti tradizionali (anni 60-oggi): Metodo dei piani di taglio (cutting planes) Branch-and-Bound Programmazione Dinamica Metodi esatti più avanzati (anni 90-oggi): Branch-and-Bound + Cutting planes = Branch-and-Cut Branch-and-Price/Column generation 17
Branch and Bound Tecnica generale per la risoluzione di problemi di ottimizzazione combinatoria (F finito) Si basa sulla scomposizione del problema in sottoproblemi ( Divide and Conquer ) Problema da risolvere: P 0 = (z( ), F(P 0 )) Funzione obiettivo: z( ) per semplicità consideriamo un problema di massimo Regione ammissibile: F(P 0 ) Soluzione ottima: z * = z(p 0 ) = max{z(x) : x F(P 0 )} Miglior soluzione ammissibile nota: z Best (alla fine z * = z Best ) 18
Branch and Bound (2) Suddivisione di P 0 in K sottoproblemi: P 1, P 2,, P K la cui totalità rappresenti P 0 Ad esempio si ottiene suddividendo F(P 0 ) in sottoinsiemi F(P 1 ), F(P 2 ),,F(P K ) tali che K k= 1 F ( k ) ( 0 P = F P ) preferibilmente la regione ammissibile va partizionata: F(P i ) F(P j ) = P i, P j : i j 19
Rappresentazione Il processo di suddivisione (ramificazione, Branching) si può rappresentare mediante un albero decisionale (Branch Decision Tree) Nodi: problemi, Archi: relazione di discendenza La suddivisione può essere ripetuta ricorsivamente P 0 P 1 P 2 P K P 21 P 22 P 2K 20
Branch and Bound (3) La soluzione ottima del sottoproblema P k è: z k = z(p k ) = max{z(x) : x F(P k )} risolvere P 0 equivale a risolvere tutti i P k generati: z * = z(p 0 ) = max{z(p 1 ), z(p 2 ),, z(p K ), } Un sottoproblema P k è risolto se: 1. Si determina la soluzione ottima di P k (Es. PLI: P k è C(P k ) con soluzione x Ck intera); 2. Si dimostra che F(P k ) = (P k impossibile); 3. Si dimostra che z(p k ) z Best (Es. PLI : se z Ck z Best allora anche z k z Best ) I sottoproblemi non risolti vanno suddivisi 21
Branch and Bound per PLI (P 0 ) max z 0 = c T x Ax = d x 0, intero Notazione: x k soluzione ottima di P k (intera), di valore z k (z 0 z * ) x Ck soluzione ottima di C(P k ), di valore z Ck Si noti che: z Ck =c T x Ck z Ck z k = c T x k Se x C0 è intera x * = x 0 = x C0 (soluzione ottima); Altrimenti 22
Branching (2) Scelta una componente x C0 j frazionaria, imponiamo due condizioni mutuamente esclusive ed esaustive, valide per ogni soluzione intera di P 0 : x j x C0 j or x j xc0 j + 1 (P 1 ) max z 1 = c T x Ax =d x 0,intero x j x C0 j (P 2 ) max z 2 = c T x Ax = d x 0,intero x j x C0 j + 1 z 0 = max ( z 1, z 2 ) 23
Branching (3) Normalmente x C1 e /o x C2 non sono interi si continua a ramificare, cioè : Da ogni problema P i si creano due nuovi problemi P l e P k a meno che : x Ci sia intero, oppure il rilassamento continuo di P i sia impossibile Quale variabile si sceglie per il Branching? la prima frazionaria quella con parte frazionaria maggiore 24
Strategia di esplorazione Se esiste più di un sottoproblema in sospeso, qual è il prossimo da esaminare? Diverse strategie possibili: Depth first (seguendo una direzione predefinita) Best bound first (esplorando il ramo con bound del nodo più promettente) Nel corso utilizzeremo la Depth first secondo una direzione di esplorazione predefinita. Numeriamo i nodi del Branch-and-Bound secondo l ordine di esplorazione. 25
Branch and-bound per PLI (2) Esempio di problema PLI: max z x 1 + x 2 s.t. 5x 1 +3x 2 15 5x 1 3x 2 0 x 2 1/2 x 1, x 2 0 intere x 2 x C0 x C0 = (3/2,5/2) x 1 z C0 = 4 upper bound sul valore di z* 26
Prima ramificazione x C0 1 = 3/2 x 1 1 or x 1 2 : x 2 x 2 x C1 x 1 x 1 x C1 =(2, 5/3) 27
Seconda ramificazione (branching su x j x C0 j + 1) da P 1 : x C1 2 = 5/3 (P 3 ) P 1 + x 2 1 (P 2 ) P 1 + x 2 2 x 2 x 2 x C3 x 1 x C3 =(12/5, 1) x 1 impossibile 28
Terza ramificazione da P 3 : x C3 1 = 12/5 (P 5 ) P 3 + x 1 2 (P 4 ) P 3 + x 1 3 x 2 x 2 x C5 x 1 x C5 =(2, 1) INTERA! aggiorno z Best = 3 x 1 impossibile 29
Prima ramificazione torno a P 0 ed esploro il problema P 6 in sospeso: x C0 1 = 3/2 x 1 1 : x 2 x 2 x C6 x 1 x C6 =(1, 5/3) z C6 = 8/3 = 2 z Best = 3 x 1 (P 1 già risolto) 30
Albero decisionale x C0 = (3/2,5/2) P 0 U 0 = z C0 = 4 x 1 1 x 1 2 x C6 = (1, 5/3) U 6 = z C6 = 8/3 = 2 P 6 P 1 x C1 = (2, 5/3) U 1 = z C1 = 11/3 = 3 P 6 ucciso : STOP (z*=z 5 ) x C5 = (2, 1) z 5 = 3 INTERA! P 5 x 1 2 P 3 x 2 1 x C3 = (12/5, 1) U 3 = 17/5 = 3 x 1 3 P 4 x 2 2 P 2 31
Terminologia 0 (o P 0 ) nodo radice 4, 5, nodi foglia 1 padre di 2 e 3 2 e 3 figli di 1 1 progenitore di 2, 3, 4 e 5 2, 3, 4, 5 discendenti di 0 e 1 ramo nodo P 0 Si continua il branching finché esistono nodi attivi Soluzione di P 0 = sol. della foglia di costo minimo 32
Esempio min x 1 +2x 2 x 1 + x 2 4 x 1 +4x 2 6 8x 1 8x 2 3 x 1, x 2, 0 interi min x 1 +2x 2 x 1 + x 2 +x 3 = 4 x 1 +4x 2 x 4 = 6 8x 1 8x 2 x 5 = 3 x 1, x 2, x 3, x 4, x 5 0 interi 33
Esempio (7) x 2 P 0 x C0 = (3/2,9/8) L 0 = z C0 =!" 3, 75#$ = 4 fare branching sulla variabile fraz. di indice minimo; esplorare prima nodi >= x 1 34
Esempio (7) x 2 x 1 1 x 1 2 x 1 1 P 0 x C0 = (3/2,9/8) L 0 = z C0 =!" 3, 75#$ = 4 x 1 2 x C1 = (2,1) z 1 = 4 stop non esploro P 2 P 1 z = 4 x 1 35