5. Metodo Branch and Bound Si consideri il problema min{ c(x) : x X } Idea: Ricondurre la risoluzione di un problema difficile a quella di sottoproblemi più semplici effettuando una partizione (ricorsiva) della regione ammissibile. Applicabile ai problemi di ottimizzazione combinatoria e continua. E. Amaldi Fondamenti di R. O. Politecnico di Milano
z = min{ c(x) : x X } Suddivisione ( branching ): Sia X = X X k una partizione di X in k sottoinsiemi ( X i X j = per ogni coppia i j ) e z i = min{ c(x) : x X i } per i =,, k Chiaramente z = min{ c(x) : x X } = min{z,, z k } E. Amaldi Fondamenti di R. O. Politecnico di Milano 2
Tecnica di bounding : Per ogni sottoproblema z i = min{ c(x) : x X i } i) determinare una soluzione ottima di min{ c(x) : x X i } (modo esplicito), oppure ii) dimostrare che X i = (modo esplicito), oppure iii) dimostrare che z i z migliore soluzione ammissibile trovata in precedenza (modo implicito). Se il sottoproblema non è risolto vengono generati nuovi sottoproblemi mediante suddivisione. E. Amaldi Fondamenti di R. O. Politecnico di Milano 3
5.. Branch and Bound per PLI Sia un PLI min{ c T x : Ax = b, x 0 interi } Branching : Suddividere la regione ammissibile X in sottoregioni esaustive ed esclusive (partizione). Risolvere il rilassamento continuo min{ c T x : Ax = b, x 0 } e siano x una soluzione ottima e z PL =c T x il valore ottimo. E. Amaldi Fondamenti di R. O. Politecnico di Milano 4
Se x intera, x è anche ottima per PLI, altrimenti x h frazionaria e si considerano i due sottoproblemi: PLI : min{ c T x : Ax = b, x h x h, x 0 interi } PLI 2 : min{ c T x : Ax = b, x h x h +, x 0 interi } Bounding : Determinare un bound (per difetto se PLI di min) sul valore ottimo z i di un sottoproblema di PLI risolvendo il relativo rilassamento continuo. E. Amaldi Fondamenti di R. O. Politecnico di Milano 5
Esempio: 9 8 x 2 9x + 5x 2 = 45 max PLI z = 8x + 5x 2 x +x 2 6 9x +5x 2 45 x, x 2 0 interi 7 6 5 4 3 2 x + x 2 = 6 x = 5/4 z PL = 4.25 9/4 z PL z * PLI 2 3 z = 20 Poiché x e x 2 frazionarie, sceglierne una per il passo di branching x E. Amaldi Fondamenti di R. O. Politecnico di Milano 6 4 5 6 x
Regione ammissibile X suddivisa in X e X 2 imponendo: x x = 3 o x x + = 4 x 2 vincoli esaustivi ed esclusivi z = 20 Sottoproblema S 9 8 7 6 5 4 3 sottoregione X 2 Sottoproblema S 2 sottoregione X 2 intera! z * PLI z PL sol. x = 3 z PL = 39 3 sol. x = 4 z PL2 = 4 9/5 x 2 3 4 5 6 E. Amaldi Fondamenti di R. O. Politecnico di Milano 7
Dopo aver considerato X, migliore soluzione ammissibile (intera) trovata finora: x = 3 con z = 39 3 Visto che z PL2 = 4 > 39, X 2 può contenere una soluzione ammissibile del PLI migliore. Partizione di X 2 in X 3 e X 4 imponendo: x 2 x 2 = o x 2 x 2 +=2 E. Amaldi Fondamenti di R. O. Politecnico di Milano 8
x 2 4 3 2 z = 20 x 2 = 2 x 2 = Sottoproblema S 4 è inammissibile (X 4 = ø) sol. x = con z PL3 = 365/9 40/9 2 3 4 5 6 x Sottoproblema S 3 sottoregione X 3 E. Amaldi Fondamenti di R. O. Politecnico di Milano 9
Albero decisionale: ( branching tree ) x 3 PL x 4 migliore sol. ammissibile trovata finora z PL2 = 39 sol. intera S S 2 z PL2 = 4 x 2 x 2 2 z PL3 = 365/9 S 3 S 4 inammissibile X 4 =ø E. Amaldi Fondamenti di R. O. Politecnico di Milano 0
Visto che z PL3 = 365/9 > 39, X 3 può contenere una soluzione ammissibile del PLI migliore. Partizione di X 3 in X 5 e X 6 imponendo: x x = 4 o x x + = 5 x = 40/9 E. Amaldi Fondamenti di R. O. Politecnico di Milano
4 3 x 2 z = 20 sol. di S 5 : x = 4 intera con z PL5 = 37 2 x = 4 x = 5 unica sol. ammissibile di S 6 5 x = 0 intera x z PL6 = 40 2 3 4 5 6 Sottoproblema S 5 Soluzione intera (anche ammissibile per PLI) ma con valore peggiore di x = 3 con z = 39 3 Migliore sol. trovata soluzione ottima Branch & Bound garantisce soluzione ottima (metodo esatto) E. Amaldi Fondamenti di R. O. Politecnico di Milano 2
Albero decisionale x 2 2 S 4 X 4 = ø inammissibile radice PL z = 65 4 x = 5 4 x2 = 9 4 x 4 x 3 z = 4 x x 2 z = 39 x x = 4 2 S 2 = 9 5 S = 3 = 3 x 2 intera S z = 365 9 x 40 = 9 x = 2 3 x 5 x 4 z = 40 z = 37 E. Amaldi Fondamenti di R. O. Politecnico di Milano 3 x x x x 2 2 S = 5 = 0 S 6 5 = 4 = sol. intera ottima z * PLI = 40 intera
L albero non contiene necessariamente tutti i nodi possibili (2 d # foglie) Un nodo non ha figli -- è chiuso -- se vincoli iniziali + quelli sugli archi dalla radice sono incompatibili (S 4 ) soluzione del rilassamento continuo è intera (S ) soluzione ottima x PL del rilassamento continuo ha un valore c T x PL peggiore di quello della migliore soluzione ammissibile del PLI trovata finora. criterio di bounding intera E. Amaldi Fondamenti di R. O. Politecnico di Milano 4
NB: Nel terzo caso la sottoregione ammissibile del sottoproblema associato a quel nodo non può contenere una soluzione intera migliore della migliore soluzione del PLI trovata finora! Criterio di bounding permette spesso di eliminare gran parte dei nodi (sottoproblemi). E. Amaldi Fondamenti di R. O. Politecnico di Milano 5
Scelta del nodo (sottoproblema) da elaborare: Prima nodi più profondi (tecnica depth first ) procedimento ricorsivo semplice ma costoso in caso di scelta sbagliata Prima nodi più promettenti ( best bound first ) con valore del rilassamento continuo migliore Si generano tipicamente meno nodi ma problemi poco vincolati si aggiorna raramente la migliore soluzione ammissibile corrente E. Amaldi Fondamenti di R. O. Politecnico di Milano 6
Scelta variabile (frazionaria) di branching Scegliere la variabile x h con parte frazionaria più vicina a 0,5 così il nuovo vincolo è più significativo per i due sottoproblemi. E. Amaldi Fondamenti di R. O. Politecnico di Milano 7
Struttura dati Branch & Bound: problema di min m = ultimo nodo x opt = migliore soluzione intera trovata finora z opt = c T x opt = costo migliore soluzione intera trovata finora Q = coda dei nodi foglia attivi (quelli che possono avere nodi figli) Padre[t] = ±p p = indice nodo padre di t +/- figlio di sinistra o di destra E. Amaldi Fondamenti di R. O. Politecnico di Milano 8
LB[t] = lower bound associato a t Vbranch[t] = indice h della variabile x h di branching Valore[t] = valore x * h della variabile di branching NB: Se PL inammissibile, x * fittizio e c T x * = + Se c intero, LB[m] = c T x * E. Amaldi Fondamenti di R. O. Politecnico di Milano 9
Algoritmo Branch & Bound Elaborazione radice BEGIN m:=; Padre[]:=0; Q:= ; z opt := valore soluzione euristica (eventualmente + ); risolvi il rilassamento continuo min{c T x : Ax = b, x 0} e sia x * la soluzione ottima trovata; LB[]:= c T x * ; IF (x * intera) AND (c T x * < z opt ) THEN x opt := x * ; z opt := c T x * END-IF IF LB[] < z opt THEN scegli la variabile frazionaria x * h di branching; Vbranch[]:= h; Valore[]:= x * h ; Q := {} END-IF WHILE Q 0 DO /* elabora i nodi figli attivi */ scegli un nodo t Q; poni Q:= Q \ {t}; h:= Vbranch[t]; val:= Valore[t];... E. Amaldi Fondamenti di R. O. Politecnico di Milano 20
FOR figlio:= TO 2 DO /*genera i figli del nodo t */ m:= m+; IF figlio = THEN Padre[m]:= t; ELSE Padre[m]:= -t; END-IF definisci il problema PL m associato al nodo m (vincoli di PL t più x h val se figlio =, o x h val se figlio = 2); risolvi il problema PL m e sia x * la soluzione ottima trovata; LB[m]:= c T x * ; IF (x * intera) AND (c T x * < z opt ) THEN x opt := x * ; z opt := c T x * ; /* aggiorna la soluzione ottima */ Q:= Q \ {j Q : LB[j] z opt }; END-IF IF LB[m] < zopt THEN scegli la variabile frazionari x * k di branching; Vbranch[m]:= k; Valore[m]:= x * k ; Q:= Q {m}; END-IF END-FOR END-WHILE END E. Amaldi Fondamenti di R. O. Politecnico di Milano 2
Branch & Bound applicabile anche a PLI misti: considerare solo per branching le variabili frazionarie con vincolo di interezza. In realtà metodo generale per problemi di ottimizzazione combinatoria # finito (ma elevatissimo) di sol. ammissibili Ad es. sequenziamento, commesso viaggiatore, E. Amaldi Fondamenti di R. O. Politecnico di Milano 22
Basta Tecnica per suddividere un insieme di sol. ammissibili in sottoinsieme mutualmente esclusivi ( branch ) Procedura per determinare un limite sul costo di qualsiasi soluzione ammissibile in un dato sottoinsieme ( bound ) NB: Branch-and-Bound (B & B) anche utilizzabile come metodo approssimato (imponendo un limite su tempo o nodi esplorati) E. Amaldi Fondamenti di R. O. Politecnico di Milano 23
5..2 B & B per problemi di ottimizzazione combinatoria Esempio: problema di sequenziamento ( NP-difficile ) n lavori (jobs) da eseguire su una macchina Tempi di lavorazioni e le date limite di consegna: n = 4 jobs 2 3 4 tempo di lavorazione 6 4 5 8 scadenza 8 4 2 6 in giorni fine giorno 8 E. Amaldi Fondamenti di R. O. Politecnico di Milano 24
Determinare una sequenza che minimizza il ritardo totale. Per sequenza 2 3 4, ritardo totale = 0 + 6 + 3 + 7 = 6 definiamo x ij = se job i èil j-esimo eseguito 0 altrimenti giorni Idea: suddividere l insieme di tutte le soluzioni ammissibili a seconda del job eseguito per ultimo. Chiaramente x 4 = o x 24 = o x 34 = o x 44 = E. Amaldi Fondamenti di R. O. Politecnico di Milano 25
x 4 = x 24 = x 34 = x 44 = D = ritardo totale D 5 2 D 9 se x 44 =, job 4 è completato alla fine del giorno 6 + 4 + 5 + 8 = 23 cioè con ritardo di 23 6 = 7 3 D x 3 = 5 D 4 x 23 = 4 D 7 6 D 8 x 33 = 7 D 0 x 2 = x 22 = Branching effettuato sul nodo con limite inferiore su D più piccolo. 8 D = 2 9 D = 6 nodo 4; nodo 7; nodo 8; E. Amaldi Fondamenti di R. O. Politecnico di Milano 26
Per nodo 7: job 4 per ultimo con ritardo di 7 job 3 per penultimo con ritardo di 6 + 4 + 5 2 = 3 giorni D 7 + 3 = 0 5 nodo 8 (sequenza 2 3 4) sol. ammissibile candidata con ritardo totale = 2. NB: nodi, 2, 5 e 6 possono essere chiusi! E. Amaldi Fondamenti di R. O. Politecnico di Milano 27
x 4 = x 24 = x 34 = x 44 = D 5 2 D 9 x 3 = 3 D x 43 = 4 D 7 job 3 ultimo + (6 + 4 + 8 8) = 2 job penultimo 0 D 2 x 23 = D 25 2 D 3 + (6 + 4 + 8 6) = 3 job 4 penultimo sequenza ottima:2 3 4 con D =2 E. Amaldi Fondamenti di R. O. Politecnico di Milano 28
Nel Branch and Bound per PLI come aggiornare in modo efficiente un tableau ottimo quando si aggiunge un vincolo? min c T x max y T b (P) Ax = b x 0 (D) y T A c T y m E. Amaldi Fondamenti di R. O. Politecnico di Milano 29
5.2 Algoritmo del simplesso duale Sia x x m x m+ x n -z x B[] x B[n] -z 0 b 0 0 I c T N N con c 0 y T = c T B B- sol. ammiss. di (D) Simplesso primale mantiene ammiss. (P) e cerca ammiss. (D) Simplesso duale mantiene ammiss. (D) e cerca ammiss. (P) E. Amaldi Fondamenti di R. O. Politecnico di Milano 30
Scelta indice s della variabile fuori base da fare entrare nella base e indice r di quella in base da fare uscire in modo da mantenere l ammissibilità di (D), ovvero c 0 Se a rs < 0, dividendo la r-esima riga per a rs si ottiene un a r0 0 (si fa un passo verso una soluzione di base ammissibile di (P)). Per ottenere c s = 0 bisogna inoltre moltiplicare la corrispondente r-esima riga x a r rs + j N a a rj rs x j = b r per c s e sottrarla alla riga 0 della funzione obiettivo E. Amaldi Fondamenti di R. O. Politecnico di Milano 3
Poiché c ~ j = c j di (D) è necessario che c s a a rj rs ~ c j per mantenere l ammissibilità 0 j e quindi si deve imporre dato che a rs < 0. c j c s a a rj rs = c s a rj a rs (*) Se a rj > 0 vale certamente (*) Se < 0 deve valere a rj c a j rj c a s rs j E. Amaldi Fondamenti di R. O. Politecnico di Milano 32
Se b 0 tableau ottimo (test di ottimalità) altrimenti scegliere x B[r] uscente dalla base con b r < 0 scegliere fra x j con a rj < 0 quella entrante x s t.c. c a s rs c j = min : arj < 0 arj + regola di Bland E. Amaldi Fondamenti di R. O. Politecnico di Milano 33
Esempio: min -x 4x 2 x +x 2 2 x +3x 2 3 x 2 2/3 x, x 2 0 Tralasciando gli ultimi due -z 0 - -4 vincoli si ha il tableau: x 3 2 x x 2 x 3 0 Con un operazione di pivot -z 8 3 0 del simplesso primale: x 2 2 x x 2 x 3 4 E. Amaldi Fondamenti di R. O. Politecnico di Milano 34
La soluzione di base ottima x * = [0, 2, 0] T corrisponde al punto A che viola entrambi i vincoli tralasciati. Aggiungendo le variabili di scarto x 4 ed x 5 e inserendo le due equazioni nel tableau corrente si ottiene: x x 2 x 3 x 4 x 5 -z 8 3 0 4 0 0 x 2 2 0 0 x 4 3 3 0 0 2/3 0 0 0 x 5 E. Amaldi Fondamenti di R. O. Politecnico di Milano 35
2 x 2 A z = -x 4x 2 2/3 B x + x 2 2 C x 2 2/3 x + 3x 2 3 2 x Rappresentazione grafica dell introduzione di nuovi vincoli E. Amaldi Fondamenti di R. O. Politecnico di Milano 36
Per mettere il tableau in forma canonica (eliminare la variabile di base x 2 dalle ultime due righe dalle espressioni di x 4 e x 5 ) basta la seguente operazione di pivot: x 2 x 3 x 4 x 5 -z 8 3 0 4 0 0 x 2 2 0 0 x 4 3 3 0 0 2/3 0 0 0 x 5 x E. Amaldi Fondamenti di R. O. Politecnico di Milano 37
-z x 3 4 x 4 0 x 2 2 0 0 x 4-3 -2 0-3 0-4/3-0 - 0 x 5 8 x 3 x 2 0 x 5 0 soluzione di base associata è ancora x * = [0, 2, 0] T NB: i valori negativi delle nuove variabili di base x 4 = -3 e x 5 = -4/3 esprimono il fatto che questa soluzione viola i vincoli appena aggiunti. E. Amaldi Fondamenti di R. O. Politecnico di Milano 38
Dato che i costi ridotti sono tutti non negativi, si può applicare l algoritmo del simplesso duale. Con l operazione di pivot su -3 si ottiene il tableau associato al punto x = [0,,, 0, -/3] T -- punto B -z x 3 0 x 4 4/3 x 5 0 x 2 /3 0 /3 0 x 3 2/3 0 -/3 0 -/3 -/3 0 0 -/3 x 5 4 x /3 x 2 0 E. Amaldi Fondamenti di R. O. Politecnico di Milano 39
Operazione di pivot su -/3 porta al tableau ottimo associato al vertice ottimo x * = [, 2/3, /3, 0, 0] T -- punto C -z x 3 0 x 4 x 5 x 2 2/3 0 0 0 x 3 /3 0 0-2 0 0-3 x /3 x 0 x 2 0 E. Amaldi Fondamenti di R. O. Politecnico di Milano 40