La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Programmazione Lineare INTERA II. Scelta del bound Rilassamento: 1.un problema la cui funzione obiettivo fornisce una stima ottimistica di f(x) per ogni.

Presentazioni simili


Presentazione sul tema: "Programmazione Lineare INTERA II. Scelta del bound Rilassamento: 1.un problema la cui funzione obiettivo fornisce una stima ottimistica di f(x) per ogni."— Transcript della presentazione:

1 Programmazione Lineare INTERA II

2 Scelta del bound Rilassamento: 1.un problema la cui funzione obiettivo fornisce una stima ottimistica di f(x) per ogni x ammissibile di P 2.un problema la cui regione ammissibile include F(P) (x eliminazione di vincoli) 3.1 e 2

3 Un bound deve Essere veloce da calcolare (polinomiale) Fornire una stima del valore ottimo il piu’ possibile vicina (tight) al valore esatto Permettere di ottenere con poco sforzo computazionale una soluzione euristica ammissibile appartenente al sottoproblema, a partire da quella non ammissibile del rilassamento

4 Rilassamenti Per eliminazione di vincoli. In particolare un rilassamento per eliminazione di vincoli si dice rilassamento Combinatorio quando il problema rilassato e’ un problema di ottimizzazione combinatoria con una particolare struttura che lo rende risolvibile in modo efficiente. Convessificazione (si rende convesso un insieme discreto) Surrogato (sostituisce a un set di vincoli la loro combinazione lineare) Lagrangeano (elimina un set di vincoli, e aggiunge alla funzione obiettivo una penalizzazione dipendente dalla violazione dei vincoli rimossi). Introduce un nuovo problema relativo alla scelta delle penalita’ (quelle per cui il rilassamento ottenuto fornisce il bound + tight) che si risolve ottimizzando una funzione poliedrale (lineare a tratti in R n ). Questa tecnica trova vasta applicazione nell’ottimizzazione non lineare.

5 Rilassamento per eliminazione di vincoli un esempio di rilassamento combinatorio Formulazione del TSP asimmetrico su orientatoG=(N,A) grafo orientato G=(N,A) Sia x ij  {0,1}  arco (i,j)  A Min  ij  A c ij x ij :  ij  FS(i) x ij =1  i  N  ji  BS(i) x ji =1  i  N  i  S,j  S x ij  1  S  N x ij  {0,1} Vincoli di grado Vincoli di connessione FS = Forward Star: {archi uscenti dal nodo i} BS = Backward Star: {archi entranti nel nodo i}

6 Cosa resta? Min  ij  A c ij x ij :  ij  FS(i) x ij =1  i  N  ji  BS(i) x ji =1  i  N x ij  {0,1}  arco (i,j)  A Problema di copertura per cicli di un grafo orientato FACILE!!! Infatti….. i vertici del politopo associato al rilassamento continuo hanno coordinate intere. (Matrice totalmente unimodulare) Questo e’ un esempio di un rilassamento COMBINATORIO

7 Rilassamento Surrogato un esempio non-orientato G=(V,E) Formulazione del TSP su grafo non-orientato G=(V,E) Sia x ij  {0,1}  arco (i,j)  E, i

8 Sostituisco ai vincoli di grado la loro combinazione lineare a coefficienti 1 Min  ij  E c ij x ij :  ij  S(i) x ij = 2  i  V  i  Q,j  Q x ij  1  Q  V x ij  {0,1} Vincolo di cardinalita’ n E 2 Questo nuovo problema e’ facile (1-albero di costo minimo)

9 Rilassamento Lagrangeano E’ un modo diverso per trarre vantaggio dalla struttura presente in alcuni vincoli del modello (se fossero gli unici, il problema sarebbe “trattabile”) Anziche’ eliminarli, vengono rimossi dal sistema dei vincoli e inseriti in funzione obiettivo in modo tale da penalizzare la valutazione delle soluzioni non ammissibili. Si somma alla funzione obiettivo originaria il prodotto scalare tra un vettore di penalita’ y (detti moltiplicatori Lagrangeani) e il vettore delle scarto associate ai vincoli rimossi. maxEsempio, sia P: max {cx : Ax  b, Ex  d, x  Z n } diventa, per una scelta del vettore y  0, RL(y): max {cx –y(b-Ax) : Ex  d, x  Z n } Per ogni scelta di y  0, RL(y) fornisce un upper bound di P Si puo’ vedere il rilassamento per eliminazione di vincoli come un particolare Lagrangeano che usa delle penalita’ nulle y=0.

10 Rilassamento Lagrangeano 2 Si pone il problema della miglior scelta dei moltiplicatori y Per il problema di massimo, cerchiamo y tale RL(y) sia minimo (il + possibile aderente al valore ottimo del problema di massimo originario). IPERPIANO NELLO SPAZIO DELLE y.Si osservi che fissato x tale che (Ex  d, x  Z n ), l’espressione cx –y(b-Ax) e’ lineare in y, quindi e’ un IPERPIANO NELLO SPAZIO DELLE y. il massimo al variare di y di un fascio di iperpiani del tipoQuindi RL(y) per y in R m e’ una funzione descrivibile come il massimo al variare di y di un fascio di iperpiani del tipo {cx –y(b-Ax) : Ex  d, x  Z n } Vedremo come ottimizzare una funzione Poliedrale a tratti quando parleremo di NonLinearOoptimization (NLO)

11 Rilassamento continuo (caso specifico di rilassamento per convessificazione) L’insieme discreto delle soluzioni intere F(P) diventa un politopo eliminazione dei vincoli di interezza  x  {0,1} diventa x  [0..1] E’ per default il rilassamento implementato dai solver Importante avere una buona formulazione del problema, tale per cui non ci sia troppa differenza tra il politopo che include F(P) (insieme delle soluzioni intere) Convex Hull, e l’inviluppo convesso di F(P) (Convex Hull, CH) che corrisponde alla formulazione IDEALE di P Facilmente risolvibile (Programmazione Lineare) Efficiente risoluzione di nodi figli/fratelli dell’albero attraverso la riottimizzazione Tecniche sofisticate di generazioni di tagli (gestione centralizzata del pool dei tagli) Permette di ottenere soluzioni approssimate a partire dalla soluzione frazionaria (non sempre efficace con la programmazione 0/1) duality gap

12 Buona formulazione E’ necessaria per avere un valore del rilassamento continuo aderente a z* Come si puo’ ottenere? Generazione di tagli Scelta dello spazio delle variabili decisionali: un modello compatto e’ sempre preferibile? NO!!

13 P P P e’ una formulazione migliore di P il bound fornito da P e’ piu’ aderente a z* P e’ la formulazione IDEALE ( il bound e’ = z*) Formulazione IDEALE: Formulazione IDEALE: inviluppo convesso delle soluzioni intere :

14 permettono di scegliere se applicarle o meno, e se applicarle solo al nodo radice o ai nodi di tutto l’albero Pre-processing: Ci sono svariate tecniche per rafforzare il modello in modo tale da ridurne le dimensioni, eliminando vincoli ridondanti o viariabili senza perdere le soluzioni ottime intere e migliorando il bound: i solver + sofisticati le implementano automaticamente, e permettono di scegliere se applicarle o meno, e se applicarle solo al nodo radice o ai nodi di tutto l’albero (trade off tra il rafforzamento del modello e il costo computazionale necessario) I metodi + diffusi: Logical preprocessingLogical preprocessing Rafforzamento basato sui costi ridottiRafforzamento basato sui costi ridotti Introduzione di disuguaglianze valideIntroduzione di disuguaglianze valide

15 Variable Fixing basato sul valore dei costi ridotti delle variabili nella soluzione ottima del rilassamento continuo Sia x la soluzione ottima continua a un generico nodo dell’albero. Ci si domanda se sia possibile fissare (per le soluzioni associate a tutto il sottoalbero di cui il nodo corrente e’ radice) il valore di una variabile binaria che ha valore intero nel rilassamento continuo, in base al valore del suo costo ridotto, in modo tale da non eliminare la soluzione ottima intera La decisione e’ presa in base a un ragionamento”what if”. Consideriamo un problema della forma max {cx: Ax=b, x  0, x i  {0,1}  i} P: max {cx: Ax=b, x i  0, x i  1  i} e il suo rilassamento continuo P: max {cx: Ax=b, x i  0, x i  1  i} Considerando come vincoli espliciti anche i vincoli di segno, associando le variabili duali y ai vincoli Ax=b, le variabili z ai vincoli x  e (e e’ il vettore di tutti 1) e le variabili w ai vincoli x  0, Dmin { yb+ze: yA+z–w=c, y,z,w  0} il duale e’ il problema D: min { yb+ze: yA+z–w=c, y,z,w  0} Siano x*, e y*,z*,w* una coppia di soluzioni ottime per la coppia Primale Duale e definiamo c i * = c i -y*A i = z i *-w i * come il costo ridotto della variabile x i.  il costo ridotto e’ la differenza dei prezzi ombra (var duali) dei vincoli di lower e upper bound In base agli scarti complementari (primale di massimo) –se z i *>0 (quindi x i =1)  w i *=0se w i *>0 (quindi x i =0)  z i *=0 –se x i * 0 (quindi non e’ al lower bound)  c i *  0 –se c i *>0  x i =1 se c i *<0  x i *=0 Sia z + il valore dell’incumbent (un lower bound all’ottimo) e sia z LP il valore del rilassamento continuo al nodo corrente. Sia x i *=0 (intera) e sia c i * = - w i * 0) Se z LP + c i *  z + allora x i puo’ essere FISSATA a 0. Per esercizio, ripetere per il caso x i *=1

16 Logical preprocessing e probing Savelsbergh Journal On Computing 6 (4) 1994, pp Si vuole ridurre la dimensione dei coefficienti nella matrice dei vincoli e dei bounds sulle variabili, mantenendo inalterato l’insieme delle soluzioni intere. Consideriamo il problema: Min {cx + hy: Ax+Gy ≤ b, x ∊ {0,1} n, y ∊ R m, l j ≤ y j ≤ u j } Indichiamo in ciascun vincolo con B + e B - (e rispettivamente C + e C - ) gli indici delle variabili booleane (intere o continue) con coefficienti >0 e <0. i valori assoluti dei coefficienti In tal modo, prendendo i valori assoluti dei coefficienti, riformuliamo il vincolo i esimo a i x + g i y ≤ b i nella seguente forma: - (j ∊B- - (j ∊C- Σ (j ∊B+) a j x j - Σ (j ∊B-) a j x j + Σ (j ∊C+) g j y j - Σ (j ∊C-) g j y j ≤ b i Scopo: analizzare ciascun vincolo i per verificare se tale vincolo: –rende il problema inammissibile, –e’ ridondante, –puo’ restringere i bounds sulle variabili, –puo’ venir reso + aderente alla soluzione ottima intera modificandone i coefficienti, –forza il valore di una variabile nella soluzione ottima ad un unico valore 0 o 1.

17 Identificazione della non ammissibilita’ Sia z il valore ottimo di P i = min a i x + g i y : A i x + G i y ≤ b i x ∊ {0,1} n, y ∊ R m, l j ≤ y j ≤ u j privato del vincolo i z e’ il minimo valore che assume la parte sx del vincolo i nella regione ammissibile data dal sistema dei vincoli originari privato del vincolo i. (indichiamo con A i e G i (b i ) la matrice A e la matrice G (il vettore b) privati dalla riga (componente) i-esima) Se z > b i allora il vincolo i rende il problema inammissibile. Ovviamente il problema P i e’ difficile quanto quello originario, ma ogni lower bound su z che verifichi la condizione > b i, e’ sufficiente, essendo z LB ≤ z, da cui z LB > b i  z > b i Il lower bound + banale e + lasco e’ dato da: z LB = - Σ(j ∊B - )a j + Σ(j ∊C + )g j l j - Σ(j ∊C - )g j u j in cui le variabili in B + e C + sono al lower bound, e quelle in B - e C - sono all’upper bound

18 Identificazione della ridondanza Sia z il valore ottimo di P i = max a i x + g i y : A i x + G i y ≤ b i x ∊ {0,1} n, y ∊ R m, l j ≤ y j ≤ u j z e’ il massimo valore che assume la parte sx del vincolo i nella regione ammissibile data dal sistema dei vincoli originario privato del vincolo i. Se z ≤ b i allora il vincolo i e’ ridondante per il problema. Ovviamente il problema P i e’ difficile quanto quello originario, ma ogni upper bound su z e’ sufficiente, essendo z ≤ z UB, da cui z UB ≤ b i  z ≤ b i L’upper bound + banale e + lasco e’ dato da: z UB = Σ(j ∊B + )a j + Σ(j ∊C + )g j u j - Σ(j ∊C - )g j l j in cui le variabili in B + e C + sono all’upper bound, e quelle in B - e C - sono al lower bound

19 Miglioramento dei bounds Sia z k il valore ottimo di P ki = min a i x + Σ(j  k, j ∊C + ) g j y j - Σ(j ∊C - ) g j y j A i x + G i y ≤ b i x ∊ {0,1} n, y ∊ R m, l j ≤ y j ≤ u j z k e’ il minimo valore che assume la parte sx del vincolo i senza il contributo della variabile y k, nella regione ammissibile data dal sistema dei vincoli originario privato del vincolo i. Ne segue che per soddisfare il vincolo i deve valere y k ≤ (b i -z k )/g i k Quindi l’upper bound su y k puo’ essere migliorato se la nuova stima e’ inferiore alla precedente, cioe’ se (b i -z k )/g i k ≤u k Ovviamente il problema P ki e’ difficile quanto quello originario, ma ogni lower bound su z k e’ sufficiente, essendo z k LB ≤ z k, da cui y k ≤ (b i - z k LB )/g i k  y k ≤ (b i -z k )/g i k Il lower bound + banale e + lasco e’ dato da: z k LB = - Σ(j ∊B - )a j + Σ(j  k,j ∊C + )g j l j - Σ(j ∊C - )g j u j in cui le variabili in B - e C - sono all’upper bound, e quelle in B + e C + sono al lower bound

20 esercizio Fornire una procedura per il potenziale miglioramento del lower bound l j su di una variabile y j, secondo lo schema di ragionamento descritto per il rinforzamento dell’upper bound

21 Tecniche base di probing (dedurre se il sistema di vincoli forza il valore di una variabile, caso x k =0) Consideriamo un vincolo i e una variabile binaria x k in B + e sia z k il valore ottimo di P ki = min a i x + g i y : A i x + G i y ≤ b i, x k =1, x ∊ {0,1} n, y ∊ R m, l j ≤ y j ≤ u j z k e’ il minimo valore che assume la parte sx del vincolo i nella regione ammissibile data dal sistema dei vincoli originario privato del vincolo i avendo forzato la variabile x k al valore 1. Se z k > b i allora il problema P k e’ inammissibile, quindi x k =0 in ogni soluzione ammissibile al problema originario e il suo valore puo’ essere fissato, riducendo cosi’ di 1 il numero delle variabili. Ovviamente il problema P k e’ difficile quanto quello originario, ma ogni lower bound su z k e’ sufficiente, essendo z LB ≤ z k, da cui z LB > b i  z k > b i Il lower bound + banale e + lasco e’ dato da: z LB = a i k - Σ(j ∊B - )a j + Σ(j ∊C + )g j l j - Σ(j ∊C - )g j u j in cui le variabili in B + e C + sono al lower bound, quelle in B - e C - sono all’upper bound, e x k =1.

22 Tecniche base di probing (dedurre se il sistema di vincoli forza il valore di una variabile, caso x k =1) Consideriamo un vincolo i e una variabile binaria x k in B - e sia z k il valore ottimo di P ki = min a i x + g i y : A i x + G i y ≤ b i, x k =0, x ∊ {0,1} n, y ∊ R m, l j ≤ y j ≤ u j z k e’ il minimo valore che assume la parte sx del vincolo i nella regione ammissibile data dal sistema dei vincoli originario privato del vincolo i avendo forzato la variabile x k al valore 0. Se z k > b i allora il problema P k e’ inammissibile, quindi x k =1 in ogni soluzione ammissibile al problema originario e il suo valore puo’ essere fissato, riducendo cosi’ di 1 il numero delle variabili. Ovviamente il problema P k e’ difficile quanto quello originario, ma ogni lower bound su z k e’ sufficiente, essendo z LB ≤ z k, da cui z LB > b i  z k > b i Il lower bound + banale e + lasco e’ dato da: z LB = - Σ(j  k,j ∊B - )a j + Σ(j ∊C + )g j l j - Σ(j ∊C - )g j u j in cui le variabili in B + e C + sono al lower bound, e quelle in B - e C - sono all’upper bound, e x k =0.

23 Un esempio numerico (L. Wolsey, Integer Programming cap. 7.6 pg ) Consideriamo il seguente problema di PL (rilassamento continuo di un modello di PLI) primo vincolo Il primo vincolo impone 5x 1  15 +2x 2 -8x 3. In base ai bound si setta il valore delle variabili x 2 e x 3 nel modo + favorevole al vincolo (tale da max 15+2x 2 -8x 3 ), da cui 5x 1  = 9 da cui x 1  9/5 che rende + stretto il bound precedente x 1  3 max2x 1 +x2x2 -x3x3 taleche 5x 1 -2x 2 +8x 3  15 8x 1 +3x 2 -x3x3  9 x1x1 +x2x2 +x3x3  6 0  x1x1  3 0  x2x2  1 1  x3x3 Applicando lo stesso procedimento su x 2 otteniamo 2x 2  x 1 + 8x 3 e settiamo il valori delle variabili in modo da minimizzare la parte dx del vincolo, da cui 2x 2  ·0 + 8 · 1 = -7 ma questo non migliora il bound attuale di x 2 che e’ x 2  0. Lavorando su x 3 abbiamo 8x 3  15–5x 1 +2x 2  da cui il nuovo bound su x 3, x 3  17/8 secondo vincolo Ora si puo’ utilizzare il secondo vincolo (di  ) per rendere + stringenti i lower bounds di x 1 e x 2 e l’upper bund di x 3 Lavoriamo su x 1 : 8x 1  9 -3x 2 +x 3  = 7 da cui x 1  7/8 che rafforza x 1  0 Invece, non e’ possibile migliorare i bounds di x 2 e x 3...poiche’ i bounds sono cambiati (sono diventati + stringenti), e’ opportuno reiterare il procedimento Il primo vincolo mettendo in evidenza x 3 e applicando i nuovi bounds su x 2 e x 1, produce 8x 3  ·1 - 5·7/8 = 101/8 da cui x 3  101/64 che rafforza il precedente x 3  17/8.

24 Continua….. Ora il problema si presenta cosi’, gli stessi vincoli e funzione obiettivo ma i bounds sono + stretti. Consideriamo il terzo vincolo, x 1 +x 2 +x 3  6 e poniamo le variabili al loro upper bound. ridondanteeliminare Risulta 9/ /64 ~ 4.5 che e’ < 6, per cui ogni valore ammissibile delle variabili soddisfa il terzo vincolo  il terzo vincolo e’ ridondante e si puo’ eliminare!! max2x 1 +x2x2 -x3x3 taleche 5x 1 -2x 2 +8x 3  15 8x 1 +3x 2 -x3x3  9 x1x1 +x2x2 +x3x3  6 7/8  x1x1  9/5 0  x2x2  1 1  x3x3  101/64 Ora osserviamo i coefficienti di x 2 Aumentandone il valore, ciascuno dei due vincoli si allontana dal proprio right hand side  al crescere di x 2 i vincoli non vengono violati. Poiche’ x 2 ha coefficiente >0 in una funzione obiettivo di massimo, nella soluzione ottima x 2 sara’ posto al suo upper bound x 2 =1 Quindi x 2 puo’ essere fissata a tale valore eliminandola dal modello. x 2 =1!! x 3 =1!! La variabile x 3 ha coefficiente <0 nella funzione obiettivo di massimo, Coefficiente >0 nella disuguaglianza di  e coefficiente <0 nella disuguaglianza di   in entrambi i casi diminuendo il valore di x 3 ci si avvicina alla (si resta nella) regione ammissibile  x 3 va fissata al lower bound x 3 =1. Il modello si riduce a Max {2x 1 : 7/8  x 1  9/5 } la cui soluzione ottima e’ 9/5, 1, 1.

25 Disuguaglianze generate dall’inferenza logica sulle variabili binarie Consideriamo un sistema dato dalle seguenti 4 disuguaglianze, con x 1..x 4  {0,1} Consideriamo il primo vincolo, 7x 1 +3x 2 -4x 3 -2x 4  1 Se x 1 =1 necessariamente sia x 3 che x 4 devono essere 1  questo genera le implicazioni x 1  x 3 e x 1  x 4. Inoltre non e’ possibile che siano a 1 sia x 1 che x 2, da cui segue il vincolo x 1 +x 2  1. Dal secondo vincolo segue che se x 2 =1 allora x 1 deve essere 1, da cui l’implicazione x 2  x 1. Inoltre x 2 e x 3 non possono essere contemporaneamente a 1, da cui x 2 +x 3  1. Dal terzo vincolo si deduce che o x 4 =1 oppure sia x 2 che x 3 sono 1, il che e’ imposto dal sistema: x 2 + x 4  1, x 3 + x 4  1. Dal quarto vincolo segue che x 3  x 1. Vediamo cosa dedurre dai vincoli suddetti Il sistema x 1 +x 2  1 e x 2  x 1 ha come unico valore ammissibile per x 2 il valore 0. fissare x 2 =0.  possiamo fissare x 2 =0. Segue che x 2 +x 4  1  x 4 =1 Da x 1  x 3 e x 3  x 1 segue x 3 =x 1. Sostituendo queste condizioni nel sistema, tutti i vincoli sono ridondanti, ammissibili[1,0,1,1] e [0,0,0,1] Quindi sono ammissibili solo le soluzioni [1,0,1,1] e [0,0,0,1] 7x 1 +3x 2 -4x 3 -2x 4  1 -2x 1 +7x 2 +3x 3 +x4x4  6 -2x 2 -3x 3 -6x 4  -5 3x 1 -2x 3  x 1 x 2 x 3 x 4  {0,1} x 2 =0!! x 4 =1!! x 3 =x 1 !!

26 Disuguaglianze valide per problemi di PLI Classi note di disuguaglianze –Knapsack cover –GUB cover –Flow cover –Cliques –Implication –Gomory –Mixed-Integer rounding

27 Definizione di Disuguaglianza Valida Dato un problema di PLI del tipo P = max cx: Ax  b, x  Z n, disuguaglianza valida il vincolo ax  a 0 e’ una disuguaglianza valida per P se e’ soddisfatto da ogni soluzione (intera) di P. Dato x* punto di ottimo del rilassamento continuo di P: P PL = max cx: Ax  b taglio una disuguaglianza valida si dice essere un taglio se tale disuguaglianza è violata da x* cioe’ si verifica che ax*>a 0

28 Tagli e bound taglio miglioraSe aggiungo un taglio alla formulazione di un problema di PLI, l’insieme delle soluzioni ammissibili rimane tale, ma il bound associato al rilassamento continuo delle nuova formulazione migliora avendo eliminato il precedente punto di ottimo del rilassamento continuo. x* c

29 Disuguaglianze valide generabili in modo automatico su base algebrica Disuguaglianze di Chvatal Tagli di Gomory sviluppo teorico anni 70  algoritmo cutting plane Branch and Cut Inapplicate fino agli anni 90 (integrazione nei metodi di B&B  Branch and Cut)

30 ….dice Chvatal dato il problema di programmazione lineare intera (P) min{cx : Ax  b, x  Z + n } intere non negative (A, b, c di componenti intere non negative) ogni disuguaglianza del tipo ax  a 0, tale che a 0 e ogni componente di a = [a 1,..,a n ] sono ottenute come parte intera inferiore della combinazione conica delle righe di A|b con coefficienti u  R + m allora la disuguaglianza ax  a 0 è anche una disuguaglianza valida per P.

31 esempio Interpretazione: determinare un accoppiamento di massima cardinalità in un grafo completo di ordine 3 (K3) Ogni variabile x rappresenta una coppia: Il primo vincolo dice che il nodo a puo’ stare in coppia o con b o con c ma non con entrambi (o la coppia (ab) o la coppia (ac) o nessuna delle due coppie). Esistono 3 soluzioni ottime intere equivalenti corrispondenti a selezionare un qualsiasi arco (coppia) (o x 1 o x 2 o x 3 uguale a 1). Quindi il valore dell’ottimo intero z I *=1 e x I *=[1,0,0] (ad esempio) PERO’ L’ottimo del rilassamento continuo del modello e’ z LP *=3/2 con x LP *=[½, ½, ½]. L’ “integrality gap” (differenza relativa tra bound e ottimo) associato a questa istanza e’ (3/2-1)/1, quindi dell’ordine del 50% Vediamo come sia possibile rafforzare il modello in modo da migliorare (diminuire) il valore del rilassamento continuo e restringere questo gap. max x 1 + x 2 + x 3 x 1 + x 2  1 x 2 + x 3  1 x 1 + x 3  1 x  0, x i  Z, i=1,…,3 x1 x2x3 a b c

32 Prendiamo come moltiplicatori dei tre vincoli i tre numeri reali, u 1 =u 2 =u 3 =1/2, e facciamo la combinazione conica dei vincoli, utilizzando come vettore dei coefficienti il vettore u = [½, ½, ½] NB ogni colore e’ associato a un vincolo in questo esempio La disuguaglianza di Chvátal cosi’ ottenuta è:  ½ + ½  x 1 +  ½ + ½  x 2 +  ½ + ½  x 3   ½ + ½ + ½  =1 cioè x 1 + x 2 + x 3  1. Aggiungendo tale disuguaglianza al problema, la soluzione ottima del rilassamento continuo e’ intera e l’integrality gap e’ annullato max x 1 + x 2 + x 3 x 1 + x 2  1 x 2 + x 3  1 x 1 + x 3  1 x  0, x i  Z, i=1,…,3 x1 x2x3 a b c u1u1u2u2u3u3u1u1u2u2u3u3

33 Un altro risultato teorico Chvatal dimostra che: numero finito convex hulle’ sufficiente un numero finito di tali disuguaglianze per definire la formulazione ideale di P, attraverso vincoli che descrivono la convex hull (inviluppo convesso) dei punti interi di P (se avessimo la formulazione ideale del problema si otterrebbe l’ottimo intero risolvendo un problema di PL!!) esponenzialeMa tali vincoli sono in numero esponenziale dato x * ottimo del rilassamento continuo corrente,  sempre un vettore di moltiplicatori u tale che la disuguaglianza  u T A  x ≤  u T b  e’ violata da x * QUINDI? generazione delle sole disuguaglianze Poiche’ lo scopo e’ trovare l’ottimo intero z* e non ottenere l’intera descrizione ideale di P, sono interessato alla generazione delle sole disuguaglianze che sono anche tagli. Vale a dire, quelle disuguaglianze valide che sono violate dalla soluzione ottima del rilassamento continuo corrente Questa osservazione e’ alla base del metodo noto come Cutting Plane 

34 Algoritmo Cutting Plane Procedure metodo_piani_di_taglio: begin ottimo:= false; repeat x * := RisolviPL(P) ! x * = ottimo del rilassamento continuo if x * intero then ottimo:= true else begin Genera_taglio (x *, a:a 0 ); Aggiungi_taglio(P, a:a 0 ) end until ottimo end. Esiste una procedura per la generazione automatica dei tagli di Chvatal, proposta da Gomory, che sfrutta la soluzione di base associata a x*

35 Tagli di Gomory Dato P= min {cx: Ax=b, x  0, x  Z n }, siano: B la base ottima del rilassamento continuo,  = [A B -1 A] diventa la matrice [ I,  N ] nel tableau associato alla base ottima, con  N =A B -1 A N e sia  =A B -1 b i valori della soluzione di base x B (x N =0). Se x*=[x B,x N ]=[ ,0] non e’ intero  allora  un indice h  B: x* h  e’ frazionario (   t e’ frazionario). Sia t l’indice di riga del vincolo su cui x h ha il pivot (x* h =  t ). Il vincolo nel tableau e’ x h +  j  N  tj x j =  t floor Passando ai troncamenti, genero un taglio per x* come segue, prendendo il floor dei coefficienti: x h +  j  N  tj  x j ≤  t  Infatti, trattandosi di una disuguaglianza di tipo  ed essendo x  0, vale sicuramente x h +  j  N  tj  x j ≤  t. Il secondo step, che sostituisce a  t il suo floor, e’ dovuto ai vincoli di interezza. Tale disuguaglianza e’ valida per le soluzioni intere di P, ma in x* e’ violata, perche’ vale x* h +  j  N  tj  x* j >  t  per cui il nuovo vincolo e’ violato da x * essendo per hp x* h frazionario e x* j =0 per i  N. Il nuovo vincolo viene aggiunto alla matrice corrente, in forma di uguaglianza, aggiungendo una apposita variabile di slack intera, secondo una procedura detta di ORLATURA della matrice che aggiunge una riga e una colonna ad ogni iterazione. Queste operazioni, computazionalmente poco onerose nei solver di PLI,sono implementate solo nelle prime iterazioni poiche’ il procedimento perde via via di efficacia (i tagli risultano progressivamente meno profondi).

36 Esempio numerico min -x 1 - x 2 -3x x 2 + x 3 = 30 6x 1 - 3x 2 + x 4 = 8 6x 1 - 3x 2 + x 4 = 8 x i  Z+ La soluzione ottima del problema continuo è x B = [62/21, 68/21], B = {1,2}, N={3,4} e A B -1 = 1/ Quindi il sistema originario, premoltiplicato per A B -1, diventa [ I,  N ] x =  x 1 + 1/21 x 3 + 4/21 x 4 = 62/21 x 2 + 2/21 x 3 + 1/21 x 4 = 68/21 x 2 + 2/21 x 3 + 1/21 x 4 = 68/21 Applicando la procedura ad entrambe le componenti frazionarie della soluzione, sia x 1 che x 2, produciamo rispettivamente per ciascuna riga, i due nuovi vincoli corrispondenti ai tagli di Gomory : x x x 4  2,  x 1  2 essendo  1/21  =  4/21  =  2/21  =0 x x x 4  3  x 2  3 essendo  62/21  =2,  68/21  =3 violati che sono rispettivamente violati dalla soluzione continua corrente x * =[62/21, 68/21, 0, 0]

37 esercizio Aggiungere i due tagli di gomory prodotti all’esempio precedente, e risolvere nuovamente il problema continuo con Xpress Riapplicare la procedura fino all’esaurimento (fino a quando non si possono generare ulteriori tagli)

38 Aspetti pratici Il solo algoritmo Cutting Plane utilizzando i tagli di Gomory non e’ efficace in pratica: si osserva una progressiva perdita di efficacia dei tagli via via generati. MA Branch and Cut diventa uno strumento molto potente se embedded in un Branch and Bound, unito alla generazione di tagli ad hoc per particolari strutture del problema Branch and Cut IDEA alla base della procedura di Branch and Cut: ad ogni nodo dell’albero di BB genero tagli fino a che sono efficaci. Se la soluzione e’ ancora frazionaria allora Branch. tagli ad hoc Vediamo alcuni tagli ad hoc per singoli problemi di ottimizzazione combinatoria, che sono absati sulla specifica struttura del singolo problema. Si osservi che il loro studio permette di applicare questi tagli a ogni formulazione di PLI in cui un sottoinsieme dei vincoli abbia tale struttura. Ad esempio molti modelli contengono almeno un vincolo del tipo ax  b. Se la funzione obiettivo e’ di massimo e tutti i coefficienti sono non negativi, allora posso applicare i tagli sviluppati per il problema di Knapsack intero

39 riferimento per lo studio: folder “materiale didattico integrativo in pdf” sul minisito del corso, file “cover-inequalities.pdf” Tagli di tipo “cover” riferimento per lo studio: folder “materiale didattico integrativo in pdf” sul minisito del corso, file “cover-inequalities.pdf” a variabili binarie Dato un problema P a variabili binarie e un vincolo del tipo ax  a 0 di coefficienti a i  0, k Si dice cover minimale del vincolo un gruppo di k variabili C k tali per cui: - Se sono tutte a valore 1 il vincolo e’ violato - Non appena una variabile assume valore 0, il vincolo e’ soddisfatto TH:  (j  C k) x j  k-1  (j  C k) x j  k-1 e’ una disuguaglianza valida per P

40 Esempio Max z = 9x 1 + 5x 2 + 6x 3 + 4x 4 : 6x 1 + 3x 2 + 5x 3 + 2x 4  10 x 3 + x 4  1 -x 1 + x 3  0 -x 2 + x 4  0 x*=[5/6,1,0,1] z L = 16,5 x j  {0,1} x*=[5/6,1,0,1] z L = 16,5 Sono cover derivate dal vincolo 1, C 3 ={1,2,4}, C 2 ={1,3} La cover C 3 e’ violata da x* mentre C 2 no. Quindi C 2 NON SERVE!!! Come generare solo cover violate? Cioe’ tali che  (j  C k) x * j > k-1 Risolvendo un nuovo problema di ottimizzazione!!! SEPARAZIONE Detto problema di SEPARAZIONE Infatti il nuovo vincolo separa x * dalle soluzioni intere di P Implementiamo il modello con Xpress e risolviamone il rilassamento continuo, ottenendo x*

41 model ModelName uses "mmxprs"; forward procedure stampa declarations x1, x2, x3, x4: mpvar Objective:linctr k : integer end-declarations 6*x1 + 3*x2 + 5*x3 + 2*x4 <= 10 x3 + x4 <=1 -x1 + x3 <= 0 -x2 + x4 <= 0 x1 <= 1 x2 <= 1 x3 <= 1 x4 <= 1 Objective := 9*x1 + 5*x2 + 6*x3 + 4*x4 k:=1 maximize(Objective) stampa x1 + x3 <= 1 maximize(Objective) k:=k+1 stampa x1 + x2 +x4 <=2 maximize(Objective) k:=k+1 stampa procedure stampa writeln("\niterazione ",k,"\n", getobjval, "\tx(1)=", getsol(x1), "\tx(2)=", getsol(x2), "\tx(3)=", getsol(x3), "\tx(4)=", getsol(x4)) end-procedure end-model OUTPUT iterazione x(1)= x(2)=1x(3)=0x(4)=1 iterazione x(1)= x(2)=1x(3)=0x(4)=1 iterazione x(1)=0.5x(2)=1x(3)=0.5x(4)=0.5 Aggiungere il vincolo relativo alla cover C2 non modifica la soluzione ottima continua x* poiche’ C2 non e’ violata da x* Al contrario, il vincolo relativo alla cover C1 e’ violato da x* la nuova soluzione ottima del rilassamento continuo cambia, e il bound associato migliora (da 16.5 scende a 14.5)

42 ottimizzazione associato + violata Si chiama separazione perche’ il vincolo prodotto costituisce un iperpiano di separazione tra x* e le soluzioni intere di P Separazione per le cover inequalities: Problema di ottimizzazione associato: come individuare tra le tante cover, quella + violata da x* (ottimo continuo corrente). Si chiama separazione perche’ il vincolo prodotto costituisce un iperpiano di separazione tra x* e le soluzioni intere di P Def. C e’ una cover derivata dal vincolo ax  a 0   i  C a i x i * > a 0 binaria Usiamo una variabile binaria z i per denotare l’appartenenza di un elemento i alla cover C. Vogliamo ∑ i a i z i > a 0 (una cover) ∑ i (1-x* i ) z i < 1 (il cui vincolo sia violato da x*) NB: x* è nota quindi la uso come dato del nuovo problema, inoltre vale (1-x* i )  0 poiche’ 0  x  1. Perche’???

43 Problema di Separazione per le cover:..infatti, la cover vieta di avere contemporaneamente a 1 tutti i suoi elementi, ed e’ espressa nella disuguaglianza  (j  C k ) x j  k-1 Per cui e’ violata nel punto x* se  (j  C k ) x j * > k-1 Voglio imporre come vincolo, nel problema di ricerca della cover “migliore”, che la cover sia violata da x*, cioe’ che per i valori correnti di x * valga  (j  C k) x * j > k-1 Opero delle trasformazioni di equivalenza a questa disuguaglianza: - Sottraggo k a entrambi i membri: - k +  (j  C k) x * j > k k = -1 - Porto –k dentro la sommatoria, distribuendo sui k addendi:  (j  C k) (x * j -1) > -1 - Moltiplico i membri per -1:  (j  C k) (1-x * j ) < 1 Giungendo cosi’ all’espressione finale del vincolo ∑ i (1-x* i ) z i < 1 che impone di selezionare, attraverso la scelta delle variabili z che si sostituiscono all’indicazione nella sommatoria (j  C k ), solo cover violate da x *. Poiche’ cerco la cover + violata, minimizzo l’espressione ∑ i (1-x* i ) z i

44 Cercare il vincolo di cover + violato (risolvere il problema di separazione), equivale a risolvere il problema di ottimizzazione: Min ∑ i (1-x* i )z i tale che ∑ i a i z i > a 0, z i  0,1  ristretto alle sole i con x* i >0, Si tratta di un problema di zaino binario di dimensioni molto ridotte. Nota che, poiche’ i coefficienti a i e a 0 sono interi e le z i binarie, il vincolo ∑ i a i z i > a 0 diventa ∑ i a i z i  a 0 +1 Ricordiamo che il problema di zaino binario, anche se NP-Hard, e’ risolvibile in modo esatto da algoritmi pseudopolinomiali (tramite la programmazione dinamica) gestibile quindi e’ computazionalmente gestibile risolvere la separazione con questa procedura risolvere la separazione con questa procedura. Se il valore ottimo della funzione obiettivo è  1 allora TUTTI i vincoli di cover indotti dal vincolo [a,a 0 ] sono soddisfatti da x*, altrimenti abbiamo generato la disuguaglianza di cover + violata, la aggiungiamo all’insieme dei vincoli e iteriamo la procedura risolvendo nuovamente il rilassamento continuo.

45 Lifting di un vincolo di cover (cenni) Liftare una disuguaglianza significa renderla + efficacie, aumentando lo spazio in cui tale vincolo e’ definito, in modo tale che sia sempre rispettato dalle soluzioni intere del problema ma escluda ulteriori soluzioni frazionarie. Un modo semplice di liftare una disuguaglianza originata da una cover C e’ quello di aggiungere nella sommatoria degli elementi della parte sx della disuguaglianza, ogni elemento il cui coefficiente “peso” sia maggiore di quello di tutti gli elementi della cover stessa, lasciando inalterato il rhs. Il principio su cui e’ basata questa operazione e’ il seguente: sia wmax il peso dell’elemento piu’ pesante nella cover C. Allora, qualsiasi elemento di peso > wmax, se sostituito a un qualunque elemento della cover C produce un insieme di elementi il cui peso supera certamenete il limite a 0 quindi il numero massimo di elementi contemporaneamente selezionabili all’interno del nuovo insieme resta al piu’ k-1 (il rhs). Non avremmo potuto affermare questa proprieta’ aggiungendo elementi di peso inferiore a wmax. Esempio: X={x ∊{0,1} 7 : 11x 1 +6x 2 +6x 3 +5x 4 +5x 5 +4x 6 +x 7  19 } L’insieme di indici C={3,4,5,6} e’ una cover, poiche’ =20>19. x 3 +x 4 +x 5 +x 6  3La disugaglianza x 3 +x 4 +x 5 +x 6  3 puo’ essere rafforzata aggiungendo sia x 1 che x 2. in quanto il loro coefficiente e’ maggiore o uguale a quello degli elementi in C. x 1 +x 2 +x 3 +x 4 +x 5 +x 6  3Il nuovo vincolo diventa x 1 +x 2 +x 3 +x 4 +x 5 +x 6  3 quindi una disuguaglianza in R 6 e si chiama “extended cover”

46 Lifting di un vincolo di cover (continua) Una disuguaglianza di cover C, e’ un vincolo aderente al politopo (una faccia del politopo) nello spazio R C (ristretto alle sole variabili della cover) se questa e’ minimale. E’ possibile applicare il processo di lifting in modo da ottenere un vincolo in R n tale che resti il + possibile aderente al politopo? Ordiniamo gli indici delle variabili  C secondo un criterio qualsiasi, e prendiamo la prima (es. x h ). Il nostra scopo e’ liftare la cover ineq  I  C x i  |C|-1 dallo spazio R C nello spazio R C  {h}. Dobbiamo rispondere alla seguente domanda: quale e’ il massimo valore che puo’ assumere il parametro  affinche’ il vincolo  x h +  I  C x i  |C|-1 sia una disuguaglianza valida per ogni soluzione intera del seguente problema di zaino binario definito nello spazio R C  {j} : a h x h +  I  C a i x i  Q? Se x h =0 il vincolo e’ soddisfatto per ogni soluzione intera essendo C una cover. Se x h =1, otteniamo il problema Max  tale che  + Max {  I  C x i tale che (a h +  I  C a i x i )  Q }  |C|-1 Da cui   |C|-1 - Max {  I  C x i tale che  I  C a i x i  Q-a h } Il problema e’ un problema di zaino binario ma semplicissimo, risolvibile per ispezione, data la particolare funzione obiettivo. Lo si risolve, si setta il valore di  e si itera scegliendo la variabile successiva.

47 Lifting di un vincolo di cover (continua) Esempio: sia P il problema di zaino binario P={max wx tale che x ∊{0,1} 7 e 11x 1 +6x 2 +6x 3 +5x 4 +5x 5 +4x 6 +x 7  19 } e sia C={x 3, x 4, x 5, x 6 } una cover per P   i  C x i  |C|-1  x 3 +x 4 +x 5 +x 6  3 e’ una disuguaglianza valida per P ed e’ “facet defining” per il problema di zaino in R C dato da P C ={max wx, tale che x ∊{0,1} 4 e 6x 3 +5x 4 +5x 5 +4x 6  19 } Cio’ significa che il vincolo e’ aderente alla frontiera di P C  R 4 per un sottospazio di dimensione 4-1=3, e quindi ne definisce una “faccetta”. Partiamo dalla variabile x 1. Vogliamo liftare il vincolo in R C  {1} secondo la procedura illustrata in precedenza. Occorre determinare  *= max  :  + x 3 +x 4 +x 5 +x 6  3 e’ soddisfatta da ogni soluzione intera del problema 6x 3 +5x 4 +5x 5 +4x 6  19-11=8, con x ∊{0,1} 4 Il valore della soluzione ottima di max { x 3 +x 4 +x 5 +x 6 tale che 6x 3 +5x 4 +5x 5 +4x 6  8, con x ∊{0,1} 4 } e’ 1 (si verifica facilmente per ispezione), quindi  *= max  : (  + 1)  3 vale 2, e otteniamo il vincolo di cover liftato 2x 1 +x 3 +x 4 +x 5 +x 6  3

48 Lifting di un vincolo di cover (continua) Ora liftiamo il vincolo 2x 1 +x 3 +x 4 +x 5 +x 6  3 rispetto alla variabile x 2. Ripetendo I passaggi precedenti, dobbiamo risolvere il problema di zaino max {2x 1 +x 3 +x 4 +x 5 +x 6 tale che 11x 1 +6x 3 +5x 4 +5x 5 +4x 6  19-6 = 13, x i  {0,1} } Ci sono diverse soluzioni intere con valore ottimo 2, quali: x 1 =1, x 3 =x 4 =x 5 =x 6 =0, x 1 =x 3 =x 6 =0, x 4 =x 5 =1, x 1 =x 4 =x 5 =0, x 3 =x 6 =1, Quindi  *= max  :  + 2  3   *= 1, il che produce la seguente cover inequality liftata in R C  {1,2} 2x 1 +x 2 +x 3 +x 4 +x 5 +x 6  3. Iteriamo il procedimento su x 7 per liftare il vincolo in R 7. Il problema max {2x 1 +x 2 +x 3 +x 4 +x 5 +x 6 t.c. 11x 1 +6x 2 +6x 3 +5x 4 +5x 5 +4x 6  19-1=18, x i  {0,1} } ha come valore ottimo 3, associato a diverse soluzioni intere quali x 2 =x 3 =x 4 =1, x 1 =x 5 =x 6 =0, ma anche x 4 =x 5 =x 6 =1, x 1 =x 2 =x 3 =0. Quindi  *= max  :  + 3  3   *= 0, per cui il coefficiente massimo che puo’ assumere x 7 nella cover liftata e’ 0 per cui il vincolo di cover mantiene la stessa formulazione anche in R 7. Il procedimento ha termine con la garanzia che il vincolo ottenuto e’ aderente a CH(X(P)), la combinazione convessa di tutte le soluzioni intere del problema di zaino binario di partenza. Ogni diverso ordinamento delle variabili  C da potenzialmente origine a un vincolo differente. Quindi il procedimento andrebbe iterato per ogni possibile ordinamento. Svolgere questa parte per esercizio. Riferimento bibliografico, L. wolsey, Integer Programming, cap 9.3, pg

49 esercizio Utilizzando Xpress, aggiungere la disuguaglianza di cover violata all’esempio numerico HL9.6 e rivalutare il valore del rilassamento continuo. Ci sono altre cover violate? Fornire una dimostrazione della risposta Liftare ciascuna delle cover ottenute, secondo tutti gli ordinamenti delle variabili non appartenenti alla cover Implementare in Xpress un procedimento iterativo che dato un tale ordinamento, implementa il lifting.

50 Esercizio settimanale Esercizio: Formula il problema di Air Crew Scheduling settimanale per il seguente input: Voli da a td tafreq (settimanale) 1AB8:009:00 1,2,3,4,5 2BC10:0011:00 1,2,3,4,5,6,7 3CD13:0014:00 1,2,3,4,5,6 4CA15:0016:00 1,2,3,4,5,6,7 5DA15:0016:00 1,2,3,4,5,7 6AB17:0018:00 1,2,3,4,5,6,7 7BC11:0012:00 1,2,3,4,5 Regole: 1h fra 2 voli consecutivi; non + di 6h di volo al giorno in un turno; A,C,D sono basi, turni di al + 2 giorni. Un altro esempio di taglio generabile automaticamente dai solver: i tagli di tipo clique

51 Sono (alcuni fra i) possibili turni (colonne del modello di Set Partitioning) le seguenti sequenze di voli, indicati come (T_numturno, giorno inizio) = giorno: volo1,volo2.. / giorno+1: volo1,volo2.. (T1,i) = i: v1,v7,v4 per i=1,2,3,4,5 (T2,i) = i: v6 / i+1: v2, v3, v5per i=1,2,3,4 (T3,i) = i: v1, v2, v3, v5per i=1,2,3,4,5 (T4,i) = i: v6 / i+1: v7,v4per i=7,1,2,3,4 (T5,i) = i: v1, v2, v4per i=1,2,3,4,5 (T6,i) = i: v6 / i+1: v7, v3, v5per i=7,1,2,3,4 (T7,i) = i: v5, v6 / i+1: v2, v3per i=7 (T8,i) = i: v6 / i+1: v2, v4per i=1,2,3,4,5,6,7 OSSERVAZIONE: Ci sono delle incompatibilita’ tra coppie di turni in giorni specifici, Esempio: non possono essere nella stessa soluzione (T1,2) e (T4,1) perche’ entrambi coprono i voli v7 e v4 del giorno 2.

52 Esercizio Posso migliorare il valore del rilassamento continuo delll’esempio? SI Aggiungendo tagli di CLIQUE violati che modellizzano le incompatibilita’ appena descritte nell’esempio. Disegnare G=(N,A) il grafo delle incompatibilita’ o grafo dei conflitti, che rappresenta l’impossibilita’ di scegliere nella stessa soluzione due turni che coprono lo stesso volo. Nel grafo G =(N,A) l’insieme dei nodi N coincide con l’insieme dei turni (variabili del modello di set partitioning) e gli archi collegano coppie di turni incompatibili. Formalmente,  un nodo i  N  turno,  un arco (i,j)  A  coppia di turni i, j che coprono lo stesso volo v). Utilizzo il grafo G per derivare una nuova disuguaglianza per ogni clique massimale Q (non + di un turno per ogni Q). Utilizzare il modellino in Mosel per il calcolo della clique massimale, sull’istanza rappresentata al grafo dei conflitti G. Sia C  N tale clique, allora posso aggiungere alla matrice dei vincoli del modello di set partitioning anche il vincolo (Σ j ∊C x j ≤ 1 ). Valutare quanto il nuovo vincolo modifichi il valore del rilassamento continuo del modello. Posso modificare il problema affinche’ la nuova disuguaglianza sia violata dal rilassamento continuo del problema corrente?

53 Conclusioni Se disponiamo di una formulazione ideale di un problema di PLI P I = min {cx: x  X} = min {cx: Ax  b, x  0, x intero} = min {cx : x  P PL  Z n } (cioe’ conosciamo l’espressione algebrica esplicita dei vincoli del politopo corrispondente all’inviluppo convesso delle soluzioni intere P*  P PL ), Potremmo risolvere P I con l’algoritmo del simplesso applicato a P*. Quando tale formulazione presenta un numero esponenziale di vincoli tale procedimento e’ polinomiale SE E SOLO SE problema di separazione E’ possibile risolvere in tempo polinomiale il problema di separazione: dato x* ottimo di min {cx: Ax  b, x  0} = min {min {cx : x  P PL } allora o x*  Z n e il problema P I e’ risolto all’ottimo oppure determino un taglio ax  a 0 tale che ax  a 0  x  X ma ax*>a 0 Ad esempio La formulazione per subtour breaking del problems di MST e’ una formulazione ideale, e i vincoli di subtour breaking sono separabili con complessita’ polinomiale, Ne consegue che il problema di MST appartiene alla classe P (problemi “facili”) In caso contrario, se solo alcune delle famiglie esponenziali di vincoli che defiscono P I sono facilmente separabili, nell’ambito di un processo di Branch & Bound (B&B) e’ opportuno generare tutti quei vincoli che tagliano la soluzione continua ottima attraverso la soluzione del problema di separazione, e solo in seguito ricorrere al branching, avendo cosi’ un bound di migliore qualita’ e riducendo i tempi del B&B Tale processo ibridizza il Branch and Bound con la generazione di tagli tipica dell’algoritmo di Cutting Plane, e prende il nome di Branch & Cut (B&C) Nel Branch and Cut alcuni tagli possono essere validi solo ocalmente per il nodo corrente, poiche’ sono condizionati dagli specifici branching associati al cammino dal nodo rdice al nodo corrente. Altri tagli, di carattere globale sono validi in ogni ndoo dell’albero. La gestione efficiente di questi tagli richiede algoritimi ad hoc per non appesantire il solver.


Scaricare ppt "Programmazione Lineare INTERA II. Scelta del bound Rilassamento: 1.un problema la cui funzione obiettivo fornisce una stima ottimistica di f(x) per ogni."

Presentazioni simili


Annunci Google