Sei sulla pagina 1di 36

METODO DEL BRANCH AND BOUND

Ricerca Operativa

1 / 36
Introduzione
• Il metodo del Branch and Bound (B&B) è stato introdotto negli anni
‘60 per risolvere problemi di Programmazione Lineare Intera (PLI) e
più in generale problemi di ottimizzazione combinatoria.
• Il metodo si basa su uno schema enumerativo che esplora lo spazio
(finito) delle soluzioni di un problema al fine di individuare e
certificare una soluzione ottima del problema.
• Si tratta di un metodo di enumerazione implicita che cerca di evitare
l’esplorazione di tutte le soluzioni ammissibili nella ricerca di una
soluzione ottima.
• Il metodo del Branch and Bound è una delle principali tecniche
utilizzate per risolvere diversi problemi di ottimizzazione (ad esempio i
solver di programmazione matematica si basano su questo metodo e
relative evoluzioni).
• Ci concentreremo in questa lezione sull’introduzione della struttura
generale del B&B e dei suoi principali aspetti.
2 / 36
Introduzione

• Il B&B è basato su uno schema ad albero dove ad ogni nodo è


associato un sottoproblema generato dai problemi presenti ai livelli
superiori dell’albero. I due tipi principali di operazioni del metodo
sono:
1 Branch: Operazione di ramificazione che permette di generare un
sottoproblema nell’albero.
2 Bound: Operazione di stima del valore ottimo di un sottoproblema
corrispondente ad un nodo dell’albero.
• Il B&B è un metodo esatto come presentato e discusso in questa sede.
• Nota: Il B&B può essere usato anche in modo euristico per
determinare soluzioni di buona qualità anche se non necessariamente
ottime.

3 / 36
Albero di ricerca
• Si consideri un problema di partenza P0 e si indichi con E0 il
corrispondente insieme delle soluzioni ammissibili.
• Definiamo un albero di ricerca (o delle soluzioni ammissibili) in cui:
1 Il nodo radice è il nodo corrispondente al problema P0 .
2 Al generico nodo i corrisponde un sottoproblema Pi ed un insieme di
soluzioni ammissibili indicato con Ei (con Ei ⊆ E0 ).
3 Un problema figlio Pj viene generato da un problema padre Pi con
un’operazione di branch che tipicamente consiste nell’aggiunta di
vincoli su una o più variabili del problema in modo che:
Gli insiemi delle soluzioni ammissibili dei nodi figli 1, . . . , n generati da
Pi costituiscano una partizione delle soluzioni ammissibili di Ei :
E1 ∪ E2 ∪ · · · ∪ En = Ei ;
Eh ∩ Ek = ∅ h = 1, . . . , n − 1; k = h + 1, . . . , n.
4 Se una serie di operazioni di branch induce un’unica soluzione di un
sottoproblema o un sottoproblema non ammissibile, il corrispondente
nodo, detto foglia, non è ulteriormente esplorato.
4 / 36
Albero di ricerca
• Nell’albero di ricerca la relazione padre-figlio tra due nodi i e j viene
rappresentata graficamente con uno spigolo (i, j) su cui viene
riportata l’operazione di branch.

• Esempio: albero di ricerca (parziale) di un Branch and Bound per un


problema di Programmazione Lineare Intera con la variabile
x1 ∈ {0, 1} e le variabili x2 , x3 ∈ N:

P0

x3 ≤ 4 x3 ≥ 5

P1 P2

x2 ≤ 2 x2 ≥ 3 x1 = 0 x1 = 1

P3 P4 P5 P6

5 / 36
Branch and Bound

Lo schema generale del B&B è il seguente:


• Il B&B sviluppa l’albero di ricerca di un problema e ne esamina i
nodi/problemi secondo determinate regole di esplorazione.
• L’eventuale partizionamento di un nodo esaminato si effettua
attraverso determinate regole di branch.
• I nodi relativi a problemi inammissibili o con una stima del valore
ottimo non migliore della migliore soluzione disponibile (in un certo
momento) non sono ulteriormente partizionati e vengono chiusi.
• Il B&B termina quando non ci sono nodi aperti da esaminare e
restituisce una soluzione ottima del problema analizzato.

6 / 36
Branch and Bound

• Si osserva che se il metodo effettuasse solo la fase di branch,


enumererebbe esplicitamente tutte le soluzioni ammissibili di un
problema.
• Infatti in un determinato numero di passi arriverebbe a considerare le
soluzioni di tutti i nodi foglia e la soluzione ottima sarebbe la migliore
tra di esse.
• In realtà l’efficienza del metodo è dovuta proprio alla possibilità di
evitare lo sviluppo completo dell’albero di ricerca grazie alla fase di
bound.
• Ci concentriamo ora sull’analisi dei nodi di un albero di ricerca e sui
loro criteri di chiusura per problemi di minimo prima (slide 8-23) e
problemi di massimo poi (slide 24-32).
• Le regole di esplorazione dell’albero di ricerca e le regole di branch
saranno discusse in seguito.
7 / 36
Lower Bound e Upper Bound (problemi di minimo)

• Si assuma che il problema di partenza P0 sia di minimo.


• Al problema di partenza e in generale ad ogni problema Pi
(ammissibile) sono associati due grandezze:
• Lower Bound LBi : stima del valore di una soluzione ammissibile e
ottima del problema Pi . Rappresenta dunque un limite inferiore del
valore di una soluzione ottima del problema Pi .

• Upper Bound UBi : valore di una soluzione ammissibile (non per forza
ottima) del problema Pi . Rappresenta quindi anche il valore di una
soluzione ammissibile per il problema P0 .

8 / 36
Lower Bound e Upper Bound (problemi di minimo)

• Per il calcolo del valore di LBi , si fa spesso riferimento alla soluzione


di un rilassamento del problema Pi dove alcuni vincoli sono eliminati.

• L’idea è quella di risolvere un problema più “facile” permettendo un


calcolo rapido di LBi cercando al contempo di ottenere delle buone
stime rispetto al valore di una soluzione ottima del problema Pi .

• In questa sede faremo riferimento al rilassamento continuo del


problema Pi , ovvero al problema che si ottiene rimuovendo tutti i
vincoli di interezza sulle variabili intere e binarie di Pi .

• Risolvendo il rilassamento continuo del problema Pi , si ottiene un


limite inferiore del valore di una soluzione ottima di Pi che soddisfi
anche i vincoli di interezza.

9 / 36
Lower Bound e Upper Bound (problemi di minimo)
Esempio di problema di PLI e corrispondente rilassamento continuo:
Problema P0 :
min − 5x1 − 4x2
x1 + x2 ≤ 5
10x1 + 6x2 ≤ 45
x1 , x2 ∈ N

Rilassamento continuo di P0 :
min − 5x1 − 4x2
x1 + x2 ≤ 5
10x1 + 6x2 ≤ 45
x1 ≥ 0, x2 ≥ 0

La soluzione ottima del rilassamento continuo è x1 = 3.75, x2 = 1.25. Il


corrispondente valore di −23.75 è un lower bound del problema di PLI.
10 / 36
Lower Bound e Upper Bound (problemi di minimo)

• Osservazione: nel caso in cui i coefficienti di costo della variabili del


problema di PLI siano interi, i valori di lower bound possono essere
arrotondati per eccesso all’intero più grande (d−23.75e = −23
nell’esempio).

• Per il calcolo del valore di UBi , solitamente si considerano delle


procedure euristiche che permettano di trovare rapidamente una
soluzione ammissibile del sottoproblema Pi (e quindi anche di P0 ).

• La migliore soluzione del problema è quella a cui corrisponde il


minimo valore degli upper bound calcolati nei nodi dell’albero di
ricerca.

11 / 36
Lower Bound e Upper Bound (problemi di minimo)

• Si considerino i valori di lower bound e upper bound di un nodo


“padre” e quelli di un nodo “figlio”.

• Assumendo che i valori di LBpadre e LBfiglio siano ricavati risolvendo il


rilassamento continuo dei rispettivi problemi, si ha LBpadre ≤ LBfiglio .

• Questo perché il rilassamento continuo del nodo figlio ha gli stessi


vincoli di quello del nodo padre più un vincolo aggiuntivo derivante da
un’operazione di branch.

• In generale invece non si ha nessuna implicazione per i valori di


UBpadre e UBfiglio .

12 / 36
Lower Bound e Upper Bound (problemi di minimo)
• La soluzione ottima del rilassamento continuo di un problema di PLI
può offrire anche indicazioni sull’operazione di branch da effettuare.
• Nel precedente problema, si può considerare ad esempio il valore di x1
(= 3.75) e generare due sottoproblemi P1 e P2 con x1 ≤ 3 e x1 ≥ 4
rispettivamente.
• Questa operazione permette di
escludere la precedente soluzione
continua x1 = 3.75, x2 = 1.25
senza eliminare soluzioni per il
problema di PLI.

13 / 36
Lower Bound e Upper Bound (problemi di minimo)

• Per un problema di minimo, l’obiettivo del B&B è quello di ottenere


valori alti di lower bound (stime più significative) e valori bassi di
upper bound (soluzioni migliori) durante l’esplorazione dell’albero di
ricerca.
• Questo al fine di chiudere tutti i nodi dell’albero di ricerca in modo da
certificare l’ottimalità di una soluzione evitando il più possibile
l’enumerazione esplicita di tutte le soluzioni ammissibili di un
problema di PLI.

14 / 36
Criteri di chiusura dei nodi (problemi di minimo)

• I criteri per la chiusura di un nodo/problema Pi sono i seguenti:


1 Assenza di una soluzione migliorante;

2 Soluzione intera;

3 Assenza di una soluzione ammissibile.

• Ciascun criterio è analizzato nelle slide successive

15 / 36
Criteri di chiusura dei nodi (problemi di minimo)

1) Assenza di una soluzione migliorante:


• Se la stima ottenuta per il problema Pi non è migliore del valore della
migliore soluzione ammissibile ottenuta in un certo momento, allora il
nodo relativo al problema Pi può essere chiuso.
• In tal caso infatti l’ulteriore esplorazione di Pi non potrà mai condurre
ad una soluzione migliore di quella già disponibile.
• Si assuma che, durante la parziale esplorazione dell’albero di ricerca,
la migliore soluzione ammissibile ottenuta per il problema iniziale di
minimo P0 abbia valore UB 0 (ovvero il più basso dei valori degli upper
bound).
• Per un problema di minimo, il nodo del problema Pi viene quindi
chiuso se
LBi ≥ UB 0

16 / 36
Criteri di chiusura dei nodi (problemi di minimo)

2) Soluzione intera:
• Se la soluzione ottima del rilassamento continuo di Pi è intera, allora
questa soluzione costituisce una soluzione ammissibile e ottima di Pi .
Il relativo nodo dell’albero di ricerca viene quindi chiuso e si ha
LBi = UBi .

• Se la soluzione intera con valore UBi è migliore della miglior soluzione


fino a quel momento disponibile con valore UB 0 , ovvero UBi < UB 0 , il
valore di UB 0 viene aggiornato ⇒ UB 0 = UBi .

17 / 36
Criteri di chiusura dei nodi (problemi di minimo)

3) Assenza di una soluzione ammissibile:


• Le operazioni di branch dal nodo radice del problema iniziale P0 fino
al nodo del problema Pi possono determinare una situazione di
incompatibilità dei vincoli aggiunti ai vincoli iniziali.

• In tal caso il problema Pi è inammissibile e viene chiuso.

18 / 36
Criteri di chiusura dei nodi: Esempio

• Si riprenda il problema di PLI della slide 10. L’operazione di branch


x1 ≤ 3 e x1 ≥ 4 determina il seguente albero di ricerca:

19 / 36
Criteri di chiusura dei nodi: Esempio

• Si consideri prima il problema P1 . La soluzione ottima del


rilassamento continuo del problema P1 è intera (x1 = 3, x2 = 2) con
valore -23. Si ha LB1 = UB1 = −23. Il nodo/problema P1 può essere
chiuso per il criterio 2).

• Si consideri il problema P2 . Visto che i coefficienti di costo della


funzione obiettivo sono interi, il lower bound LB2 del problema P2
può essere arrotondato a −23 ≥ UB1 . Il nodo P2 può essere chiuso
per il criterio 1).

• Il B&B termina e restituisce la soluzione ottima del problema iniziale


P0 con x1 = 3, x2 = 2 e funzione obiettivo di -23.

20 / 36
Esercizio 1
• Sia dato un problema di minimo e sia indicato qui di seguito lo
sviluppo parziale dell’albero di ricerca del Branch and Bound
associato. Con Pi (UBi , LBi ) indichiamo rispettivamente il
sottoproblema considerato (Pi ), il suo upper bound (UBi ) ed il suo
lower bound (LBi ).

Se il problema P11 non ha soluzione ammissibile, per quale intervallo


di valori di upper bound UB12 e lower bound LB12 del problema P12 ,
si è in grado di riconoscere immediatamente la soluzione ottima del
problema?
21 / 36
Esercizio 1: Soluzione

• Il problema P11 può essere chiuso perché non è ammissibile.

• Il valore della miglior soluzione corrente è 37 (= UB21 ), valore che


non permette la chiusura di nessuno dei problemi aperti.

• Per chiudere i nodi P21 e P22 , bisogna avere per P12 una soluzione
con un valore minore o uguale del più basso dei lower bound dei nodi,
ovvero delle stime di soluzione presenti nei due nodi. Quindi

UB12 ≤ min{LB21 , LB22 } = 32.

• Per riconoscere una soluzione ottima, anche il nodo P12 deve essere
chiuso. L’unico modo possibile è imporre LB12 = UB12 .

22 / 36
Esercizio 1: Soluzione

• Infine, la stima di soluzione di un nodo figlio non può essere migliore


di quella del nodo padre (dietro ipotesi di calcolo dei lower bound con
il rilassamento continuo dei problemi). Da ciò segue che

LB12 ≥ LB1 = 29.

• Riassumendo, si hanno i seguenti valori di LB12 e UB12 tali per cui si


è in grado di riconoscere la soluzione ottima del problema:

29 ≤ LB12 = UB12 ≤ 32.

23 / 36
Lower Bound e Upper Bound (problemi di massimo)

• Si assuma ora che il problema di partenza P0 sia di massimo.


• In questo caso i valori di lower bound sono relativi a soluzioni
ammissibili del problema mentre i valori di upper bound costituiscono
delle stime dei valori delle soluzione ottime dei sottoproblemi.
• Per ogni problema Pi (ammissibile) si ha:
• Lower Bound LBi : valore di una soluzione ammissibile (non per forza
ottima) del problema Pi . Rappresenta quindi anche il valore di una
soluzione ammissibile per il problema P0 .

• Upper Bound UBi : stima del valore di una soluzione ammissibile e


ottima del problema Pi . Rappresenta dunque un limite superiore del
valore di una soluzione ottima del problema Pi .

24 / 36
Lower Bound e Upper Bound (problemi di massimo)

• Per il calcolo del valore di UBi , si fa nuovamente riferimento al


rilassamento continuo del problema Pi .

• Analogamente a quanto visto per un problema di minimo, nel caso in


cui i coefficienti di costo della variabili del problema di PLI siano
interi, il valore di UBi può essere arrotondato per difetto all’intero più
piccolo.

• Per il calcolo dei valore di LBi , solitamente si considerano delle


procedure euristiche che permettano di trovare rapidamente una
soluzione ammissibile del problema Pi (e quindi anche di P0 ).

• La migliore soluzione del problema è quella a cui corrisponde il


massimo valore dei lower bound calcolati nei nodi dell’albero di
ricerca.

25 / 36
Lower Bound e Upper Bound (problemi di massimo)

• Come nell’analisi dei problemi di minimo, si considerino i valori di


lower bound e upper bound di un nodo “padre” e quelli di un nodo
“figlio”.

• In questo caso, assumendo che i valori di UBpadre e UBfiglio siano


ricavati risolvendo il rilassamento continuo dei rispettivi problemi, si
ha UBpadre ≥ UBfiglio .

• In generale non si ha nessuna implicazione invece per i valori di


LBpadre e LBfiglio .

• Per un problema di massimo, l’obiettivo del B&B è quello di ottenere


valori bassi di upper bound (stime più significative) e valori alti di
lower bound (soluzioni migliori) durante l’esplorazione dell’albero di
ricerca.

26 / 36
Criteri di chiusura dei nodi (problemi di massimo)

• Per quanto riguarda la chiusura di un nodo/problema Pi , per un


problema di massimo valgono gli stessi criteri visti per un problema di
minimo:
1 Assenza di una soluzione migliorante;

2 Soluzione intera;

3 Assenza di una soluzione ammissibile.

• Il criterio 3) si applica come descritto nella slide 18.

• Si osservano implicazioni diverse derivanti dai criteri 1) e 2)

27 / 36
Criteri di chiusura dei nodi (problemi di massimo)

1) Assenza di una soluzione migliorante:


• Si consideri un sottoproblema Pi e si assuma che, durante la parziale
esplorazione dell’albero di ricerca, la migliore soluzione ammissibile
ottenuta per il problema iniziale abbia valore LB 0 (ovvero il più alto
dei valori di lower bound).

• Per un problema di massimo, il nodo del problema Pi viene quindi


chiuso se
UBi ≤ LB 0

28 / 36
Criteri di chiusura dei nodi (problemi di massimo)

2) Soluzione intera:
• Se la soluzione ottima del rilassamento continuo di Pi è intera, allora
questa soluzione costituisce una soluzione ammissibile e ottima di Pi .
Il relativo nodo dell’albero di ricerca viene quindi chiuso e si ha
LBi = UBi .

• Se la soluzione intera con valore LBi è migliore della miglior soluzione


fino a quel momento disponibile con valore LB 0 , ovvero LBi > LB 0 , il
valore di LB 0 viene aggiornato ⇒ LB 0 = LBi .

29 / 36
Esercizio 2
• Sia dato un problema di massimo e sia indicato qui di seguito lo
sviluppo parziale dell’albero di ricerca del Branch and Bound
associato. Con Pi (UBi , LBi ) indichiamo rispettivamente il
sottoproblema considerato (Pi ), il suo upper bound (UBi ) ed il suo
lower bound (LBi ).

Se il problema P11 non ha soluzione ammissibile, per quale intervallo


di valori di upper bound UB12 e lower bound LB12 del problema P12 ,
si è in grado di riconoscere immediatamente la soluzione ottima del
problema?
30 / 36
Esercizio 2: Soluzione

• Il problema P11 può essere chiuso perché non è ammissibile.

• Il valore della miglior soluzione corrente è 33 (= LB22 ), valore che


non permette la chiusura di nessuno dei problemi aperti.

• Per chiudere i nodi P21 e P22 , bisogna avere per P12 una soluzione
con un valore maggiore o uguale del più alto degli upper bound dei
nodi, ovvero delle stime di soluzione presenti nei due nodi. Quindi

LB12 ≥ max{UB21 , UB22 } = 38.

• Per riconoscere una soluzione ottima, anche il nodo P12 deve essere
chiuso. L’unico modo possibile è imporre LB12 = UB12 .

31 / 36
Esercizio 2: Soluzione

• Infine, la stima di soluzione di un nodo figlio non può essere migliore


di quella del nodo padre (dietro ipotesi di calcolo degli upper bound
con il rilassamento continuo dei problemi). Da ciò segue che

UB12 ≤ UB1 = 40.

• Riassumendo, si hanno i seguenti valori di LB12 e UB12 tali per cui si


è in grado di riconoscere la soluzione ottima del problema:

38 ≤ LB12 = UB12 ≤ 40.

32 / 36
Regole di esplorazione dell’albero di ricerca

• Le prestazioni del B&B sono legate al modo in cui viene sviluppato


l’albero di ricerca per quanto riguarda la scelta dei nodi aperti da
esplorare.

• Esistono varie strategie di esplorazione per stabilire il prossimo nodo


da partizionare ulteriormente attraverso un’operazione di branch.

• Spesso può risultare maggiormente efficiente combinare diverse


strategie durante l’esecuzione del B&B.

• In questa sede ci si limita ad elencare le principali strategie di


esplorazione di un albero di ricerca.

33 / 36
Regole di esplorazione dell’albero di ricerca

• Le strategie più utilizzate sono le seguenti:


1 Nodo più promettente (Best First): viene selezionato il nodo più
promettente, ovvero il nodo con il bound migliore: lower bound più
basso per un problema di minimo; upper bound più alto per un
problema di massimo.

2 Ricerca in profondità (Depth First): viene selezionato il nodo del livello


più basso dell’albero di ricerca (muovendosi nell’albero da sinistra a
destra).

3 Ricerca in ampiezza (Breadth First): vengono esplorati tutti i nodi dello


stesso livello dell’albero prima di esplorare i nodi dei livelli successivi.

34 / 36
Regole di branch

• Come visto in precedenza, un’operazione di branch consiste


nell’aggiunta di vincoli su una o più variabili del problema in modo
che:

• Gli insiemi delle soluzioni ammissibili E1 , . . . , En dei nodi figli 1, . . . , n


di un nodo padre Pi costituiscano una partizione delle soluzioni
ammissibili di Ei :
E1 ∪ E2 ∪ · · · ∪ En = Ei ;
Eh ∩ Ek = ∅ h = 1, . . . , n − 1; k = h + 1, . . . , n.
(la seconda condizione non è strettamente necessaria ma
generalmente auspicata)

35 / 36
Regole di branch

• Esistono diversi modi per decidere quali vincoli inserire in


un’operazione di branch.
• Tali scelte sono tipicamente legate al tipo di problema affrontato e
scelte diverse possono portare a prestazioni molto diverse del B&B.
• Come distinzione generale, si distingue il branch binario dal branch
non binario:
• Nel branch binario da un nodo padre vengono generati solo due nodi
figli. Si consideri come esempio il caso in cui una variabile binaria
viene posta a 0 o a 1.
• Nel branch non binario da un nodo padre vengono generati più di due
nodi figli. Si consideri ad esempio il caso in cui una variabile x può
assumere solo k > 2 valori α1 , α2 , . . . , αk . In tal caso possono essere
creati k sottoproblemi in cui x = α1 , x = α2 , . . . , x = αk .

36 / 36

Potrebbero piacerti anche