La matrice dei coefficienti tecnologici di un problema di Programmazione Lineare Intera (Pli) non è in generale unimodulare, per cui la soluzione ottima del suo rilassamento continuo (Pli-c) ha una o più componenti frazionarie.
Un algoritmo che può essere applicato per individuare una soluzione ottima per un problema di Programmazione Lineare Intera (Pli) è noto come Branch & Bound (B&B).
Si tratta di una tecnica enumerativa implicita che affronta un problema di PLI suddividendolo in due sottoproblemi sempre di PLI, ma più semplici, in quanto di taglia inferiore.
Si consideri un problema di PLI (Pli), la cui regione ammissibile è rappresentata in Figura. La soluzione ottima del rilassamento continuo è . E’ chiaro che la soluzione ottima intera avrà oppure . Allora, si procede aggiungendo il solo vincolo alla formulazione originaria di (Pli) così ottenendo il problema , che ha soluzione ottima . Successivamente, si aggiunge la sola condizione alla formulazione originaria di (Pli) così ottenendo il problema , che ha soluzione ottima . A questo punto, è immediato individuare la soluzione ottima intera al problema (Pli), scegliendo fra le soluzioni e quella cui corrisponde un migliore valore della funzione obiettivo.
In generale, dato il seguente problema di PLI
si risolve il suo rilassamento continuo
Sia una soluzione ottima per (Pli-c). Se ha tutte componenti intere, allora è una soluzione ottima anche per (Pli).
Altrimenti, (vedi Figura) si sceglie una componente frazionaria e si costruiscono i seguenti due sottoproblemi:
L’operazione di costruzione dei sottoploblemi e a partire da si chiama operazione di branching (ramificazione), mentre è detta variabile di branching. e si dicono figli di (Pli), a partire dal quale sono ottenuti aggiungendo alla formulazione matematica di (Pli) rispettivamente i vincoli di branching
e sono problemi della “stessa natura” di , per cui per risolverli si applica lo stesso procedimento, ossia per ciascuno dei sottoproblemi si risolve all’ottimo il corrispondente rilassamento continuo e, se necessario, si effettua a partire da essi un ulteriore operazione di branching. Si ottiene così procedendo una successione gerarchica di sottoproblemi via via più “vincolati” e dunque più semplici da risolvere rappresentati graficamente attraverso il cosiddetto albero di branching, il cui nodo radice è il nodo corrispondente al problema originario (Pli). Ciascun nodo figlio è ottenuto dal suo nodo padre aggiungendo alla formulazione matematica del problema corrispondente al nodo padre un vincolo di branching.
In generale, i vincoli di un problema associato ad un nodo dell’albero di branchingsono:
In linea di principio, l’albero di branching può contenere tutte le combinazioni possibili di branching e, cioè, enumerare tutte le soluzioni intere e fra queste scegliere quella cui corrisponde il miglior valore della funzione obiettivo. Tuttavia, come vedremo fra breve, potrebbe non essere necessario considerare esplicitamente tutti i nodi potenzialmente presenti nell’albero.
Supponiamo che stiamo valutando il sottoproblema corrispondente ad un generico nodo dell’albero di branching e sia la migliore soluzione intera finora trovata cui corrisponde un valore della funzione obiettivo pari a .
E’ inutile operare un branching a partire da se si verifica una delle seguenti condizioni.
1. Presentazione del Corso ed Introduzione alla Programmazione Mat...
2. Introduzione ai Problemi di PL
6. Algoritmo del Simplesso Revisionato
7. Algoritmo del Simplesso Tabellare
10. Soluzione di Problemi di PL tramite Algoritmo del Simplesso
11. Problemi di Programmazione Lineare Intera
12. PLI con matrice dei vincoli unimodulare
13. Problemi di PLI: Branch & Bound
14. Il Problema dello Zaino 0/1 e il Problema dello Zaino Frazionar...
15. Il Problema dello Zaino 0/1: un algoritmo B&B
16. Il Problema dello Zaino 0/1: un algoritmo di Programmazione Din...
17. Richiami di Teoria dei Grafi: definizioni e notazioni
18. Il Problema del Vertex Cover Minimo di un Grafo
19. Il Problema dell'Albero di Copertura Minimo (MST)
20. Il Problema dell'Albero di Copertura Minimo (MST): esempio
D. Bertsimas e J.N. Tsitsiklis, Introduction to Linear Optimization, Belmont - Massachusetts (USA), Dynamic Ideas and Athena Scientific, 2008.
M. Fischetti, Lezioni di Ricerca Operativa, Padova, Edizioni Libreria Progetto Padova, 1999.
S. Martello, Fondamenti di Ricerca Operativa L-A, Bologna, Società Editrice Esculapio, 2004.
S. Martello, Ricerca Operativa LS, Bologna, Società Editrice Esculapio, 2004.
Dispense del Corso di Ricerca Operativa presso l'Università degli Studi di Pisa.
Dispense ed Appunti del Corso prodotte da Paola Festa.