Parte III: Algoritmo di Branch-and-Bound

Documenti analoghi
3.4 Metodo di Branch and Bound

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.

Algoritmo di Branch & Bound

Il metodo dei Piani di Taglio (Cutting Planes Method)

Metodi e Modelli per l Ottimizzazione Combinatoria Cover inequalities

METODI DELLA RICERCA OPERATIVA

Soluzione di problemi di Programmazione Lineare Intera

Programmazione dinamica

Soluzione dei problemi di Programmazione Lineare Intera

Branch-and-bound per KNAPSACK

Algoritmi greedy. Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione

Esercizi sulla Programmazione Lineare Intera

5.3 Metodo dei piani di taglio

PROGRAMMAZIONE DINAMICA

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

5.5 Metodi generali per la soluzione di problemi

Esame di Ricerca Operativa del 11/07/2016

Esame di Ricerca Operativa del 08/01/13. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

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

COMPITO DI RICERCA OPERATIVA APPELLO DEL 08/01/04

Parte V: Rilassamento Lagrangiano

Esame di Ricerca Operativa del 07/09/2016

Esame di Ricerca Operativa del 03/09/2015

Esame di Ricerca Operativa del 15/01/2015

Esame di Ricerca Operativa del 15/01/2015

Algoritmi generali per PLI

Note per la Lezione 6 Ugo Vaccaro

Rilassamento Lagrangiano

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

Tecniche Algoritmiche: divide et impera

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

Rilassamento Lagrangiano

4. METODI DUALI DEL SIMPLESSO

Esame di Ricerca Operativa del 16/06/2015

4.1 Localizzazione e pianificazione delle base station per le reti UMTS

x 1 x x 1 2 x 2 6 x 2 5 Indici di base Vettore Ammissibile Degenere (si/no) (si/no)

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

Algoritmi di Ricerca

Espressioni aritmetiche

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio

3.6 Metodi basati sui piani di taglio

Metodi generali per la soluzione di problemi di PLI

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

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

Gestione della produzione e della supply chain Logistica distributiva

Esame di Ricerca Operativa del 09/02/2016

COMPITO DI RICERCA OPERATIVA. (5 punti) Sia dato il seguente problema di PL: min x 1 + x 2 x 1 + x 2 3 x 1 + x 2 2 2x 1 + x 2 3.

Esercizi soluzione grafica e Branch and Bound. Daniele Vigo

Problemi, istanze, soluzioni

Introduzione alla programmazione lineare

Il problema dello zaino: dalla gita in montagna ai trasporti internazionali. Luca Bertazzi

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

Problemi di localizzazione di servizi (Facility Location Problems)

Algoritmi e Strutture Dati

Branch-and-bound per TSP

3.3 FORMULAZIONE DEL MODELLO E CONDIZIONI DI

Possibile applicazione

2.2 Alberi di supporto di costo ottimo

Programmazione Lineare Intera (PLI)

Algoritmi e strutture di dati 2

Ricerca Operativa Branch-and-Bound per problemi di Programmazione Lineare Intera

Programmazione I. Fondamenti di programmazione. Problemi, Algoritmi, Diagrammi di flusso

Il problema dello zaino

Programmazione dinamica

Algoritmo basato su cancellazione di cicli

La dualità nella Programmazione Lineare

Progettazione di Algoritmi

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

Esercizi per il corso di ricerca operativa 1

5.5 Metodi dei piani di taglio

1 Il metodo dei tagli di Gomory

Introduzione al Metodo del Simplesso. 1 Soluzioni di base e problemi in forma standard

Transcript:

Parte III: Algoritmo di Branch-and-Bound

Divide et Impera Sia z * max {c T x : x S} (1) un problema di ottimizzazione combinatoria difficile da risolvere. Domanda: E possibile decomporre il problema (1) in una collezione di sottoproblemi tali che 1. ogni nuovo sottoproblema sia facile da risolvere, e 2. le informazioni ottenute risolvendo la collezione di sottoproblemi ci guidino nella ricerca della soluzione ottima di (1)?

Divide et Impera Proposizione: Sia S S 1 S 2 S K una decomposizione della regione ammissibile S in K sottoinsiemi, e sia z h max {c T x : x S h }, per h 1,,K. Allora z* max h z h. Osservazione: Non abbiamo richiesto che la decomposizione sia una partizione (ovvero, che S i S j ), ma non abbiamo nemmeno escluso che possa esserlo! Una tipica rappresentazione dell approccio divide et impera è tramite un albero di enumerazione.

Un esempio Se S {0,1} 3, possiamo costruire il seguente albero di enumerazione x 1 0 S x 1 1 x 2 0 S 0 x 2 1 x 2 0 S 1 x 2 1 S 00 S 01 S 10 S 11 x 3 0 x 3 1 x 3 0 x 3 1 x 3 0 x 3 1 x 3 0 x 3 1 S 000 S 001 S 010 S 011 S 100 S 101 S 110 S 111 Le foglie dell albero corrispondono esattamente ai punti che andremmo a esaminare se potessimo fare un enumerazione completa.

Divide et Impera Osservazione: Costruendo in questo modo l albero di enumerazione stiamo semplicemente enumerando TUTTI gli insiemi ammissibili!!!! Per la maggior parte dei problemi è impossibile effettuare una enumerazione completa. Poiché per un problema di ottimizzazione combinatoria conosciamo i bound primali e i bound duali, l idea è quella di utilizzare tali bound per enumerare gli insiemi ammissibili in modo più efficace.

Divide et Impera Proposizione: Sia S S 1 S 2.. S K una decomposizione della regione ammissibile S in K sottoinsiemi, e siano z h max {c T x : x S h }, z h LB un lower bound per zh, e z h UB un upper bound per zh per h 1,, K. Allora z UB max h z h UB è un upper bound per z*, e z LB max h z h LB è un lower bound per z*.

Potatura per ottimalità Le informazioni su upper e lower bound per il valore ottimo z* permettono di decidere quali nodi dell albero ha senso continuare ad esaminare per trovare la soluzione ottima. S 0 z 0 UB 27 z 0 LB 13 x 1 0 x 1 1 S 1 z 1 UB 20 z 1 LB 20 S 2 z 2 UB 25 z 2 LB 15 Poiché z 1 LB z1 UB 20, sicuramente z1 20. Pertanto, non c è bisogno di esplorare ulteriormente il nodo S 1 che può essere potato per ottimalità.

Potatura per ottimalità Ad ogni passo teniamo traccia di un lower bound globale z LB. Per il nodo S 0, z LB z 0 LB (alternativamente, z LB - ). Per ciascun nodo di ogni livello dell albero, aggiorniamo il valore di z LB se in corrispondenza di quel nodo abbiamo calcolato un lower bound MIGLIORE (ossia maggiore) di quello corrente. z 0 UB 27 S 0 z 0 LB 13 z LB x 1 0 x 1 1 S 1 z 1 UB 20 z 1 LB 20 z LB 20 S 2 z 2 UB 25 z 2 LB 15

Potatura per bound z 0 UB 27 S 0 z 0 LB 13 z LB x 1 0 x 1 1 S 1 z 1 UB 20 z 1 LB 18 S 2 z 2 UB 26 z 2 LB 21 z LB 21 Poiché z LB 21, la soluzione ottima del problema iniziale ha valore almeno pari a 21. Dal momento che z 1 UB 20, sicuramente non è possibile ottenere l ottimo esplorando il nodo S 1. Pertanto, S 1 può essere potato per bound.

Potatura per inammissibilità z 0 UB 27 S 0 z 0 LB 13 z LB x 1 0 x 1 1 S 1 z 0 UB 20 z 0 LB 18 z LB 21 S 2 S 2 Poiché il sottoproblema associato al nodo S 2 è inammissibile, non è possibile ottenere l ottimo esplorando il nodo S 2. Pertanto S 2 può essere potato per inammissibilità.

Nessuna potatura z 0 UB 40 S 0 z 0 LB 0 z LB x 1 0 x 1 1 S 1 z 1 UB 20 z 1 LB 18 z LB 18 S 2 z 2 UB 37 z 2 LB 0 In questo caso non possiamo fare nessuna osservazione che permetta di potare uno dei due nodi in esame e quindi è necessario esplorare sia S 1 che S 2.

Procedura di Branch-and-Bound Tramite l albero di enumerazione, enumeriamo un insieme di soluzioni implicitamente perché alcuni rami dell albero vengono potati per: 1. ottimalità, oppure 2. bound, oppure 3. inammissibilità. Siano L lista dei sottoproblemi che devono essere risolti P i formulazione del sottoproblema associato al nodo S i. L algoritmo di Branch-and-Bound ha il seguente diagramma di flusso:

Branch-and-Bound Inizializzazione LS, z LB - count 0; Test: L? Scegli un problema S i dalla lista Risolvi il Rilassamento Lineare RL i su P i Caso 1: Inammissibilità Se P i elimina S i per inammissibilità, vai a Test Caso 2: Bound Se P i, sia z i UB il valore della soluzione ottima x i UB di RL i. Se z i UB < z LB elimina S i per bound, vai a Test Caso 3: Ottimalità Se P i e la soluzione ottima x i UB di RL i è intera, allora elimina S i. Se z i LB > z LB allora z LB z i LB, vai a Test Individua una componente frazionaria k di x i UB e ramifica S i aggiungendo ad L S count+1 S i {x k 0} S count+2 S i {x k 1} count count + 2

Esempio Consideriamo il problema di knapsack max 30 x 1 + 36 x 2 + 15 x 3 + 11 x 4 + 5 x 5 + 3 x 6 9 x 1 + 12 x 2 + 6 x 3 + 5 x 4 + 3 x 5 + 2 x 6 < 17 (1) x {0,1} 6 La soluzione ottima del Knapsack continuo è x 0 UB (1, 2/3, 0, 0, 0, 0) di valore 54 (z0 UB ) Inizializziamo il valore del lower bound uguale al valore di una soluzione ammissibile del problema x 0 LB (1, 0, 0, 0, 0, 0) di valore 30 (z0 LB ) z LB 30 Osservazione: Poiché la funzione obiettivo ha coefficienti interi, possiamo scrivere la condizione di potatura per bound (caso 2) come z i UB < z LB.

Esercizio 1 z 0 UB 54 S 0 z 0 LB 30 z LB x 2 0 x 2 1 z 1 49.4 UB z 1 LB 45 S 1 z LB 45 S 2 z 2 UB 52.6 z 2 LB 36 x 4 0 x 4 1 x 1 0 x 1 1 z 3 48.33 UB z4 48.5 UB z 5 48.5 UB z 3 S 3 S LB 45 z 4 LB 41 4 S 5 S z 5 36 6 LB inammissibilità x 5 0 x 5 1 S 7 S 8 S z 7 UB 48 z 8 UB 47.5 z 7 LB 48 z LB 48 OPT. z 8 LB 35 bound. x 3 0 x 3 1 9 S 10 S z 9 UB 46 z 10 UB 36 z 9 LB 46 bound. z 10 LB 36 bound. x 3 0 x 3 1 11 S 12 inammissibilità z 11 UB 47 z 11 LB 47 OPT.

Algoritmo di programmazione dinamica

Programmazione Dinamica Schema di principio: Dato un problema di OC, P, la Programmazione Dinamica (PD): 1. Risolve un sottoproblema di P all ottimo. 2. Iterativamente estende la soluzione a P. Proprietà fondamentale (optimal substructure) Sia KP (N, b) un problema di knapsack con soluzione ottima x *. Consideriamo il problema di knapsack KP(N \ r, b a r ) che si ottiene da KP eliminando un qualsiasi oggetto r e diminuendo la capacità dello zaino della quantità a r.. La soluzione ottima di KP(r, b a r ) si ottiene da x * semplicemente eliminando la variabile x r.

Esempio Consideriamo il seguente problema di knapsack: max 6 x 1 + 10 x 2 + 12 x 3 x 1 + 2x 2 + 3 x 3 < 5 (1) x {0,1} 3 La soluzione ottima è x *(1) (0, 1, 1), di valore 22. Consideriamo il problema che si ottiene eliminando l oggetto 2 e diminuendo la capacità b del corrispondente ingombro a 2 : max 6 x 1 + 12 x 3 x 1 + 3 x 3 < 5 2 3 (2) x {0,1} 2 La soluzione ottima è x *(2) (0, 1), di valore 12. Osservazione: La soluzione x *(2) (0, 1) è una sottosoluzione di x *(1) (0, 1, 1), ovvero si ottiene da x* (1) semplicemente eliminando la variabile x 2.

Notazione Siano r e d due interi tali che 1 r n, 0 d b. Sia KP (r, d) il problema di knapsack: r max Σ c j x j j 1 r Σ a j x j < d j 1 x {0, 1} r KP (r, d) è un sottoproblema di KP, avente soluzione ottima di valore z r (d).

Programmazione dinamica Con questo formalismo, il valore della soluzione ottima di KP vale z n (b). Calcolo di z n (b): 1. Calcolo z r (d) per r {1,, n}. 2. Per ogni r, calcolo z r (d) per d {0,, b}. Osservazione: z r (d) si calcola in modo ricorsivo se conosco i valori z r-1 (d) per d {0,, b}.

Formula ricorsiva Condizione iniziale di ricorsione: z 1 ( d ) 0 c 1 per per d d < a a 1 1 Questa condizione implica: Se z 1 (d) 0 x 1 0 Se z 1 (d) c 1 x 1 1

Formula ricorsiva Formula di ricorsione: z r (d) z r 1 (d) max{z r 1 (d), z r 1 (d a r )+c r } se d < a r se d > a r La formula implica Se z r (d) z r-1 (d) x r 0 [l oggetto r NON è stato scelto] Se z r (d) z r-1 (d a r )+c r x r 1 [l oggetto r E stato scelto]

Algoritmo e complessità DP for for for -KP(n, for z for if(z z m m d d return m d (d) then d else (d) a 2 z 0 1 m 1 0 z a (d) max max n b, to m max; (b) to to m 1 to (d) > a, z n to z z c) a b 1 a m 1 m 1 m 1 z b (d 1 m 1 (d) 1 (d); (bˆ z(d) Osservazione: La complessità dell algoritmo è O(nb), ovvero dipende dall intero b (dimensione dello zaino). In questo caso si dice che l algoritmo ha complessità pseudo polinomiale. a a 1 m c ) + m ) + 1 c ; c m m 0; ) ;