Contenuto e scopo presentazione Premesse: • modelli ILP o MILP sono estremamente flessibili e possono essere utilizzati per una vasta classe di problemi. Modelli Lineari Interi/Misti Contenuto: • viene presentato il metodo più diffuso di soluzione di problemi di ILP o di MILP. Branch and Bound Versione 15/06/2005 18.32 Scopo: • fornire le capacità di – risolvere all’ottimo problemi di ILP o di MILP, – sapere utilizzare i sw più diffusi. Raffaele Pesenti Raffaele Pesenti Programmazione lineare {0,1}- 01LP Ripasso Rappresentazione minimale: la rappresentazione esterna Ax ≤ b di un poliedro P ⊆ ℜ n di dimensione n è massimale se e solo se ogni disequazione definisce una faccia massimale. Ogni faccia massimale deve inoltre corrispondere ad una disequazione del sistema. Quando il poliedro non ha dimensione massima alcune disequazioni di Ax ≤ b sono in realtà equazioni implicite e corrispondono alle facce improprie. Ogni equazione corrispondente ad una faccia massimale non è implicata dalle altre equazioni. Raffaele Pesenti 2 3 Assunzione: nel seguito si considereranno solo problemi in cui le variabili siano superiormente o inferiormente limitate. Riduzione ILP ad 01LP: per ridurre ILP a 01LP basta sostituire ogni variabile intera xi, 0 ≤ xi ≤ u con un numero (logaritmico in u) di variabili binarie. Dato un qualunque problema ILP posto m=log2 u si può ottenere un problema con sole variabili binarie 01LP introducendo la seguente sostituzione (polinomiale) xi ↔ 20xi0 + 21xi1 + 22xi2 + ... + 2mxim Raffaele Pesenti 4 Formulazioni lineari Problema 01LP: (S, c ,max): max cx x∈S dove S è un insieme discreto (e ovviamente finito) di vettori binari. (I ragionamenti successivi vanno rovesciati nel caso di problemi di minimo.) Formulazioni lineari formulazione lineare generica Esempio: sia S={(0,0),(1,0),(0,1)} Formulazione lineare: un poliedro P={x: Ax ≤ b} è detto formulazione lineare del problema 01LP (S, c ,max) se e solo se S =P ∩ {0,1} conv(S) Teorema: un problema lineare 01LP (S, c ,max) ammette sempre la formulazione lineare conv(S) con la proprietà che x ∈ S se e solo se x è un vertice di conv(S) Raffaele Pesenti formulazione non corretta 5 Rilassamento lineare: dato un problema 01LP espresso rispetto ad una formulazione lineare max z=cx max zRL=cx il corrispondente rilassamento lineare è Ax ≤ b Ax ≤ b x ∈{0,1}n 0≤x≤1 i.e., compatibilmente con le condizioni Ax ≤ b, invece di vincolare x ai vertici dell’ipercubo unitario le si permette di assumere qualunque valore all’interno di esso Esempio: max z= 5x1+3x2 max zRL =5x1+3x2 6x1 + 4x2 ≤ 7 6x1 + 4x2 ≤ 7 -2x1 + 2x2 ≤ 3 rilassato diventa -2x1 + 2x2 ≤ 3 x1≥0 x1≥0 x2≥0 x2≥0 x1,x2 ∈{0,1} 0 ≤ x1,x2 ≤ 1 Equivalenza tra un problema 01LP e sua formulazione lineare: per definizione di formulazione lineare P={x: Ax ≤ b} Esempio: max 5x1+3x2 x∈{(0,0),(1,0),(0,1)} Raffaele Pesenti ⇔ ⇔ max 5x1+3x2 6x1 + 4x2 ≤ 7 -2x1 + 2x2 ≤ 3 x1≥0 x2≥0 x1,x2 ∈{0,1} max z= cx Ax ≤ b x ∈{0,1}n ⇔ 6 Rilassamenti lineari Formulazioni lineari max z=cx x∈S Raffaele Pesenti max 5x1+3x2 x1 + x2 ≤ 1 x1≥0 x2≥0 x1,x2 ∈{0,1} 7 Raffaele Pesenti 8 Rilassamenti lineari Rilassamenti lineari Commenti: • tutte le formulazioni lineari di uno stesso problema 01LP hanno le stesse soluzioni sia ammissibili che ottime, viceversa, le soluzioni, sia ammissibili che ottime, dei rilassamenti lineari possono essere differenti. differenti soluzioni ottime dei diversi rilassamenti soluzione ottima di tutte le formulazioni lineari curva di livello della funzione obiettivo Raffaele Pesenti 9 Rilassamenti lineari Commenti (cont.): • noto il bound sull’errore percentualeε (x’)%, decidere se accettare x’ è una scelta che dipende dal contesto e dall’incertezza con cui sono noti i parametri del problema • nell’ottica dei punti precedenti, per un dato problema di 01LP, una formulazione lineare P1 è preferibile ad un’altra P2 quando l’upper bound ottenibile dal rilassamento continuo derivato da P1 è più stringente (minore in un problema di massimo) che l’upper bound ottenibile dal rilassamento continuo derivato da P2 z1*RL ≤ z2*RL Se e solo se la condizione precedente si verifica per qualunque vettore di costo c la formulazione P1 è detta migliore di quella P2, ciò si verifica se e solo se P1 ⊂ P2 • esiste una formulazione ottima P=conv(S), in cui tra l’altro z*RL= z* • tra le formulazioni che presentano vincoli con big M sono da preferirsi quelle con i valori delle M il più piccolo possibile. Raffaele Pesenti 11 Commenti (cont.): • in un problema 01LP di massimo vale la relazione z*RL ≥ z* Infatti, data una formulazione P={x: Ax ≤ b}, la soluzione ottima z*, x* di max z=cx max zRL=cx è ammissibile per Ax ≤ b Ax ≤ b 0≤x≤1 x ∈{0,1}n • z*RL è una limitazione superiore (upper bound) della soluzione ottima del problema 01LP considerato. La conoscenza di un upper bound è estremamente utile perché permette di valutare (in tempi polinomiali) la qualità di una soluzione ammissibile eventualmente a disposizione. Sia infatti x’ una soluzione data e ad essa corrisponda il valore della funzione obiettivo z(x’), chiaramente z(x’) ≤ z* ≤ z*RL quindi l’errore che si compie accontentandosi di x’ è non superiore a ε (x’)% ≤ (z*RL - z(x’))/ z(x’) Raffaele Pesenti 10 Rilassamenti lineari e involucri convessi Equivalenza per un problema 01LP: se P={x: Ax ≤ b} = conv(S) allora per qualunque c max z=cx max z= cx ⇔ Ax ≤ b ⇔ x∈S x ∈{0,1}n Raffaele Pesenti max z= cx Ax ≤ b 12 Rilassamenti lineari e involucri convessi per ILP Rilassamenti lineari e involucri convessi Commenti: • se dato S fosse semplice fornire una formulazione esterna di conv(S) si potrebbe risolvere il problema 01LP attraverso gli algoritmi di soluzione di problemi di programmazione lineare continua • le facce massimali di conv(S) però possono essere di numero esponenziale. Ciò nonostante ci si potrebbe accontentare di risolvere il problema lineare attraverso l’uso di un oracolo di separazione che, data una soluzione x che soddisfa certamente solo un sottoinsieme dei vincoli che descrivono conv(S), ne garantisca l’ammissibilità (e quindi ottimalità) oppure fornisca una disequazione (corrispondente ad una faccia massimale) che risulti violata. Purtroppo, in generale, non esistono algoritmi polinomiali che implementano un tale oracolo di separazione, al più esistono algoritmi più o meno efficienti che possono indicare se la soluzione corrente viola una disequazione all’interno di un sottoinsieme di tutte quelle considerabili. Raffaele Pesenti 13 Problema ILP: (S, c ,max): max cx x∈ S dove S è un insieme discreto e finito di vettori interi. In generale l’involucro convesso di S potrebbe contenere anche soluzioni intere non appartenenti ad S, in questo caso, può convenire ridursi inizialmente ad un problema 01LP. In pratica però accade spesso che il problema venga già formulato in modo “esterno”, i.e., sotto forma di max z= cx Ax ≤ b x ∈ Zn In questi casi P={x: Ax ≤ b} può essere considerata una prima formulazione e quindi si possono applicare i ragionamenti dei lucidi precedenti. Raffaele Pesenti 14 Branch and Bound (B&B) Metodi generali di soluzione di 01LP Metodi generali di soluzione di 01LP: i metodi generali di soluzione di problemi 01LP a partire da una formulazione iniziale: – introducono vincoli successivi per ottenere formulazioni via via migliori fino a giungere ad una che abbia in comune con conv(S) il vertice ottimo (metodo dei piani di taglio), oppure – enumerano implicitamente tutte le soluzioni intere suddividendo progressivamente la formulazione iniziale in vari poliedri più piccoli. La suddivisione avviene in modo da scartare ad ogni passo alcune delle soluzioni non intere incluse nel poliedro originale finché potenzialmente alla fine del processo ogni soluzione ammissibile coincide con un diverso poliedro (metodo del branch and bound), oppure – eseguono entrambe le operazioni precedenti. Branch and Bound: Raffaele Pesenti Raffaele Pesenti 15 Il B&B è un metodo di esplorazione dello spazio delle soluzioni basata sull’ enumerazione implicita : – il metodo esamina ricorsivamente sottoinsiemi disgiunti di soluzioni (branching) e li valuta sulla base di una stima del migliore valore che la funzione obiettivo assume in ciascun sottoinsieme (bounding). Elimina di soluzioni che certamente non contengono la soluzione ottima. – la stima avviene risolvendo un rilassamento, in genere lineare (RL), del problema definito sul solo sottoinsieme di soluzioni. 16 Branch and Bound (B&B) Branch and Bound (B&B) Si considera il problema 01LP o ILP max {z= cx, Ax ≤ b, x ∈ Zn} e una sua formulazione P={x∈ℜn : Ax ≤ b}. Si risolve il problema rilassato lineare (RL) corrispondente, determinando x0. Se x0 è intera si è determinata la soluzione ottima, altrimenti si sceglie una componente x0j non intera della soluzione e si decompone la regione di ammissibilità P0={x: Ax ≤ b} del RL in due regioni disgiunte: P1={x: Ax ≤ b, xj ≤ x0j } P2={x: Ax ≤ b, xj ≥ x0j +1} Si noti che P1 ∩P2 = ∅, P1 ∪P2 ≠P0, ma (P1 ∩ Zn) ∪ (P2 ∩ Zn) = (P0 ∩ Zn) i.e., complessivamente si continuano a considerare le stesse soluzioni intere, mentre vengono scartate alcune soluzioni continue del problema rilassato. Raffaele Pesenti 17 In questo modo si può separare il problema originale in due problemi disgiunti associati a P1 e P2. Quindi si considerano i nuovi due problemi iterando il procedimento, potenzialmente alla fine di tutte le suddivisioni si generano tanti poliedri composti da un solo punto intero quante sono le soluzioni ammissibili 1 2 nodo 2 RL associato al P2 Raffaele Pesenti 18 x2 4 3 2 1 1 Q – la soluzione di RL associato al nodo non è intera, ma è possibile stabilire che l’esplorazione della porzione di albero al di sotto del nodo non conduce alla soluzione ottima (bounding). 2 3 0 x1≤1 – la soluzione di RL associato al nodo è intera; obiettivo P 0 – il RL associato ad un nodo non ammette soluzione; 1 Raffaele Pesenti x1 4 x1≥2 P N x2 4 3 2 1 0 19 xj ≥ x0j +1 nodo 1 RL associato al P1 Si procede risolvendo i RL associati ai nuovi nodi 1 e 2. Se la soluzione non è intera si ramifica (branching) ulteriormente l’albero. Perché l’esplorazione non sia totale, il branching deve essere fermato (pruning) quando: Raffaele Pesenti 0 xj ≤ x0j Ad ogni nodo è associato un RL Esempio (grafico) Branch and Bound (B&B) nodo 0 RL associato al P0 L’esplorazione dello spazio delle soluzioni effettuato dal metodo del Branch-and-Bound si può rappresentare per mezzo di un albero (“enumeration tree”). 2 x2 4 3 2 1 Q 1 2 3 4 x1 0 N 1 2 3 4 x1 20 x1 ≤ 1 Q x2 ≤ 1 M 3 0 P 1 x2 ≤ 2 R 4 Bounding, il principio base: si supponga di aver trovato una soluzione intera risolvendo il RL associato ad un nodo, e.g., nodo 3 in figura, siano note inoltre le soluzioni degli altri nodi visitati e valgano le relazioni, e.g., z4RL> z3RL z2RL≤ z3RL 0 I valori z2RL, z3RL e z4RL rappresentano degli 0 x j ≥ x 0j + 1 x j ≤ x j upper bound rispetto a qualsiasi soluzione intera determinabile ramificando 1 2 rispettivamente i nodi 2, 3 e 4. Infatti, 2 3 quando si ramifica un nodo, il valore x k ≤ x1k x k ≥ x 1k + 1 z RL ≤ z RL dell’obiettivo associato ai nodi successori 3 non può essere migliore dell’obiettivo 4 4 3 3 associato al nodo padre, dal momento che z RL > z RL z RL i RL dei nodi successori sono più vincolati soluzione intera del RL del nodo padre. 2 N x2 ≥ 2 Bounding x1 ≥ 2 x2 ≥ 3 5 6 soluzione frazionaria non ammissibile intera ottima non ammissibile peggiore di R x2 x2 4 4 3 3 2 2 R M 1 1 x1 x1 0 1 2 3 4 0 1 2 3 Raffaele Pesenti 21 Raffaele Pesenti 22 Bounding Bounding Bounding, il principio base (cont.): Poiché la soluzione x associata a z3RL è intera, LB= z3RL rappresenta anche il miglior lower bound corrente per la soluzione ottima del problema complessivo: • non ha più senso quindi esplorare l’albero sotto il nodo 2 poiché le soluzioni associate ai suoi nodi non possono migliorare la soluzione intera corrente (il nodo 2 è potato, pruned). • analogamente non ha senso esplorare l’albero sotto il nodo 3. • invece non si può concludere sul nodo 4 che rimane attivo. Si deve esplorare l’albero sotto di esso. • il RLi associato ad un nodo i (dove Aix=bi è l’insieme dei vincoli originali più i vincoli via via aggiunti ad ogni branching) i (RL)i max zRL = c x, Ai x = bi x ≥ 0 0 x j ≤ x 0j x j ≥ x 0j + 1 1 x k ≤ x1k 3 3 LB = z RL x k ≥ x 1k + 1 • xlb, la migliore soluzione intera LB sino ad ora trovata esplorando l’albero • xub, la soluzione non intera di RLi se vale ziRL= cxub ≤ cxlb =LB , poiché è noto che cxint ≤ cxub dove xint è soluzione 2 2 3 z RL ≤ z RL ottima intera di ( ILP) i max z i = c x, Ai x = b i , x ∈ Z n 4 allora ne consegue che cxint ≤ cxub ≤ cxlb. Quindi la migliore soluzione intera contenuta in Pi={x∈ℜn: Ai x = b, x ≥ 0} non potrà mai essere migliore della soluzione intera corrente xlb. 4 3 z RL > z RL soluzione intera Raffaele Pesenti In generale, dati: 23 Raffaele Pesenti 24 Bounding 1. Inizializzazione Esempio di possibile evoluzione della visita dell’albero nodo “pruned” xk ≤ x1k soluzione intera LB 3 0 x j ≤ x 0j x j ≥ x 0j + 1 1 2 3 Porre LB = - ∞ valore corrente dell’obiettivo (lower bound) e a nil la soluzione correntemente ottima. 2. Branching 4 ( zRL > LB3 ) 4 3 = z RL Sia 0 il nodo attivo e P0 il poliedro associato al RL. 2 ( z RL ≤ LB 3 ) x k ≥ x 1k + 1 Algoritmo di Branch and Bound Se non esiste un nodo attivo (anche detto aperto) andare al passo 7, altrimenti scegliere il nodo attivo j. x f ≤ x 4 f x f ≥ x 6 5 x5: soluzione ottima intera LB = z ( LB 5 ≥ LB ) 5 5 RL 3 4 f +1 Se il RL di j è stato risolto in precedenza andare al passo 3, altrimenti al 4. 3. Separazione (z 6 RL ≤ LB ) 5 P j +1 = P j ∩ Tutti i nodi attivi, i.e., quelli che non vengono tagliati devono essere esplorati. L’esplorazione termina quando non ci sono più nodi attivi. Raffaele Pesenti Scegliere una variabile frazionaria di base x Bi = y ij0 e suddividere Pj in 25 {x : x Bi ≤ y i j0 } P j+ 2 = P j ∩ {x :x Bi ≥ y i j0 + 1 } creando due nuovi nodi attivi (il nodo j non è più attivo). Andare al passo 2. Raffaele Pesenti 26 4. Soluzione di RL Risolvere il RL associato a j. Se non esiste soluzione tagliare il nodo (il nodo non è più attivo) ed andare al passo 2. Se esiste soluzione ottima xj intera andare al passo 5, altrimenti andare al 6. Algoritmo di Branch and Bound Commenti: • un nodo figlio presenta un vincolo in più del nodo padre. Nel caso di rilassamento lineare la soluzione del problema associato al nodo figlio può essere quindi ottenuta con il simplesso duale a partire dalla soluzione ottima del nodo padre 5. Pruning per integrità • la convergenza in un numero finito di passi è garantita se il problema ha soluzioni ottime finite. Nel caso peggiore però l’algoritmo è esponenziale e può ridursi ad enumerare tutte le soluzioni ammissibili Tagliare il nodo j e porre LB = max{LB, zj} (il nodo j non è più attivo). Se il LB viene aggiornato, porre la soluzione corrente ottima uguale a xj. Andare al passo 6. • le prestazioni dell’algoritmo dipendono in maniera drammatica dal livello a cui avvengono le potature dei nodi dell’albero di enumerazione. È fondamentale quindi che i problemi rilassati che vengono risolti ad ogni nodo: • risultino (quanto più spesso possibile) inammissibili se il corrispondente problema intero non ammette soluzioni ammissibili • forniscano soluzioni zRL il più vicino possibili a quelle del corrispondente problema intero ne consegue che la scelta della formulazione del problema di ILP deve essere fatta con estrema cura e che il rilassamento continuo può non essere l’unica scelta da prendere in considerazione per il calcolo degli upper bound ai nodi. 6. Pruning per bound Tagliare ogni nodo attivo k tale che zkLR ≤ LB (il nodo k non è più attivo). Andare al passo 2. 7. Terminazione L’algoritmo termina. Se LB = - ∞ allora (IP) non ammette soluzione. Se LB > - ∞ la soluzione corrente associata a LB è ottima. Raffaele Pesenti 27 Raffaele Pesenti 28 Algoritmo di Branch and Bound Algoritmo di Branch and Bound Commenti (cont.): • per le stesse ragioni del punto precedente è opportuno cercare di escludere a priori che vi siano soluzioni intere equivalenti. Ad esempio nel problema del bin-packing è opportuno introdurre vincoli del tipo: yk ≥ yk+1 che impongono che un bin possa essere usato solo se è già stato utilizzato il bin precedente, e anche x11 = 1, x12 + x22 = 1, … che impongono che il primo oggetto finisca nel primo bin, il secondo o nel primo o nel secondo bin, ecc.. • in generale può convenire introdurre dei vincoli che descrivano “condizioni di dominanza” certamente rispettate da almeno una soluzione ottima e che permettano di restringere il campo di ricerca. Ad esempio, in un problema di scheduling, introdurre un vincolo che imponga che tra due operazioni con stessa data di rilascio venga eseguita prima la più breve. Raffaele Pesenti 29 Commenti (cont.): • sempre per le stesse ragioni è importante conoscere una “buona” soluzione ammissibile intera da utilizzare fin dal primo passo come LB al posto di -∞.Una tale soluzione può essere ottenuta utilizzando il risultato di una procedura euristica di soluzione. • è infine opportuno ridurre il numero di variabili binarie o intere, quando queste non siano necessarie a giungere ad una formulazione migliore. Ad esempio in un problema di bin-packing, sia m un numero di bin associati ad una soluzione ammissibile nota allora si possono fissare a zero (praticamente eliminare) tutte le variabili associate a bin di indice superiore a m. • in generale conviene eseguire una fase di preprocessing in cui si verifica se i vincoli sono tale da imporre a priori il valore di qualche variabile, e.g., x1 + x2 ≤ 1, x1 + x2 + x3 ≥ 2, xi∈{0,1} ⇒ x3 = 1 Raffaele Pesenti 30 Backtracking Algoritmo di Branch and Bound Strategie di backtracking: Commenti (cont.): • le prestazioni dell’algoritmo dipendono anche dalle strategie di visita dell’albero, ad esempio da • strategie di backtracking • strategie di priorità fra le variabili • diverse politiche di scelta del nodo da ramificare al passo 3 possono essere implementate. Tre strategie limite: • Depth First (esplorazione in profondità): se il nodo corrente non è tagliato generare i due nodi figli e proseguire ad • strategie di branching (albero bilanciato) esplorare uno di essi al livello successivo. • euristiche di valutazione dei bound Raffaele Pesenti 31 Raffaele Pesenti 32 Backtracking Backtracking Strategie di backtracking (cont.): Strategie di backtracking (cont.): • Breadth First (esplorazione in ampiezza): si esplorano tutti i nodi allo stesso livello prima di passare al livello successivo. • Best Bound First (esplorazione sul nodo migliore): si esplora per primo il nodo con migliore upper bound Raffaele Pesenti 33 • Commenti: • la strategia depth first richiede minore occupazione di memoria della breath first o della best bound first, ma può richiedere maggior tempo. • con la strategia depth first in genere si determina più velocemente una soluzione intera ammissibile, con la strategia best bound la prima soluzione intera ammissibile che si determina che coincida con il best bound è anche ottima • in pratica si utilizza un mix di depth first e best bound first (o variazioni sul tema). Si procede con depth first a meno che la differenza percentuale tra zRL del nodo corrente e lo zRL migliore tra tutti i nodi ancora aperti non sia superiore ad una determinata soglia fissata a priori. Raffaele Pesenti Priorità fra le variabili 34 Branching Strategie di priorità sulle variabili: • il valore di alcune variabili (corrispondenti nel problema reale a scelte di importanza maggiore) può implicare notevoli limiti ai valori assumibili da altre variabili (corrispondenti nel problema reale a scelte di importanza minore), è quindi opportuno che vengano eseguiti prima i branching su variabili di importanza/priorità maggiore. Ad esempio in un problema di bin-packing conviene ritenere di priorità maggiore le variabili yi associate ai singoli bin che le variabili xij corrispondenti all’assegnazione dell’oggetto j al bin i. Infatti se yi=0 corrispondentemente xij=0, ∀j. Strategie di branching (1): • dato un nodo aperto si può scegliere quale dei due figli espandere per primo, quello corrispondente ad un down branch ovvero all’imposizione del vincolo xk ≤ xik o quello ad un up branch ovvero all’imposizione del vincolo xk ≥ xik + 1 Nel problema del bin-packing, per trovare una prima soluzione ammissibile è conveniente iniziare con up branching. • fissare la priorità delle variabili ha drammatica influenza sulle prestazioni del B&B. Quando nessuna priorità è fissata di solito gli algoritmi eseguono il branch successivo sulla variabile con componente frazionaria massima (o minima) Raffaele Pesenti 35 Raffaele Pesenti 36 Branching Upper bound Strategie di branching (2): • ogni volta che si esegue un branching conviene suddividere l’albero in due sottoalberi a cui corrispondono un numero di foglie circa equivalenti. Ad esempio in presenza di un vincolo di bounding generalizzato tipo: x1 + x2 + … + x10 = 1 può convenire eseguire il branch x1 = 0, x1 = 1, infatti il primo sottoalbero contiene la quasi totalità delle soluzioni ed è quindi molto probabile che lo zRL della sua radice non cambi significativamente rispetto a quella del nodo padre. Si può avere una variazione significativa nello zRL del secondo albero, ma anche se tale valore portasse ad un pruning, si sarebbero eliminate poche soluzioni. Ne consegue che in generale risulta più conveniente un branching x1 + x2 + … + x5 = 1, x6 + x7 + … + x10 = 1 Raffaele Pesenti 37 In ogni nodo dell’albero di enumerazione deve venire effettuata una stima, calcolato un upper bound, del valore della migliore soluzione ottima intera. Un possibile upper bound è la soluzione ottima del rilassamento continuo del problema associato al nodo. In generale però è possibile calcolare altri upper bound risolvendo degli altri tipi di rilassamento. In ogni caso la qualità di un upper bound viene valutata in termini di: – accuratezza nell’approssimazione della soluzione ottima, – facilità con il quale può essere calcolato Possibili altri esempi di rilassamento sono: – rilassamento per eliminazione – rilassamento surrogato – rilassamento lagrangiano – rilassamento per decomposizione Raffaele Pesenti 38 Rilassamento per eliminazione Rilassamento per eliminazione Rilassamento per eliminazione: nel rilassamento per eliminazione, invece di trascurare i vincoli di interezza, vengono eliminati uno o più vincoli del modello: Esempio: Dato il seguente problema di zaino bidimensionale: max z = 25x1 + 20x2 + 15x3 + 12x4 + 10x5 10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22 7x1 + 5x2 + 5x3 + 3x4 + 7x5 ≤ 14 xi∈{0,1} si trascura il secondo vincolo, risolvendo solo max zRE= 25x1 + 20x2 + 15x3 + 12x4 + 10x5 , 10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22, xi∈{0,1} Raffaele Pesenti Commenti: • in questo e nei rilassamenti successivi si rilassa il problema originale in un problema che nel caso particolare risulti praticamente risolvibile, anche se in generale è NP-hard. • in ogni caso il valore della soluzione di un rilassamento deve essere non inferiore (in un problema di massimo) al valore della soluzione ottima. 39 Raffaele Pesenti 40 Rilassamento surrogato Rilassamento surrogato Commenti: • il rilassamento per eliminazione è un caso particolare del surrogato, quando vengono usati pesi uguali a zero • se la soluzione ottima x* del rilassamento surrogato è ammissibile per il problema originale ILP allora x* è anche ottima per ILP • il valore della soluzione ottima zRS(π ) del problema surrogato dipende dai valori dei pesi π assegnati ai vari vincoli. In ogni caso zRS(π ) ≥ z* la scelta dei pesi ottima π ∗ è quella per cui zRS(π ∗) = min{zRS(π ), π ≥ 0}. • il problema di determinare i pesi ottimi π ∗ è detto problema surrogato duale poiché vale il seguente teorema di dualità debole min{zRS(π ), π ≥ 0} ≥ max {z= cx, Ax ≤ b, x ∈ Zn} In generale non è ovvia la scelta ottima dei pesi e viene determinata per iterazioni successive aumentando i pesi dei vincoli che risultano violati dalla soluzione ottenuta col rilassamento corrente e diminuendo i pesi dei vincoli rispettati. Rilassamento surrogato: nel rilassamento surrogato si sostituisce un insieme di vincoli con un unico vincolo di uguale struttura. Tale vincolo è combinazione (conica, se vincoli sono di disuguaglianza) dei precedenti Esempio: Dato il seguente problema di zaino bidimensionale: max z = 25x1 + 20x2 + 15x3 + 12x4 + 10x5 10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22 7x1 + 5x2 + 5x3 + 3x4 + 7x5 ≤ 14 xi∈{0,1} e i seguenti pesi 3, 1, si risolve max zRS (3,1)= 25x1 + 20x2 + 15x3 + 12x4 + 10x5 37x1 + 29x2 + 35x3 +18x4 + 19x5 ≤ 80 xi∈{0,1} Raffaele Pesenti 41 Raffaele Pesenti Rilassamento lagrangiano Rilassamento lagrangiano Rilassamento lagrangiano: nel rilassamento lagrangiano la soddisfazione di un insieme di vincoli viene posta come obiettivo (invece che come vincolo). I vincoli vengono pesati,utilizzando pesi non negativi in caso di vincoli di disuguaglianza, come nell’esempio. Esempio: Dato il seguente problema di zaino bidimensionale: max z = 25x1 + 20x2 + 15x3 + 12x4 + 10x5 10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22 7x1 + 5x2 + 5x3 + 3x4 + 7x5 ≤ 14 xi∈{0,1} e il peso 0.3 per il secondo vincolo, si risolve max zRLag (0.3)= 25x1 + 20x2 + 15x3 + 12x4 + 10x5 + 0.3(14 - (7x1 + 5x2 + 5x3 + 3x4 + 7x5)) 10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22 xi∈{0,1} Raffaele Pesenti 42 43 Commenti: • se la soluzione ottima x* del rilassamento lagrangiano è ammissibile per il problema originale ILP non è detto che x* sia anche ottima per ILP, poiché le due funzioni obiettivo non coincidono • il valore della soluzione ottima zRLag(π ) del problema lagrangiano dipende dai valori dei pesi π assegnati ai vari vincoli. In ogni caso zRLag(π ) ≥ z* la scelta dei pesi ottima π ∗ è quella per cui zRLag(π ∗) = min{zRLag(π ), π ≥ 0}. • il problema di determinare i pesi ottimi π∗ è detto problema lagrangiano duale poiché vale il seguente teorema di dualità debole min{zRLag(π ), π ≥ 0} ≥ max {z= cx, Ax ≤ b, x ∈ Zn} In generale non è ovvia la scelta ottima dei pesi e viene determinata per iterazioni successive aumentando i pesi dei vincoli che risultano violati dalla soluzione ottenuta col rilassamento corrente e diminuendo i pesi dei vincoli rispettati. Raffaele Pesenti 44 Rilassamento per decomposizione Rilassamento per decomposizione Rilassamento per decomposizione: nel rilassamento per decomposizione si decompone il problema iniziale in due sottoproblemi più semplici Esempio: Dato il seguente problema di zaino bidimensionale: max z = 25x1 + 20x2 + 15x3 + 12x4 + 10x5 10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22 7x1 + 5x2 + 5x3 + 3x4 + 7x5 ≤ 14 xi∈{0,1} si considera il problema equivalente max z = α (25x1 + 20x2 + 15x3 + 12x4 + 10x5) + β (25y1 + 20y2 + 15y3 + 12y4 + 10y5) 10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22 7y1 + 5y2 + 5y3 + 3y4 + 7y5 ≤ 14 xi=yi, xi∈{0,1}, yi∈{0,1} con α,β t.c. α + β = 1 Raffaele Pesenti 45 Esempio (cont.): si rilassano lagrangianamente i vincoli xi=yi, ottenendo un problema composto da due sotto problemi risolvibili separatamente max zRD = = max{(α 25+π1 )x1 + (α 20 +π2)x2 + (α 15 +π3)x3 + (α 12 +π1)x4 + (α 10 +π5 )x5, 10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22, xi∈{0,1}}+ + max{(β 25-π1 )y1 + (β 20 -π2)y2 + (β 15 -π3)y3 + (β 12 -π1)y4 + (β 10 -π5 )y5, 7y1 + 5y2 + 5y3 + 3y4 + 7y5 ≤ 14, yi∈{0,1}} con α,β t.c. α + β = 1 e π libero. Raffaele Pesenti Rilassamento per decomposizione Relazioni fra i rilassamenti Commenti: • se la soluzione ottima x* del rilassamento per decomposizione è ammissibile per il problema originale ILP non è detto che x* sia anche ottima per ILP, poiché le due funzioni obiettivo non coincidono • il valore della soluzione ottima zRD(π ) del problema lagrangiano dipende dai valori dei pesi π assegnati ai vari vincoli. In ogni caso zRD(π ) ≥ z* la scelta dei pesi ottima π∗ è quella per cui zRD(π ∗) = min{zRD(π )}. • il problema di determinare i pesi ottimi π ∗ è detto (anche in questo caso) problema lagrangiano duale poiché vale il seguente teorema di dualità debole min{zRD(π )} ≥ max {z= cx, Ax ≤ b, x ∈ Zn} Raffaele Pesenti 46 47 Relazioni di dominanza tra i rilassamenti: • esistono le seguenti relazioni di dominanza tra le soluzioni dei diversi rilassamenti z* ≤ zRS(π S*), zRD(π D*) ≤ zRLag(π Lag*) ≤ zRE, zRL • nessuna relazione generale esiste tra zRS(π S*) e zRD(π D*) e tra zRE e zRL • zRLag(π Lag*) = zRL quando il poliedro definito dai vincoli non spostati all’obiettivo è un poliedro intero Commenti: • il rilassamento lagrangiano è, dopo quello lineare, il più usato poiché è più facile da trattare matematicamente Raffaele Pesenti 48 B&B applicato al KP Algoritmo di Branch and Bound Commenti finali: • il B&B è un metodo generale e può essere generalizzato ad altri problemi diversi da ILP. In questi casi branch potrebbe generare anche più di due nodi • nel B&B bisogna utilizzare tutta l’informazione disponibile circa la soluzione ottima in modo da restringere il campo di ricerca e guidare l’algoritmo nella ricerca. L’informazione può anche dovere venire aggiornata dinamicamente ad ogni nodo. L’unico limite nell’uso di informazione è che la sua elaborazione non sia più onerosa del vantaggio che fornisce. Raffaele Pesenti 49 Problema dello zaino: risolvere il seguente problema dello zaino max 12x1 +36 x2 +42 x3 +18 x4 + 25x5 3x1 + 10x2+ 14x3 + 6x4 + 10 x5 ≤ 23, xi ∈{0,1} Commenti: se gli indici degli oggetti sono ordinati per valore specifico crescente (come in questo caso), i.e., ci / ai ≥ ci+1 / ai+1, il rilassamento lineare del problema, posto h: Σi=1..h ai ≤ b e Σi=1..h+1 ai > b, dà come soluzione – xi=1 per i ≤ h – xh+1= (b - Σi=1..h ai)/ ah+1 – xi=0 per i > h+1 – zRL= Σi=1..h ci + ch+1 (b - Σi=1..h ai)/ ah+1 il corrispondente UB della soluzione ottima intera può essere posto UB = zRL dopo avere osservato che se tutti i parametri sono interi la soluzione ottima z* del problema non può che essere intera Raffaele Pesenti B&B applicato al KP B&B applicato al KP Nodo 2: max zRL= 12x1 +36 x2 +18 x4 + 25x5 3x1 + 10x2+ 6x4 + 10 x5 ≤ 23 0 ≤ xi ≤ 1 Nodo 1 (radice): max zRL= 12x1 +36 x2 +42 x3 +18 x4 + 25x5 3x1 + 10x2+ 14x3 + 6x4 + 10 x5 ≤ 23 0 ≤ xi ≤ 1 soluzione zRl = 78, x= [1,1,10/14,0,0], UB= 78 =78 una soluzione intera certamente ammissibile è x= [1,1,0,1,0] che implica LB= 66 Branching su x3: si ottengono due nodi: Nodo 2: corrispondente a x3= 0 Nodo 3: corrispondente a x3= 1 50 1 x3= 0 x3= 1 2 3 x3= 1 x3= 0 2 soluzione zRl = 76, x= [1,1,0,1,4/10], UB= 76 =76 Branching su x5: si ottengono due nodi: Nodo 4: corrispondente a x5= 0 Nodo 5: corrispondente a x5= 1 UB=78 LB=66 1 UB=76 LB=66 3 x5= 1 x5= 0 4 UB=78 LB=66 5 ListaNodiAperti = {Nodo 4, Nodo 5, Nodo 3} ListaNodiAperti = {Nodo 2, Nodo 3} Raffaele Pesenti 51 Raffaele Pesenti 52 B&B applicato al KP Nodo 4: max zRL= 12x1 +36 x2 +18 x4 3x1 + 10x2+ 6x4 ≤ 23 0 ≤ xi ≤ 1 B&B applicato al KP UB=78 LB=66 1 x3= 1 x3= 0 2 soluzione zRl = 66, x= [1,1,0,1,0], UB= LB =66 soluzione intera niente branching UB=76 LB=66 3 x5= 1 x5= 0 Nodo 5: max zRL= 12x1 +36 x2 +18 x4 +25 3x1 + 10x2+ 6x4 ≤ 13 0 ≤ xi ≤ 1 UB=78 LB=66 1 x3= 1 x3= 0 2 soluzione zRl = 73, x= [1,1,0,0,1], UB= LB =73 soluzione intera niente branching nuova soluzione correntenmente ottima x5= 0 UB=76 LB=66 3 x5= 1 ListaNodiAperti = {Nodo 5, Nodo 3} ListaNodiAperti = {Nodo 3} 5 4 UB=66 LB=66 Raffaele Pesenti 53 B&B applicato al KP Nodo 3: max zRL= 12x1 +36 x2 +18 x4 + 25x5 +42 3x1 + 10x2+ 6x4 + 10 x5 ≤ 9 0 ≤ xi ≤ 1 soluzione zRl = 75.6, x= [1,6/10,1,0,0], UB= 75.6 =75 x5= 0 Branching su x2: si ottengono due nodi: Nodo 6: corrispondente a x2= 0 Nodo 7: corrispondente a x2= 1 2 UB=76 LB=66 3 UB=75 LB=73 x5= 1 x2= 0 4 5 UB=66 LB=66 UB=73 LB=73 6 UB=66 LB=66 UB=73 LB=73 Raffaele Pesenti 54 Nodo 6: max zRL= 12x1 +18 x4 + 25x5 + 42 3x1 + 6x4 + 10 x5 ≤ 9 0 ≤ xi ≤ 1 x3= 1 x3= 0 5 B&B applicato al KP UB=78 LB=66 1 4 x2= 1 7 1 x3= 0 UB=78 LB=66 x3= 1 UB=76 3 2 soluzione zRl = 72, x= [1,0,1,1,0], LB=66 UB= 72 =72 x5= 1 UB di valore minore (o uguale) alla x5= 0 x2= 0 soluzione corrente, il nodo viene potato (indipendentemente dal fatto 5 6 4 che la soluzione sia, casualmente, anche intera) UB=66 UB=73 UB = 72 LB=66 LB=73 pruned ListaNodiAperti = {Nodo 7} UB=75 LB=73 x2= 1 7 ListaNodiAperti = {Nodo 6, Nodo 7} Raffaele Pesenti 55 Raffaele Pesenti 56 Esercizi B&B applicato al KP Nodo 7: Problema inammissibile: a2 + a3=24 > b = 23 UB=78 LB=66 1 x3= 1 x3= 0 ListaNodiAperti = {} 2 algoritmo terminato x5= 0 4 UB=66 LB=66 Es 1) UB=76 LB=66 3 UB=75 LB=73 x5= 1 x2= 0 5 6 x2= 1 7 UB=73 UB = 72inammissibile pruned LB=73 pruned Raffaele Pesenti 57 Dato il seguente problema 01-LP max 12x1 +23 x2 +14 x3 +25 x4 + 13x5 7x1 + 16x2+ 7x3 + 13x4 + 10 x5 ≤ 27 13x1 + 8x2+ 5x3 + 6x4 + 5 x5 ≤ 24 xi ∈{0,1} Calcolare il valore della soluzione ottima dei seguenti rilassamenti e determinare il migliore tra essi: • rilassamento continuo • rilassamento per eliminazione del primo vincolo • rilassamento surrogato, pesando 1 entrambe i vincoli • rilassamento lagrangiano, rilassando il secondo vincolo con peso 1. Nel caso degli ultimi due rilassamenti provare anche pesi alternativi indicando in base a che criteri devono essere scelti Raffaele Pesenti Esercizi Esercizi Es 2) Es 3) Dato il seguente problema 01-LP max 25x1 +34 x2 +12 x3 +18 x4 + 17x5 8x1 + 16x2+ 10x3 + 13x4 + 10 x5 ≤ 36 xi ∈{0,1} risolverlo con il branch and bound. Disegnare l’albero di esplorazione completo e visitarlo seguendo differenti strategie, e.g., depth first, best bound. Raffaele Pesenti 58 Dato il seguente problema 01-LP max 12x1 +23 x2 +14 x3 +25 x4 + 13x5 7x1 + 16x2+ 7x3 + 13x4 + 10 x5 ≤ 32 13x1 + 8x2+ 5x3 + 6x4 + 5 x5 ≤ 27 xi ∈{0,1} risolverlo con il branch and bound. Disegnare l’albero di esplorazione completo e visitarlo seguendo differenti strategie, e.g., depth first, best bound. 59 Raffaele Pesenti 60 Esercizi UB = 1000 Es 4) UB = 900 Il seguente albero è l'albero di esplorazione completo che emergerebbe in una ricerca esaustiva delle soluzioni di un problema di massimizzazione. In realtà l'albero è esplorato con una strategia mista in cui si applica il depth first sul nodo più promettente tra i due figli del nodo correntemente analizzato, a meno che non esista un altro nodo nella lista dei nodi aperti il cui upper bound è almeno il 25% maggiore del corrispondente valore del migliore dei due figli. Indicare in che sequenza i nodi escono dalla ListaNodiAperti e quali nodi sono potati. UB = 600 UB = 390 z = 360 Raffaele Pesenti 61 UB = 550 UB = 340 Inammissibile z = 370 Raffaele Pesenti UB = 700 z = 330 UB = 550 z = 400 UB = 440 Inammissibile Inammissibile z = 360 Inammissibile UB = 400 z = 380 UB = 515 UB = 420 Inammissibile Inammissibile z = 410 Inammissibile Inammissibile Inammissibile UB = 490 z = 470 Inammissibile 62