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