Università Ca Foscari Venezia Dipartimento di Scienze Ambientali, Informatica e Statistica Giovanni Fasano Brevi NOTE sul Metodo del BRANCH & BOUND Università Ca Foscari Venezia, Dipartimento di Management, S.Giobbe Cannaregio 873, 30121 Venezia, ITALY. E-mail:fasano@unive.it ; URL: http://venus.unive.it/ fasano - A.A. 2018-2019.
Le presenti note sintetizzano alcune linee guida relative al Metodo del Branch & Bound, per la soluzione di problemi di Programmazione Lineare. Le note si riferiscono al corso di Ricerca Operativa, svolto dal docente Giovanni Fasano nell A.A. 2018-2019, presso l Università Ca Foscari Venezia, sede di via Torino (Mestre). Le lezioni sono state organizzate nell ambito del Corso di Laurea in Informatica. 2
Figura 1: Il poliedro Q i e l insieme S i = {(1, 2), (2, 0), (2, 1), (2, 2), (3, 0), (3, 1), (3, 2), (3, 3), (4, 2)} dei punti a coordinate intere in esso contenuti, i.e. S i Q i. 1 Note e premesse sul Metodo del Branch & Bound (B&B) Il B&B rappresenta una tecnica iterativa esatta, di tipo enumerativo, per la soluzione di problemi di Programmazione Matematica Intera/Mista e, più in particolare, per la soluzione di problemi di Programmazione Lineare Intera (PLI) e Programmazione Lineare Mista (PLM). Si supponga pertanto di voler risolvere il problema di PLI (nel seguito si indicherà con Z l insieme dei numeri interi, i.e. Z = {0, ±1, ±2,...}) x Q 0 x Z n, x S 0, (1) nel quale Q 0 = {x IR n : Ax b} è un generico poliedro in IR n, S 0 = Q 0 Z n, A IR m n, c IR n e b IR m. L insieme S 0 contiene tutti e soli i punti del poliedro Q 0 a coordinate intere. Più in generale, si indicherà di seguito con S i l insieme dei punti a coordinate intere dato da S i = Q i Z n, dove Q i è un poliedro in IR n (si veda l esempio nella Figura 1). Nelle note che seguono si assumerà per semplicità che il problema (1) NON sia illimitato inferiormente. Premesse I punti a coordinate intere in S i non necessariamente coincidono con i vertici del poliedro Q i (contrariamente a quanto mostrato in Figura 1), pertanto se si tentasse 3
di risolvere il problema x Q 0, non necessariamente si avrebbe una soluzione x 0 a coordinate intere. Definendo i vettori e si ha naturalmente poichè S 0 Q 0. x 0 ˆx 0 soluzione di { x Q 0 soluzione di { x S 0 f(ˆx 0 ) f(x 0 ), Il Metodo del B&B consiste anzitutto nel partizionare (BRANCHING) in modo intelligente la regione ammissibile S 0, nei sottoproblemi S i, i {1,..., k}, così che S 0 = k i=1 S i = S i S j, 0 i j k, cercando (se necessario) una stima, per difetto, di una soluzione del sottoproblema x S i. (P i ) Il problema (P i ) così generato viene detto aperto e viene inserito in una lista. Nella procedura riportata in Sezione 2 si considererà per semplicità una partizione semplificata, che non pregiudica la convergenza del metodo. Per calcolare una stima della soluzione di (P i ) si deve calcolare un bound (BOUND- ING) per (P i ). In particolare, detta ˆx i una soluzione di (P i ) e posto ẑ i = c T ˆx i, per calcolare un bound di (P i ) calcoliamo x i, soluzione ottima del problema di Programmazione Lineare x Q i, (P L i ) ed indichiamo con z i il valore z i = c T x i. Sarà senz altro z i ẑ i poichè il poliedro Q i è tale che S i Q i. Si dice che (P L i ) è un rilassamento di (P i ). Ribadiamo che il poliedro Q i contiene gli stessi punti a coordinate intere di S i. 4
2 Sintesi del Metodo del B&B Fatte le precedenti premesse, il Metodo del B&B può essere schematizzato come segue: 1. Sia z = c T x l ottimo corrente (ovvero l approssimazione corrente di una soluzione per (1). Il punto x può essere calcolato in qualsiasi modo, anche attraverso ispezione visiva o tecniche euristiche) di (P 0 ), corrispondente al punto a coordinate intere x IR n. Nel caso peggiore, ovvero se non si è in grado di stimarlo in nessun modo, si pone z = + e x si pone non noto. 2. Sia L la lista dei cosiddetti problemi aperti (P i ), i 0 (dei quali cioè è ancora necessario cercare un possibile bound per la soluzione). All inizio della procedura L contiene solo il problema iniziale (P 0 ), ovvero si pone L = {(P 0 )}. 3. Si estrae dalla lista L il problema (P i ) (la scelta del problema (P i ) da estrarre dalla lista L, i.e. la regola di estrazione, è arbitraria) e se ne risolve il rilassamento (P L i ) con le seguenti regole: (a) se (P L i ) ammette soluzione x i e risulta z i z, allora si chiude (P i ), ovvero il sottoproblema (P i ) non può contenere alcuna soluzione a coordinate intere migliore della soluzione corrente x, in quanto risulta comunque c T ˆx i c T x i = z i z; (b) se (P L i ) ha un insieme ammissibile vuoto, allora si chiude (P i ), in quanto il sottoproblema (P i ) è anch esso vuoto. Quindi (P i ) non può contenere alcuna soluzione a coordinate intere migliore della soluzione corrente x; (c) se (P L i ) ammette soluzione x i e risulta z i < z, allora ci sono due possibili casi: se x i Z n (ovvero se x i ha tutte componenti intere), allora si pone x = x i, z = c T x i e si chiude il sottoproblema (P i ) (in quanto x i è anch esso soluzione di (P i )), ovvero L = L \ {(P i )}; se x i Z n (ovvero se x i NON ha tutte componenti intere), allora si partiziona il problema (P i ) nei due sottoproblemi (P i+1 ) e (P i+2 ), e si pone L = L \ {(P i )} {(P i+1 ), (P i+2 )}, ovvero da L si toglie (P i ) e si inseriscono (P i+1 ) e (P i+2 ). In particolare, se la componente j-sima x j i del vettore x i risulta NON intera, i.e. x j i = α Z, allora il problema (P i ) viene partizionato nei due sottoproblemi Qualora vi siano più componenti del vettore x i non intere, se ne sceglie arbitrariamente una. 5
x S i x j α (P i+1 ) e x S i x j α + 1, (P i+2 ) essendo α la parte intera inferiore di α. Ai problemi P i+1 e P i+2 vengono associati i problemi rilassati (P L i+1 ) e (P L i+2 ), ottenuti suddividendo (P L i ) come segue: x Q i x j α (P L i+1 ) e x Q i x j α + 1. (P L i+2 ) Ciò garantisce che (si veda anche la Figura 2) S i = S i+1 S i+2 e = S i+1 S i+2. 4. Se la lista L risulta vuota (i.e. non vi sono più sottoproblemi al suo interno, da estrarre) allora STOP (la procedura del B&B termina): il punto x è una soluzione di (1). Altrimenti si torna al punto 3. 3 Il B&B per problemi di Knapsack binario Vogliamo risolvere il problema di PLI n max c j x j n a j x j b, x {0, 1} n, (K 0 ) che rappresenta la massimizzazione dell utilità di inserire oggetti di volume finito in uno zaino (knapsack). In particolare si ha che c j rappresenta l utilità di inserire l oggetto j-simo nello zaino a j rappresenta il volume dell oggetto j-simo 6
Figura 2: A partire dal poliedro Q i si generano i poliedri Q i+1 = Q i {x IR 2 : x 2 α } e Q i+2 = Q i {x IR 2 : x 2 α + 1}, così che S i+1 Q i+1 e S i+2 Q i+2. b rappresenta il volume dello zaino x j {0, 1}, con x j = 1 se l oggetto j-simo viene inserito nello zaino, e x j = 0 altrimenti. Si tratta di un problema di Programmazione Lineare Intera, in cui è presente un solo vincolo, a parte i vincoli di interezza (binari), che può essere risolto quindi con il metodo del B&B. A tal fine, se si usa il B&B risulta piuttosto agevole la soluzione del rilassamento lineare (KL 0 ) di (K 0 ), senza usare il Metodo del Simplesso. Infatti, si ha per (KL 0 ) l espressione n max c j x j n a j x j b, 0 x j 1, j = 1,..., n. (KL 0 ) Per ottenere una soluzione di quest ultimo, valgono le seguenti osservazioni: (i) se c j = 0 allora la variabile x j non contribuisce alla massimizzazione della funzione obiettivo e basterà pertanto porre: x j = 0 se a j 0 (non uso parte del volume dello zaino per contenere il j-simo oggetto) x j = 1 se a j < 0 (uso parte del volume dello zaino per contenere il j-simo oggetto) 7
(ii) se a j = 0 allora la variabile x j non influenza il vincolo sul volume dello zaino, pertanto basterà porre: x j = 0 se c j 0 (non decremento l utilità includendo l oggetto j-simo) x j = 1 se c j > 0 (incremento l utilità includendo l oggetto j-simo) (iii) se c j a j 0 allora senza scapito di generalità si può assumere che sia c j > 0, a j > 0, in quanto altrimenti (ragionando come per (i) e (ii)) se c j < 0 e a j > 0 = basta porre x j = 0 se c j > 0 e a j < 0 = basta porre x j = 1 se c j < 0 e a j < 0 = basta effettare il cambio di variabile x j = 1 y j, con y j {0, 1}, ottenendo così un problema risultante con tutti coefficienti positivi. (iv) Ottenuto il nuovo problema di PLI, nel quale è stato assegnato un valore a n m variabili (con m n) applicando (i), (ii) e (iii), si ordinano (eventualmente rinominandole) le restanti m variabili, non assegnate ai punti (i), (ii) e (iii), in base al rapporto c j /a j non crescente, i.e. c 1 a 1 c 2 a 2 c m a m. Si determina ora l indice h, con 1 h m, tale che (si ricordi che dopo aver applicato (i)-(iii), si avrà al punto (iv) che a j > 0, j 1) h a j b e h+1 a j > b e si sceglie x j = 1, j = 1,..., h x h+1 = b h a j a h+1 x j = 0, j = h + 2,..., m. 8
Esempio. Diamo un esempio della precedente procedura (i)-(iv), per la soluzione del problema di Knapsack binario max 4x 1 + 2x 2 + 3x 3 5x 4 x 5 + x 6 3x 1 3x 2 + x 3 + x 4 x 5 1 2 x {0, 1} 6, (K 0 ) il cui rilassamento (KL 0 ) risulta essere max 4x 1 + 2x 2 + 3x 3 5x 4 x 5 + x 6 3x 1 3x 2 + x 3 + x 4 x 5 1 2 0 x j 1, j = 1,..., 6. (KL 0 ) Usando i risultati in (i), (ii) e (iii) possiamo assegnare facilmente il valore di alcune variabili (i.e. x 2 = 1, x 4 = 0, x 6 = 1), ottenendo in particolare il problema equivalente ovvero max 4x 1 + 2 1 + 3x 3 5 0 (1 y 5 ) + 1 3x 1 3 1 + x 3 + 1 0 (1 y 5 ) 0.5 0 x 1, x 3, y 5 1, max 4x 1 + 3x 3 + y 5 + 2 3x 1 + x 3 + y 5 4.5 0 x 1, x 3, y 5 1. Si provvede ora, in base a (iv), ad ordinare in modo non crescente i rapporti dei coefficienti delle restanti 3 variabili (x 1, x 3 e y 5 ), i.e. x 3 x 1 y 5 3 1 4 3 1 1, e di conseguenza si passa a risolvere (riordinando le variabili) il problema max 3x 3 + 4x 1 + y 5 + 2 x 3 + 3x 1 + y 5 4.5, 0 x 1, x 3, y 5 1. In base a (iv), essendo h = 2, risulta per la soluzione x 3 = 1 x 1 = 1 y 5 = 4.5 (1 + 3) 1 = 0.5 9
e pertanto la soluzione finale del rilassamento (KL 0 ) è data da x 1 = 1; x 2 = 1; x 3 = 1; x 4 = 0; x 5 = 1 y 5 = 0.5; x 6 = 1. 10