Programmazione Lineare INTERA II Elementi di scelta ci sono delle scelte che condizionano le prestazioni del metodo (non il risultato finale) 1. Selezione del prossimo nodo da valutare (strategia di esplorazione dell’albero) 2. Selezione della variabile su cui fare branching (priorita’ fra classi, o per valore del rilassamento continuo) 3. Selezione del tipo di rilassamento da utilizzarsi per il calcolo del bound 3) Scelta del bound Dato un problema P, si dice Rilassamento di P: 1. un problema R la cui funzione obiettivo fornisce una stima ottimistica di f(x) per ogni x ammissibile di P 2. un problema R la cui regione ammissibile include F(P) (rilassamento per eliminazione di vincoli) 3. 1) e 2) Un bound deve • Essere veloce da calcolare (polinomiale) • Fornire una stima del valore ottimo il più 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 Rilassamenti 1. Per eliminazione di vincoli. In particolare un rilassamento per eliminazione di vincoli si dice Rilassamento Combinatorio quando il problema rilassato è un problema di ottimizzazione combinatoria con una particolare struttura che lo rende risolvibile in modo efficiente. 2. Convessificazione (si rende convesso un insieme discreto) 3. Surrogato (sostituisce a un set di vincoli la loro combinazione lineare) 4. 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 penalità (quelle per cui il rilassamento ottenuto fornisce il bound + tight) che si risolve ottimizzando una funzione poliedrale (lineare a tratti in Rn). Questa tecnica trova vasta applicazione nell’ottimizzazione non lineare. 1) Rilassamento per eliminazione di vincoli un esempio di rilassamento combinatorio Formulazione del TSP asimmetrico su grafo orientato G=(N,A) FS = Forward Star: Sia xij {0,1} arco (i,j) A Min ijA cijxij : ijFS(i) xij =1 iN jiBS(i) xji =1 iN iS,jS xij 1 SN xij {0,1} {archi uscenti dal nodo i} BS = Backward Star: {archi entranti nel nodo i} Vincoli di grado Vincoli di connessione Cosa resta? Min ijA cijxij : ijFS(i) xij =1 iN jiBS(i) xji =1 iN xij {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 è un esempio di un rilassamento COMBINATORIO 3) Rilassamento Surrogato un esempio Formulazione del TSP su grafo non-orientato G=(V,E) Sia xij {0,1} arco (i,j) E, i<j Min ijE cijxij : ijS(i) xij =2 iV iQ,jQ xij 1 QV xij {0,1} Vincoli di grado Vincoli di connessione S(i) = stella del nodo i = insieme degli archi incidenti nel nodo Sostituisco ai vincoli di grado la loro combinazione lineare a coefficienti 1 Min ijE cijxij : Diventa un unico ijS(i) x = 2 n Vincolo iV di cardinalità E 2 ij iQ,jQ xij 1 QV xij {0,1} Questo nuovo problema è facile (1-albero di costo minimo) 1 4) Rilassamento Lagrangeano (i • E’ un modo diverso per trarre vantaggio dalla struttura presente in alcuni vincoli del modello (se fossero gli unici vincoli presenti, il problema sarebbe “trattabile”) • Anzichè 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 penalità y (detti moltiplicatori Lagrangeani) e il vettore delle scarto associate ai vincoli rimossi. Dato P: max {cx : Axb, Exd, xZn} per una data scelta del vettore y0, ottengo il rilassamento RL(y): max {cx –y(Ax-b) : Exd, xZn} Per ogni scelta di y0, RL(y) fornisce un upper bound di P. Infatti • la regione ammissibile di P è compresa in quella di R(y) e • le soluzioni F(P) hanno in RL(y) costo pari a (cx –y(Ax-b)) > cx essendo ammissibili (e dunque Ax-b<0) NB il rilassamento per eliminazione di vincoli è un particolare Lagrangeano che usa penalità nulle y=0. Rilassamento Lagrangeano (ii • Si pone il problema della miglior scelta dei moltiplicatori y • Per il problema di massimo, cerchiamo y tale RL(y) sia minimo (per essere il + possibile aderente al valore ottimo del problema di massimo originario). • Si osservi che fissato un x tale che (Exd, xZn), l’espressione cx –y(b-Ax) è lineare in y, quindi è un IPERPIANO nello spazio delle y. • Quindi RL(y) con y in Rm è una funzione descrivibile come il massimo al variare di y di un fascio di iperpiani (uno per ogni x) del tipo {cx –y(b-Ax) : Exd, xZn} RL(y) y Vedremo come ottimizzare una funzione Poliedrale a tratti quando parleremo di NonLinearOptimization (NLO) Combinare due rilassamenti È possibile sfruttare contemporaneamente le possibilità offerte da rilassamenti diversi. Consideriamo ancora il caso del TSP simmetrico e il modello gia introdotto, composto dagli n vincoli di grado sui nodi e dalla famiglia dei vincoli di connessione. Min ijE cijxij : ijS(i) xij =2 iV iQ,jQ xij 1 QV xij {0,1} Anziché eliminare i vincoli di grado sostituendoli con il loro surrogato o rilassarli in modo lagrangeano, faccio entrambe le operazioni, ottenendo un problema avente la regione ammissibile del rilassamento surrogato e la funzione obiettivo del rilassamento Lagrangeano Min ijE cijxij : ijS(i) xij =2 iV iQ,jQ xij 1 QV o in alternativa iQ, jQ xij ≤ |Q|-1 QV, 2 ≤|Q|≤|V|-1 xij {0,1} Il vincolo BLU è violato dai cicli composti di soli nodi in Q, (Q sottoinsieme stretto di V). E’ alternativo a imporre che nel taglio Q, V/Q ci sia almeno un arco della soluzione. Sono entrambe formulazioni corrette ma non sono equivalenti nel continuo Il vincolo BLU è più forte del Vincolo VERDE, nel rilassamento continuo. Si dimostra producendo una soluzione che viola VERDE ma non BLU. Min ijE cijxij : ijS(i) xij =2 iV iQ, jQ xij ≤ |Q|-1 QV, 2 ≤|Q|≤|V|-1 xij {0,1} In base ai vincoli di grado vale |Q| = ½ ∑iQ (∑ij S(i) (xij)) = poiché ogni nodo ha 2 archi incidenti = ∑iQ, jQ (xij) + ½ ∑iQ jQ (xij) Da cui |Q| - ∑iQ, jQ (xij) = ½ ∑iQ jQ (xij) Nell’esempio abbiamo 5 nodi in Q 3 archi interni a Q e 4 nel taglio (Q, V/Q) 5-3 = ½ 4 Da cui segue che |Q| - iQ, jQ xij = ½ iQ,jQ xij = |V/Q| - iQ, jQ xij Poichè iQ, jQ xij ≤ |Q|-1 |Q| - iQ, jQ xij ≥1 allora iQ, jQ xij ≤ |Q|-1 vale se e solo se vale iQ, jQ xij ≤ |V/Q| - 1 Quindi metà dei vincoli di connessione del modello sono ridondanti Elimino quelli per cui 1Q Min ijE cijxij : Moltiplicatore Lagrangeano li ijS(i) xij =2 1jS(1) x1j = 2 ijE xij iQ, jQ xij ≤ |Q|-1 =n iV, i≠1 (nodo 1) (surrogato) QV: 1Q, 2 ≤|Q|≤|V|-1 xij {0,1} Min ijE cijxij + iV li (2- ijS(i)xij ) = ijE xij(cij- li - lj) + 2iV li 1jS(1) x1j = 2 (nodo 1) ijE xij =n (surrogato) i,jQ xij ≤ |Q|-1 QV: 1Q, 2 ≤|Q|≤|V|-1 xij {0,1} Come è fatta la regione ammissibile del problema rilassato? E’ un sottografo connesso e aciclico per i nodi 2..n, con due archi incidenti nel nodo 1 Si chiama 1-tree (1-albero) Min ijE xij(cij- li - lj) + 2iV li Tale che le xij descrivono un 1-tree Calcolo del 1-tree di costo minimo Si considera il sottografo G2.n indotto dai nodi 2..n, e su di esso si calcola l’albero di copertura di costo minimo, MST2.n Il problema è facile, e si risolve all’ottimo con un’algoritmo greedy (vedi Kruskal) MST2.n contiene n-2 archi. Si completa l’albero MST2.n con i due archi di costo minimo incidenti sul nodo 1. Il risultato è un 1-tree di costo minimo sul grafo G Per ogni valore dei moltiplicatori li calcolare la soluzione ottima x(l) è un problema facile. Progettino A-TSP 2 persone) Risolvere il rilassamento lagrangeano secondo il procedimento descritto, implementando 1.un algoritmo del subgradiente per la determinazione del vettore ottimo dei moltiplicatori lambda, 2.l’algoritmo di Kruskal per il calcolo del 1-tree ad ogni passo. 3 persone) Progettare e implementare una euristica di «riparazione» che dato un 1-tree, ne modifica alcuni archi per ottenere un TSP. Chiamare l’euristica ad ogni passo del lagrangiano per riparare il 1-tree corrente, e mantenere traccia della migliore soluzione intera. Terminare l’algoritmo quando il gap tra rilassamento lagrangeano e soluzione intera è <5%. 2) 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) e l’inviluppo convesso di F(P) (Convex Hull, CH) duality gap 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 (pratica non sempre efficacie con la programmazione 0/1) Buona formulazione E’ necessaria per avere un valore del rilassamento continuo aderente a z* Come si può ottenere? • Scelta del modello • Preprocessing (a cura del solver) • Generazione di tagli • Scelta dello spazio delle variabili decisionali: un modello compatto è sempre preferibile? NO!! P è una formulazione migliore di P il bound fornito da P è più aderente a z* P è la formulazione IDEALE ( il bound è = z*) Formulazione IDEALE: inviluppo convesso delle soluzioni intere: Scelta del modello Stesso spazio delle decisioni, differenti politopi del rilassamento continuo Consideriamo un problema di zaino binario in R4, le cui soluzioni sono X={ (0,0,0,0), ((1,0,0,0), (0,1,0,0), (0,0,1,0), (0,0,0,1), (0,1,0,1), (0,0,1,1) } Consideriamo 3 diverse formulazioni valide, i.e., che contengono la Convex Hull di X (conv(X)) e nessun altro punto intero oltre a quelli in X: P1 = {x R4 : 0 ≤ xi ≤1 i, P2 = {x R4 : 0 ≤ xi ≤1 i, P3 = {x R4 : 0 ≤ xi ≤1 i, 83x1 + 61x2 + 49x3 + 20x4 ≤ 100 } 4x1 + 3x2 + 2x3 + 1x4 ≤ 4 } 4x1 + 3x2 + 2x3 + 1x4 ≤ 4, 1x1 + 1x2 + 1x3 ≤ 1, 1x1 + 1x4 ≤ 1 } Si nota che P3P2P1, e P3=conv(X) Infatti, il punto [1, 0, 0, ½] P1 ma P2 e P3. Il punto [½,1/3, ½, 0] P1 P2 ma P3 I bounds del rilassamento continuo dei 3 problemi Max{cx: x P} sono in relazione zL(P1) ≥ zL(P2) ≥ zL(P3 vettore c≥0, quindi zL(P3) offre la miglior stima di z* valore dell’ottimo intero Il problema di Lot Sizing non capacitato (dimensionamento del lotto produttivo, 1 prod.) Dato: un orizzonte temporale T diviso in nT periodi, 1…nT Per ogni periodo t: la domanda di prodotto, dt il costo fisso di produzione, ft il costo unitario di produzione, pt il costo unitario di stoccaggio, ht Il valore delle scorte iniziali Si determini il livello produttivo di ogni periodo per minimizzare i costi totali, soddisfacendo la domanda. Decisioni: Quanto produco in t: xt Z Produco o no in t: yt {0,1} Livello delle scorte a fine periodo t: st Z Struttura di Flusso con variabili 0/1 Ogni periodo t è associato a un nodo del grafo che riceve in ingresso le scorte del periodo precedente st-1 e la produzione corrente xt, mentre il flusso uscente si ripartisce fra domanda dt e scorte st. Il nodo è in equilibrio quindi la somma del flusso entrante è pari alla somma del flusso uscente. x1 s0 x2 s1 s2 t2 t1 d1 x3 d2 xT s3 t3 d3 tT dT Modello algebrico astratto1 Minimizzazione dei costi di produzione (fissi e variabili) e di inventory In modo tale che la domanda di prodotto sia sempre soddisfatta Min ∑tT (xt pt + yt ft + st ht ) tale che xt + st-1 = dt + st D yt ≥ xt D = ∑tT dt xt Z tT yt {0,1} t T st Z tT s0 = sT = 0 tT tT vincolo di produzione vincolo logico col bigM settaggio del «bigM» Modello algebrico astratto 1.0 (improved) Minimizzazione dei costi di produzione (fissi e variabili) e di inventory In modo tale che la domanda di prodotto sia sempre soddisfatta Min ∑tT (xt pt + yt ft + st ht ) tale che xt + st-1 = dt + st Dt yt ≥ xt Dt = ∑h≥t dh xt Z tT yt {0,1} t T st Z tT s0 = sT = 0 tT tT tT vincolo di produzione vincolo logico settaggio del «bigM» Modello algebrico astratto 2 Cambiamo punto di vista, aggiungiamo informazioni. Produco in un periodo per vendere in un periodo futuro variabile wit = quanto produco in i per vendere nel periodo t Come cambia il modello? Devo garantire che la domanda sia soddisfatta in ciascun periodo t in base a quanto è stato prodotto in passato per essere venduto in quel dato periodo la somma della produzione di tutti i periodi h non successivi a t che è finalizzata a soddisfare la domanda in t deve eguagliare dt. ∑h=1..t wht = dt Posso eliminare le variabili di inventory st (che ora compaiono solo in funzione obiettivo) calcolando il costo di stoccaggio unitario di wit pari a ∑k=i..t-1 hk poiché ciò che produco in i da vendere in t resta in stock dal periodo i al periodo t-1. Modello algebrico astratto 2 (diverse decisioni) Min ∑tT ( (∑h≥t wth ) pt + yt ft + (∑i≤t wit (∑i ≤ j ≤ t-1 hj ) ) ) tale che ∑i≤t wit = dt dt yi ≥ wit tT it T soddisfo la domanda vincolo logico, cambia «bigM» wit Z i, t T yt {0,1} t T Come si confrontano i due modelli in xt e in wth ? Consideriamo i politopi associati al rilassamento continuo delle due formulazioni. I due modelli sono definiti in spazi di dimensioni diverse, (x,y) per il primo modello e (x,w,y) per il secondo. Per operare il confronto, PROIETTIAMO le w nello spazio delle x. Proprietà della soluzione ottima continua (w*,y*) del modello II • Focalizziamoci sulla domanda di un dato periodo t, pari a dt. • La produzione può avvenire in qualunque periodo i≤t. • Ciascuna unità di prodotto destinata alla vendita in t, se prodotta in i, costa cit = pi + ∑j i..t-1 hj • Sia i+(t) il periodo in 1..t-1 in cui cit è minimo tutta la produzione di dt si concentra nel periodo i+. • Quindi nel punto di ottimo (w*, y*), per ogni periodo t si ha che wit =0 i≠i+ e wi+ t = dt • Per effetto del vincolo dt yi ≥ wit nella soluzione continua la variabile yi vale 1 per ogni i = i+(t) e 0 altrimenti La soluzione (w*,y*) del rilassamento continuo è intera Confronto fra i due politopi P1 = { x, s, y RT tale che t T st-1 + xt = dt + st xt ≤ ytD st, xt ≥ 0 0≤yt≤1 } Q2 = { wRTxT , x,y RT tale che t T ∑i=1..t wit = dt wit ≤ yi dt xt = ∑h=t..T wth wit, xt ≥ 0 0≤yt≤1 } Chiamo P2 la PROIEZIONE di Q2 nello spazio di P1 definita da P2 = { x RT : (x,w) Q2 } Vale P2P1: Dim. il punto v=(x,y: xt=dt yt=dt/Dt t) P1 (è un vertice) ma vP2. Infatti wit=0 se i≠t e wtt=dt, ma il vincolo wit≤ ytdt è violato i=t<T Uso del CutOff Il cutoff permette di utilizzare il branch and bound come una euristica (con errore garantito). Applica la chiusura per dominanza di tutti i nodi il valore del cui rilassamento è dominato dal cutoff. • Il cutoff può essere il valore z di una soluzione subottimale z<z* che non conosciamo ma che sappiamo esistere Oppure • Può essere parametrico rispetto alla migliore soluzione ammissibile (ottimo candidato zH) del tipo (in caso di massimo) zH+d, e aggiornato via via che zH viene modificato • Si garantisce che la soluzione restituita al termine della ricerca è a d dall’ottimo z* (si commette un errore assoluto <d) In Xpress si setta col comando MIPADDCUTOFF Default: max/min (MIPADDCUTOFF, 0.01*MIPRELCUTOFF*LP_value) Uso del Cutoff • Normalmente il BB termina quando non ci sono nodi aperti da esplorare oppure ho una soluzione ammissibile che vale quanto il bound associato al problema (il massimo dei bound dei nodi aperti dell’albero in un problema di massimo). • Se si imposta un certo valore k del cutoff, l’algoritmo termina non appena determina una soluzione ammissibile H che vale almeno quanto il cutoff (zH ≥ k, zH < z*). L’errore è dato dal gap rispetto al bound corrente. Errore stimato z* z1H z2H Cutoff k z3H Bound nodo n2 Bound Bound nodo n1 Globale nodo n3 Uso del Cutoff • Nel cutoff parametrico posso garantire a priori l’errore assoluto. • Si imposta un certo valore d per cui l’algoritmo termina non appena il bound globale si trova a distanza <d dall’ottimo candidato (zH < z*< zbound, e zbound- zH < d). • L’errore è dato da d. Errore pre-stimato d d d z* z1H z2H Bound n2 (nodo chiuso x dominanza da z2+d) z3H Bound Globale nodo n3 Bound nodo n1 nodo chiuso x dominanza 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 preprocessing • Rafforzamento basato sui costi ridotti • Introduzione di disuguaglianze valide Variable Fixing basato sul valore dei costi ridotti delle variabili nella soluzione ottima del rilassamento continuo (1) • Sia x la soluzione ottima continua a un generico nodo dell’albero. E’ possibile fissare (per le soluzioni associate a tutto il sottoalbero di cui il nodo corrente è radice) il valore di una variabile binaria che ha valore intero nel rilassamento continuo, in base al valore del suo costo ridotto, senza eliminare la soluzione ottima intera ? La decisione è presa in base a un ragionamento”what if”. Consideriamo un problema della forma max {cx: Ax=b, x0, xi {0,1} i} e il suo rilassamento continuo P: max {cx: Ax=b, xi 1, xi 0, i} Considerando come vincoli espliciti anche i vincoli di segno, associamo le variabili duali y ai vincoli Ax=b, le variabili z ai vincoli x e (e è il vettore di tutti 1) e le variabili w ai vincoli x0 , il duale di P è il problema D: min { yb+ze : yA+z–w = c, con z,w 0} Condizioni di ottimalità per i problemi di programmazione lineare a variabili limitate • Sappiamo che x* è ottima per P={min cx : Ax=b, x≥0} c^≥0 xi dove c^ indica il costo ridotto. Le variabili fuori base sono tutte al lower bound 0. Alla loro crescita corrisponde un incremento della funzione obiettivo. • Analogamente, se avessi P={max cx: Ax=b, x≥0} la condizione di ottimo diventa c^≤0: le variabili fuori base sono a 0, e a una loro crescita corrisponde una diminuzione della funzione obiettivo. Cosa accade quando le variabili sono limitate in un intervallo [l,u]? Le variabili fuori base possono essere al lower bound (xj=l) o all’upper bound (xj=u). le condizioni di ottimo si generalizzano come segue: • se il problema è di minimo, c^j ≥0 xj =l, c^j ≤0 xj =u • se il problema è di massimo, c^j ≤0 xj =l, c^j ≥0 xj =u • Siano x*, e (y*,z*,w*) una coppia di soluzioni ottime per la coppia Primale Duale. Indichiamo ci* = ci-y*Ai come il costo ridotto della variabile xi. il costo ridotto è pari alla differenza dei prezzi ombra (var duali) dei vincoli di lower e upper bound per la ammissibilità delle soluzioni (yA+z–w = c c* = c-y*A = z*-w*) • In base agli scarti complementari, z(1-x)=0 e wx=0 ed essendo il primale un problema di massimo, vale che – – – – – – se zi*>0 (quindi xi=1) wi*=0 se wi*>0 (quindi xi=0) zi*=0 se xi*<1 (quindi non è all’upper bund) ci* 0 se xi*>0 (quindi non è al lower bound) ci*0 se ci*>0 xi=1 se ci*<0 xi*=0 (per l’ottimalità di x*) (per l’ottimalità di x*) • Sia z+ il valore dell’incumbent (un lower bound all’ottimo) e sia zLP il valore del rilassamento continuo al nodo corrente. • Sia xi*=0 (intera) e sia ci* = - wi*<0 (quindi wi*>0) • Se zLP + ci* z+ allora xi puo’ essere FISSATA a 0. Logical preprocessing e probing Savelsbergh Journal On Computing 6 (4) 1994, pp. 445-454 • 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∊Rm , lj ≤ yj ≤ uj} Indichiamo in ciascun vincolo con B+e B- (e rispettivamente C+ e C-) gli indici delle variabili booleane (x) o continue (y) con coefficienti >0 e <0. In tal modo, prendendo i valori assoluti dei coefficienti, riformuliamo il vincolo iesimo aix + giy ≤ bi nella seguente forma: Σ(j∊B+)ajxj - Σ(j∊B-)ajxj + Σ(j∊C+)gjyj - Σ(j∊C-)gjyj ≤ bi • Scopo: analizzare ciascun vincolo i per verificare se tale vincolo: – – – – rende il problema inammissibile, è ridondante, può essere usato per restringere i bounds sulle variabili, può venir reso + aderente alla soluzione ottima intera modificandone i coefficienti, – forza il valore di una variabile x nella soluzione ottima ad un unico valore 0 o 1. Identificazione della non ammissibilità • Sia z il valore ottimo di Pi = min aix + giy : Aix + Giy ≤ bi x∊{0,1}n, y∊Rm , lj ≤ yj ≤ uj z è 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 Ai e Gi (bi) la matrice A e la matrice G (il vettore b) privati dalla riga (componente) i-esima) Se z > bi allora il vincolo i rende il problema inammissibile. • Ovviamente il problema Pi è difficile quanto quello originario, ma ogni lower bound su z che verifichi la condizione > bi , è sufficiente per giungere alla stessa conclusione, essendo zLB ≤ z, da cui zLB > bi z > bi Il lower bound + banale e + lasco è dato da: zLB = - Σ(j∊B-)aj + Σ(j∊C+)gjlj - Σ(j∊C-)gjuj in cui le variabili in B+ e C+ sono al lower bound (0 per xj, lj per yj) e quelle in B- e C- sono all’upper bound (1 per xj, uj per yj) Identificazione della ridondanza • Sia z il valore ottimo di Pi = max aix + giy : Aix + Giy ≤ bi x∊{0,1}n, y∊Rm , lj ≤ yj ≤ uj z è 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 ≤ bi allora il vincolo i è ridondante per il problema. • Ovviamente il problema Pi è difficile quanto quello originario, ma ogni upper bound su z che sia non maggiore di bi permette di giungere alla stessa conclusione: infatti, essendo z ≤ zUB, segue zUB ≤ bi z ≤ bi L’upper bound + banale e + lasco è dato da: zUB = Σ(j∊B+)aj + Σ(j∊C+)gjuj - Σ(j∊C-)gjlj in cui le variabili in B+ e C+ sono all’upper bound (1 per xj, uj per yj) le variabili in B- e C- sono al lower bound (0 per xj, lj per yj) Miglioramento dei bounds • Sia zk il valore ottimo di Pki = min aix + Σ(jk, j∊C+) gjyj - Σ(j∊C-) gjyj Aix + Giy ≤ bi x∊{0,1}n, y∊Rm , lj ≤ yj ≤ uj zk è il minimo valore che assume la parte sx del vincolo i senza il contributo della variabile yk, nella regione ammissibile data dal sistema dei vincoli originario privato del vincolo i. Ne segue che per soddisfare il vincolo i deve valere yk ≤ (bi-zk)/gik Quindi l’upper bound su yk puo’ essere migliorato se la nuova stima è inferiore alla precedente, cioè se (bi-zk)/gik≤uk Ovviamente il problema Pki è difficile quanto quello originario, ma ogni lower bound zkLB ≤ zk e’ sufficiente, poichè yk ≤ (bi- zkLB)/gik yk ≤ (bi-zk)/gik Il lower bound computazionalmente + banale e + lasco è dato da: zkLB = - Σ(j∊B-)aj + Σ(jk,j∊C+)gjlj - Σ(j∊C-)gjuj in cui le variabili in B- e C- sono all’upper bound, e le variabili in B+ e C+ sono al lower bound esercizio Fornire una procedura per il potenziale miglioramento del lower bound lj su di una variabile yj, secondo lo schema di ragionamento descritto per il rinforzamento dell’upper bound Tecniche base di probing (dedurre se il sistema di vincoli forza il valore di una variabile, caso xk=0) • • Consideriamo un vincolo i e una variabile binaria xk in B+ e sia zk il valore ottimo di Pki = min aix + giy : Aix + Giy ≤ bi, xk=1, x∊{0,1}n, y∊Rm , lj ≤ yj ≤ uj zk è 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 xk al valore 1. Se zk > bi allora il problema Pk e’ inammissibile, quindi xk=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 Pk è difficile quanto quello originario, ma ogni lower bound su zk è sufficiente, essendo zLB ≤ zk, da cui zLB > bi zk > bi Il lower bound computazionalmente + banale e + lasco è dato da: zLB = aik - Σ(j∊B-)aj + Σ(j∊C+)gjlj - Σ(j∊C-)gjuj in cui le variabili in B+ e C+ sono al lower bound, quelle in B- e C- sono all’upper bound, e xk=1. Tecniche base di probing (dedurre se il sistema di vincoli forza il valore di una variabile, caso xk=1) • • Consideriamo un vincolo i e una variabile binaria xk in B- e sia zk il valore ottimo di Pki = min aix + giy : Aix + Giy ≤ bi, xk=0, x∊{0,1}n, y∊Rm , lj ≤ yj ≤ uj zk 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 xk al valore 0. Se zk > bi allora il problema Pk e’ inammissibile, quindi xk=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 Pk e’ difficile quanto quello originario, ma ogni lower bound su zk e’ sufficiente, essendo zLB ≤ zk, da cui zLB > bi zk > bi Il lower bound + banale e + lasco e’ dato da: zLB = - Σ(jk,j∊B-)aj + Σ(j∊C+)gjlj - Σ(j∊C-)gjuj in cui le variabili in B+ e C+ sono al lower bound, e quelle in B- e C- sono all’upper bound, e xk=0. Un esempio numerico (L. Wolsey, Integer Programming cap. 7.6 pg103-105) Consideriamo il seguente problema di PL (rilassamento continuo di un modello di PLI) Il primo vincolo impone 5x1 15 +2x2 -8x3. In base ai bound si setta il valore delle variabili x2 e x3 nel modo + favorevole al vincolo (tale da max 15+2x2-8x3), da cui 5x1 15+2-8 = 9 da cui x1 9/5 che rende + stretto il bound precedente x1 3 max 2x1 + x2 - x3 tale che 5x1 - 2x2 + 8x3 15 8x1 + 3x2 - x3 9 x1 + x2 + x3 6 0 x1 3 0 x2 1 1 x3 Applicando lo stesso procedimento su x2 otteniamo 2x2 -15 + 5x1 + 8x3 e settiamo il valori delle variabili x1 x3 in modo da minimizzare la parte dx del vincolo, da cui 2x2 -15 + 5·0 + 8·1 = -7 ma questo non migliora il bound attuale di x2 che è x2 0. Lavorando su x3 abbiamo 8x3 15–5x1+2x2 15-0+2 da cui otteniamo il nuovo bound su x3, x3 17/8 Ora si puo’ utilizzare il secondo vincolo (di ) per rendere + stringenti i lower bounds di x1 e x2 e l’upper bund di x3 Lavoriamo su x1: 8x1 9 -3x2 +x3 9 -3 +1 = 7 da cui x1 7/8 che rafforza x10 Invece, non è possibile migliorare i bounds di x2 e x3. ..poiche’ i bounds sono cambiati (sono diventati + stringenti), è opportuno reiterare il procedimento Consideriamo nuovamente il primo vincolo mettendo in evidenza x3 Applicando i nuovi bounds su x2 e x1, si ottiene la disuguaglianza 8x3 15 + 2·1 - 5·7/8 = 101/8 da cui x3101/64 che rafforza il precedente x317/8. Continua….. Ora il problema si presenta così, gli stessi vincoli e funzione obiettivo ma i bounds sono + stretti. Consideriamo il terzo vincolo, x1 +x2 +x3 6 e poniamo le variabili al loro upper bound. Risulta 9/5 + 1 + 101/64 ~ 4.5 che è < 6, per cui ogni valore ammissibile delle variabili soddisfa il terzo vincolo il terzo vincolo è ridondante e si può eliminare!! max 2x1 + x2 - x3 tale che 5x1 - 2x2 + 8x3 15 8x1 + 3x2 - x3 9 x1 + x2 + x3 6 7/8 x1 9/5 0 x2 1 1 x3 101/64 Ora osserviamo i coefficienti di x2 Aumentandone il valore, ciascuno dei due vincoli si allontana dal proprio right hand side al crescere di x2 i vincoli non vengono violati. Poichè x2 ha coefficiente >0 in una funzione obiettivo di massimo, nella soluzione ottima x2 sara’ posto al suo upper bound x2=1 Quindi x2 puo’ essere fissata a tale valore eliminandola dal modello. x2 = 1 !! La variabile x3 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 x3 si resta nella regione ammissibile (ci si allontana dalla Frontiera) x3 va fissata al lower bound, x3=1. x3=1!! Il modello si riduce a Max {2x1 : 7/8 x1 9/5 } la cui soluzione ottima e’ x = 9/5, 1, 1. Disuguaglianze generate dall’inferenza logica sulle variabili binarie Consideriamo un sistema dato dalle seguenti 4 disuguaglianze, con x1..x4 {0,1} Consideriamo il primo vincolo, 7x1 +3x2 -4x3 -2x4 1 Se x1=1 necessariamente sia x3 che x4 devono essere 1 questo genera le implicazioni a) x1 x3 e b) x1 x4. Inoltre non è possibile che siano a 1 sia x1 che x2, da cui segue il vincolo c) x1+x2 1. Dal secondo vincolo segue che se x2=1 allora x1 deve essere 1, da cui l’implicazione d) x2 x1. Inoltre x2 e x3 non possono essere contemporaneamente a 1, da cui e) x2+x3 1. Dal terzo vincolo si deduce che o x4=1 oppure sia x2 che x3 sono 1, il che è imposto dal sistema: f) x2 + x4 1, g) x3 + x4 1. Dal quarto vincolo segue che h) x3 x1. 7x1 + 3x2 - 4x3 - 2x4 1 -2x1 + 7x2 + 3x3 + x4 6 Vediamo cosa dedurre dal sistema di vincoli (a-h) -2x2 3x3 6x4 -5 Il sistema x1+x2 1 e x2 x1 ha come unico 3x1 2x3 -1 valore ammissibile per x2 il valore 0. x =0!! 2 possiamo fissare x2=0. x =1!! x1 x2 x3 x4 {0,1} Segue che x2+x4 1 x4=1 4 Da x1 x3 e x3 x1 segue x3=x1. x3=x1!! Sostituendo queste condizioni nel sistema, tutti i vincoli sono ridondanti,(x11, x15, -3x11, x1-1) Quindi sono ammissibili solo le due soluzioni [1,0,1,1] e [0,0,0,1] • Continua…… • File 08.PLI1.b_2016.ppt