Branch and Bound. Branch and Bound p. 1/3

Documenti analoghi
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.

Branch-and-bound per KNAPSACK

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

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

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

Parte III: Algoritmo di Branch-and-Bound

5.1 Metodo Branch and Bound

METODI DELLA RICERCA OPERATIVA

Soluzione dei problemi di Programmazione Lineare Intera

Programmazione a numeri interi: il metodo del Branch and Bound

COMPITO DI RICERCA OPERATIVA APPELLO DEL 07/04/04

COMPITO DI RICERCA OPERATIVA. min 2x 1 x 2 + x 3 x 4 x 1 x 2 + x 3 + x 4 = 5 x 1 + x 2 + x 3 3. x 1, x 2, x 3, x 4, x 5 I

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

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 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

COMPITO DI RICERCA OPERATIVA. max x 1 + x 2 x 1 + x 2 1 x 1 + x 2 2. Lo si trasformi in forma standard e se ne determini una soluzione ottima.

3.4 Metodo di Branch and Bound

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

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.

città

Esercizi sulla Programmazione Lineare Intera

Soluzione dei problemi di Programmazione Lineare Intera

Algoritmo di Branch & Bound

COMPITO DI RICERCA OPERATIVA APPELLO DEL 08/01/04

Soluzione di problemi di Programmazione Lineare Intera

Algoritmo dibranch & Bound

1 Programmazione Lineare Intera

Massimo flusso e matching

Il metodo dei Piani di Taglio (Cutting Planes Method)

Metodi e Modelli per l Ottimizzazione Combinatoria Cover inequalities

Prima prova Intermedia di Ricerca Operativa 2 COMPITO A Esercizio 1 (7 punti): LIFO

Esame di Ricerca Operativa del 12/02/18. P 1 P 2 P 3 P 4 P 5 P 6 Peso bagaglio km di viaggio

5.3 Metodo dei piani di taglio

Esame di Ricerca Operativa del 08/09/17

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

Esame di Ricerca Operativa. x 1 +2 x 2 6 x 1 +x 2 6 x 1 4 x 1 1

2. Si definisca un algoritmo euristico di tipo greedy per determinare una buona soluzione ammissibile del problema;

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

Esame di Ricerca Operativa del 21/06/17

Esame di Ricerca Operativa del 18/06/18

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

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

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

I Appello Ricerca Operativa 2 bis Compito A

Branch-and-bound per TSP

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

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

Dualitá. Dualitá p. 1/4

Esame di Ricerca Operativa del 05/09/18

Esame di Ricerca Operativa del 09/06/14. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Algoritmo Branch and Cut (B&C)

Stime dell ottimo - Rilassamenti. PRTLC - Rilassamenti

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

3.2 Rilassamenti lineari/combinatori e bounds

Esame di Ricerca Operativa del 25/06/12

Fac-simile dell esame di Ricerca Operativa. max 7 x 1 2 x 2 3 x 1 +x 2 2 x 1 2 x 2 3 x x 1 +x x 1 x 2 5

Esame di Ricerca Operativa del 11/02/2015

Esame di Ricerca Operativa del 11/07/2016

Programmazione Lineare Intera: Piani di Taglio

Esame di Ricerca Operativa del 19/01/2016

ESERCIZIO 1: Punto 1

Parte V: Rilassamento Lagrangiano

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

Esame di Ricerca Operativa del 15/01/2015

Esame di Ricerca Operativa del 15/01/2015

Esame di Ricerca Operativa del 19/01/2016

Metodi e Modelli per l Ottimizzazione Combinatoria Metodi Risolutivi per la Programmazione Lineare Intera

Problemi di localizzazione di servizi (Facility Location Problems)

Esame di Ricerca Operativa del 06/02/17

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

5.5 Metodi generali per la soluzione di problemi

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

Università Ca Foscari Venezia

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

Esame di Ricerca Operativa

Esame di Ricerca Operativa del 16/06/2015

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

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

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

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

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

Esame di Ricerca Operativa del 16/07/18

Esame di Ricerca Operativa del 03/07/18. Base x degenere y Indice Rapporti Indice entrante uscente

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

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

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

Esame di Ricerca Operativa del 04/07/17

Possibile applicazione

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

4.4 Programmazione quadratica

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

Programmazione Dinamica (PD)

Esame di Ricerca Operativa del 07/09/2016

Transcript:

Branch and Bound Branch and Bound p. 1/3

Branch-and-bound Un esempio di problema di PLI: P 0 : max x 1 + 3x 2 (u 1 ) x 1 1 2 (u 2 ) 5x 1 + 3x 2 5 (u 3 ) x 1 + 7 5 x 2 13 2 x 1,x 2 0 x 1,x 2 I Branch and Bound p. 2/3

Continua Risoluzione (grafica) del rilassamento lineare P 0 di P 0. z 4 3 2 1 B C u 1 u 2 A 00 11 0011 0000000 1111111 000000000 111111111 00000000000 11111111111 000000000000 111111111111 00000000000000 11111111111111 000000000000000 111111111111111 00000000000000000 11111111111111111 000000000000000000 111111111111111111 0000000000000000000 1111111111111111111 000000000000000000000 111111111111111111111 0000000000000000000000 1111111111111111111111 000000000000000000000000 111111111111111111111111 0000000000000000000000000 1111111111111111111111111 00000000000000000000000000 11111111111111111111111111 0000000000000000000000000000 1111111111111111111111111111 00000000000000000000000000000 11111111111111111111111111111 000000000000000000000000000000 111111111111111111111111111111 1 2 3 4 5 6 + - D u 3 Branch and Bound p. 3/3

Continua S ott = {A} A = ( 5 4, 15 4 ) Valore ottimo=u(p 0 ) = 50 4 U(P 0 ) = upper bound o limitazione superiore del valore ottimo di P 0 Branch and Bound p. 4/3

Divide et impera: Branching Suddivisione del problema originario in due sottoproblemi P 1 e P 2. Come? Seleziono, secondo una determinata regola, una variabile x i con valore non intero x i nella soluzione ottima del rilassamento lineare di P 0 e: creo P 1 aggiungendo ai vincoli di P 0, il vincolo x i x i ; creo P 2 aggiungendo ai vincoli di P 0, il vincolo x i x i + 1 Esistono molte regole di scelta della variabile. Qui ne useremo una semplicissima non preoccupandoci dell efficienza: seleziona quella con valore non intero nel rilassamento lineare di P 0 con indice più piccolo. Branch and Bound p. 5/3

Nell esempio Sottoproblema P 1 P 1 : max x 1 + 3x 2 (u 1 ) x 1 1 2 (u 2 ) 5x 1 + 3x 2 5 (u 3 ) x 1 + 7 5 x 2 13 2 5 (u 4 ) x 1 = 1 4 x 1,x 2 0 x 1,x 2 I Branch and Bound p. 6/3

Nell esempio Sottoproblema P 2 P 2 : max x 1 + 3x 2 (u 1 ) x 1 1 2 (u 2 ) 5x 1 + 3x 2 5 (u 3 ) x 1 + 7 5 x 2 13 2 5 (u 4 ) x 1 + 1 = 2 4 x 1,x 2 0 x 1,x 2 I Branch and Bound p. 7/3

Lower Bound LB =Lower bound o limitazione inferiore del valore ottimo di P 0. È un qualsiasi valore che soddisfa: LB opt(p 0 ) = valore ottimo P 0 Come si ottiene? Se durante l esecuzione dell algoritmo (tipicamente durante la risoluzione dei rilassamenti lineari di P 0 e dei suoi sottoproblemi) si osserva il valore della funzione obiettivo cx nei punti y 1,...,y h Z a, ciascuno di questi valori è utilizzabile come lower bound, in quanto: cy i opt(p 0 ) per i = 1,...,h. Per avere un valore di lower bound il più vicino possibile a opt(p 0 ) si pone: LB = max{cy i : i = 1,...,h} Branch and Bound p. 8/3

Rilassamento lineare di P 1 u 1 u 2 z 4 3 2 1 B C E 00 11 00 11 F 1 A u 3 2 3 4 5 6 D u 4 S ott = {E}, E = (1, 10/3) U(P 1 ) = 11 - + Branch and Bound p. 9/3

Rilassamento lineare di P 2 u 1 u 2 z 4 3 2 1 B C A 1 H 00 11 0011 000000 111111 00000000 11111111 000000000 111111111 0000000000 1111111111 000000000000 111111111111 0000000000000 1111111111111 000000000000000 111111111111111 0000000000000000 1111111111111111 00000000000000000 11111111111111111 0000000000000000000 1111111111111111111 00000000000000000000 11111111111111111111 000000000000000000000 111111111111111111111 00000000000000000000000 11111111111111111111111 G 2 3 4 5 6 u 4 + - D u 3 S ott = {H}, H = (2, 45/14) U(P 2 ) = 163/14 Branch and Bound p. 10/3

Albero di branch-and-bound U(P 1 ) = 11 x 1 1 x 1 2 P 0 LB = P 1 P 2 U(P 2 ) = 163 14 Branch and Bound p. 11/3

Ulteriore suddivisione Dopo aver suddiviso il problema P 0 nei due sottoproblemi P 1 e P 2, possiamo selezionare uno dei due sottoproblemi. Quale nodo selezionare? Diverse regole possibili. Qui ne vedremo una soltanto: seleziona un sottoproblema/nodo foglia con upper bound massimo. Perché? Ci si aspetta di trovare piú facilmente la soluzione ottima del problema in un sottoproblema con un valore di upper bound elevato. Branch and Bound p. 12/3

Nell esempio Nel nostro esempio selezioniamo P 2. P 2 suddiviso in due sottoproblemi P 3 e P 4. Come? Esattamente come abbiamo fatto per P 0 : facendo branching su una variabile con valore non intero nella soluzione ottima del rilassamento lineare di P 2. Branch and Bound p. 13/3

Il sottoproblema P 3 P 3 : max x 1 + 3x 2 (u 1 ) x 1 1 2 (u 2 ) 5x 1 + 3x 2 5 (u 3 ) x 1 + 7 5 x 2 13 2 (u 4 ) x 1 2 45 (u 5 ) x 2 14 x 1,x 2 0 x 1,x 2 I = 3 Branch and Bound p. 14/3

Il sottoproblema P 4 P 4 : max x 1 + 3x 2 (u 1 ) x 1 1 2 (u 2 ) 5x 1 + 3x 2 5 (u 3 ) x 1 + 7 5 x 2 13 2 (u 4 ) x 1 2 45 (u 5 ) x 2 + 1 = 4 14 x 1,x 2 0 x 1,x 2 I Branch and Bound p. 15/3

Il rilassamento lineare di P 3 u 1 u 2 z 4 3 2 1 B C A 1 H K J 01 0011 000000 111111 00000000 11111111 000000000 111111111 00000000000 11111111111 000000000000 111111111111 0000000000000 1111111111111 000000000000000 111111111111111 0000000000000000 1111111111111111 000000000000000000 111111111111111111 0000000000000000000 1111111111111111111 00000000000000000000 11111111111111111111 0000000000000000000000 1111111111111111111111 00000000000000000000000 11111111111111111111111 G u 4 + - u 5 2 3 4 5 6 D u 3 S ott = {J}, J = (23/10, 3) U(P 3 ) = 113/10 Branch and Bound p. 16/3

Il rilassamento lineare di P 4 4 3 B u 1 A u 2 u 5 H 2 u 3 1 z u 4 C 1 G 2 3 4 5 6 D - + S a =, quindi P 4 é risolto P 4 ha regione ammissibile vuota. Branch and Bound p. 17/3

Albero di branch-and-bound U(P 1 ) = 11 P 0 x 1 1 x 1 2 P 1 P 2 LB = x 2 3 x 2 4 P 3 P 4 U(P 3 ) = 113 10 Branch and Bound p. 18/3

Continua Al momento: il problema iniziale P 0 é suddiviso in tre sottoproblemi P 1, P 3, P 4, di cui P 4 é giá risolto (cancellazione del nodo nell albero). Ora: seleziono il nodo foglia/sottoproblema non ancora cancellato con upper bound maggiore (nell esempio P 3 ) e lo suddivido in due sottoproblemi (nell esempio P 5 e P 6 ). Branch and Bound p. 19/3

Il sottoproblema P 5 P 5 : max x 1 + 3x 2 (u 1 ) x 1 1 2 (u 2 ) 5x 1 + 3x 2 5 (u 3 ) x 1 + 7 5 x 2 13 2 (u 4 ) x 1 2 (u 5 ) x 2 3 23 (u 6 ) x 1 10 x 1,x 2 0 x 1,x 2 I = 2 Branch and Bound p. 20/3

Il sottoproblema P 6 P 6 : max x 1 + 3x 2 (u 1 ) x 1 1 2 (u 2 ) 5x 1 + 3x 2 5 (u 3 ) x 1 + 7 5 x 2 13 2 (u 4 ) x 1 2 (u 5 ) x 2 3 23 (u 6 ) x 1 + 1 = 3 10 x 1,x 2 0 x 1,x 2 I Branch and Bound p. 21/3

Il rilassamento lineare di P 5 u 1 u 2 4 3 B A H K J u 5 2 u 3 1 z u 6 u 4 C 1 G 2 3 4 5 6 D - + S ott = {K}, K = (2, 3): coordinate intere, quindi K risolve anche P 5! Valore ottimo di P 5 = 11 Posso aggiornare LB LB = 11 Branch and Bound p. 22/3

Il rilassamento lineare di P 6 B u 1 u 2 A z u 4 C 1 G S ott = {L}, L = (3, 5/2) U(P 6 ) = 21/2 4 3 2 1 H J K + - L u 5 00 11 01 0011 000000 111111 00000000 11111111 000000000 111111111 00000000000 11111111111 000000000000 111111111111 0000000000000 1111111111111 000000000000000 111111111111111 0000000000000000 1111111111111111 000000000000000000 111111111111111111 000000000000000000 111111111111111111 M 2 3 4 5 6 u 6 D u 3 Branch and Bound p. 23/3

Cancellazione nodi Oltre ai nodi/sottoproblemi risolti, posso anche cancellare nodi foglia/sottoproblemi non risolti : cancella un nodo P i se U(P i ) LB In tal caso tutte le soluzioni in P i sono non migliori rispetto alla migliore osservata sino ad ora (valore LB) e quindi non vale la pena esplorarle. Nel nostro esempio, cancella P 1 e P 6. Branch and Bound p. 24/3

Albero di branch-and-bound U(P 1 ) = 11 U(P 5 ) = 11 P 0 LB = 11 x 1 1 x 1 2 P 1 P 2 x 2 3 x 2 4 P 3 P 4 x 1 2 x 1 3 P 5 P 6 U(P 6 ) = 21 2 Branch and Bound p. 25/3

Regola di arresto STOP quando tutti i nodi foglia sono stati cancellati. Al momento dell arresto LB restituisce il valore ottimo di P 0. Se LB =, allora P 0 ha regione ammissibile vuota. Branch and Bound p. 26/3

Algoritmo generale Inizializzazione Inizializza F (insieme nodi foglia non cancellati) con P 0, F = {P 0 }. Risolvi il rilassamento lineare P 0 di P 0 e sia (x 1 (P 0),...,x n(p 0 )) la soluzione ottima trovata e U(P 0 ) il corrispondente valore ottimo. Se tutti i valori x i (P 0), i = 1,...,n sono interi, STOP: la soluzione (x 1 (P 0),...,x n(p 0 )) é soluzione ottima anche per P 0 ed il valore ottimo di P 0 é pari a U(P 0 ). Altrimenti si ponga LB = e si vada al Passo 1. Passo 1 Seleziona in F un nodo Q F tale che U(Q) = max P F U(P) Sia (x 1 (Q),...,x n(q)) una soluzione ottima del rilassamento lineare Q di Q. Branch and Bound p. 27/3

Continua Passo 2 Seleziona una variabile x i (Q) a valore non intero (quella con indice minimo). Passo 3 Rimuovi il nodo Q da F (cioé F = F \ {Q}) e suddividi Q in due nuovi nodi Q 1 e Q 2 ottenuti aggiungendo ai vincoli di Q rispettivamente il vincolo x i x i (Q) (in Q 1) ed il vincolo x i x i (Q) + 1 (in Q 2). Branch and Bound p. 28/3

Continua Passo 4 Per ciascuno dei due nuovi nodi Q i, i = 1, 2, risolvi il rilassamento lineare Q i. Se Q i ha regione ammissibile vuota, cancella il nodo Q i e non lo si aggiunge a F. Altrimenti se la soluzione ottima (x 1 (Q i),...,x n(q i )) é a coordinate intere si cancelli il nodo Q i senza aggiungerlo a F ed inoltre, se U(Q i ) > LB si ponga LB = U(Q i ) e y 1 = x 1(Q i ),...,y n = x n(q i ). Altrimenti, se la soluzione ottima di Q i non é a coordinate intere, si aggiunga Q i a F, ovvero si ponga F = F {Q i }. Branch and Bound p. 29/3

Continua Passo 5 Si cancellino tutti i nodi in F con valore dell upper bound non superiore a LB, ovvero si ponga F = F \ {P F : U(P) LB}. Passo 6 Se F =, STOP: se LB ha valore pari a, allora il problema P 0 non ha soluzioni ammissibili, altrimenti il valore LB é il valore ottimo del problema P 0 e (y 1,...,y n ) é una soluzione ottima di tale problema. Altrimenti si ritorni al Passo 1. Branch and Bound p. 30/3