Simplesso
Transcript
Simplesso
Contenuto e scopo presentazione Contenuto • vengono presentati i teoremi base della PL che giustificano l’uso dell’algoritmo del simplesso • viene introdotto l’algoritmo del simplesso primale Programmazione Lineare Teorema fondamentale e simplesso primale 19/05/2005 11.35 Scopo • fornire un metodo che permette di risolvere praticamente problemi di PL Raffaele Pesenti Raffaele Pesenti Problema di programmazione lineare Problema di programmazione lineare Problema di programmazione lineare: problema di ottimizzazione P = (X, c; min) ⇔ min{ c(x) : x∈ X } oppure P = (X, c; max) ⇔ max{ c(x) : x∈ X } dove – la funzione obiettivo c(x):ℜ n → ℜ è lineare, i.e., soddisfa le relazioni c(0)=0 e c(αx+βy)= αc(x)+ βc(y) è quindi del tipo c(x) = cx dove c è un vettore in ℜ n – l’insieme delle soluzioni ammissibili X è definito da vincoli lineari del tipo h(x)=γ e/o h(x) ≤ γ e/o h(x) ≥ γ, dove h(x ):ℜ n → ℜ è una funzione lineare e γ uno scalare in ℜ Raffaele Pesenti 2 Formulazioni: i problemi di PL possono essere sempre formulati in modo equivalente – in formulazione canonica max cx Ax ≤ b – in formulazione standard max cx Ax = b (b ≥ 0) x≥ 0 Nel seguito vengono usate indifferentemente le due formulazioni a seconda di cosa risulti più conveniente 3 Raffaele Pesenti Terminologia m = numero delle righe di A n = dimensione di x e numero colonne di A c : vettore funzione obiettivo A : matrice tecnologica b : vettore termini noti (in forma standard sempre non negativo) x : variabili del problema PL X = { x : Ax ≤ b, x≥ 0 } : insieme delle soluzioni ammissibili G = { x : Ax ≤ b} : insieme delle soluzioni 4 Non banalità Non banalità Dato il problema max z = cx Ax = b x≥ 0 Dimostrazione (secondo punto) se non esistono x(1), x(2) ∈ X ={ x: Ax = b } e t.c. cx(2) > cx(1) la tesi è dimostrata; se esistono x(1), x(2) ∈ X e t.c. cx(2) > cx(1), allora esiste λ t.c. x(3) = λ x(1) + ( 1 - λ ) x(2) , λ ∈ ℜ affinché sia non banale devono verificarsi le seguenti condizioni • rank(A) < n, altrimenti X o è vuoto o contiene un’unica soluzione, si osservi dove x(3) ∈ X (X è uno spazio affine) e che cx(3) = cx(2) + 1 > cx(2) > cx(1), infatti basta scegliere un λ che verifichi la seguente relazione A però che rank = n I c x(2) + 1 = λ c x(1) + ( 1 - λ ) c x(2) si ottiene λ = -1 /(cx(2) - cx(1)), dove la divisione è ammissibile poiché cx(2) > cx(1) per ipotesi. Ponendo x(2)← x(3), x(1)← x(2) e iterando il procedimento si dimostra la tesi. • presenza vincoli x≥ 0, altrimenti, se X non è vuoto, il valore di z è una costante indipendente dalla soluzione scelta o è illimitato. Raffaele Pesenti 5 Raffaele Pesenti Teorema fondamentale della PL 6 Teorema fondamentale della PL Dimostrazione per il teorema di Motzkin il problema è equivalente a Dato il problema max Σi=1,..,k λ i cx(i) + Σj=1,..,h µ j cd(j), max z = cx Ax = b x≥ 0 Σi=1,..,m λ i = 1 λ ≥ 0, µ ≥ 0 dove x(i) sono i vertici di X e d(j) le direzioni estreme. Se esiste d(j) t.c. cd(j) > 0 il problema è illimitato per µj → ∞, altrimenti per qualunque d(j) si verifica cd(j) ≤ 0 e quindi non è limitativo considerare le sole soluzioni per cui µ = 0. Poiché se X non è vuoto e limitato, allora esiste un vertice di X che è soluzione ottima. max Σi=1,..,k λ i cx(i) ≤ Σi=1,..,k λ i maxi{ cx(i) } = maxi{ cx(i) }, detto i°= arg maxi{ cx(i) }, il vertice x(i°) è una soluzione ottima del problema. Raffaele Pesenti 7 Raffaele Pesenti 8 Teorema fondamentale della PL Soluzioni di base Dato il problema Commenti: dato un problema di PL che ammetta una soluzione ottima limitata, poiché ne esiste certamente una su un vertice, si può pensare di limitare la ricerca dell’ottimo all’insieme dei vertici. Si pone quindi il problema di come individuare (potenzialmente tutti) i vertici a partire da una rappresentazione esterna del poliedro delle soluzioni ammissibili. A tal fine si introduce il concetto di soluzione di base. Raffaele Pesenti 9 max z = cx Ax = b x≥ 0 si supponga A minimale, i.e., rank(A) = m. Poiché m<n, eventualmente riordinando le colonne, si può porre A=[B|N] dove – B è una matrice non singolare m × m detta matrice (colonne) di base (base). – N è matrice m×(n-m) matrice colonne fuori base La matrice B è composta da m colonne di A linearmente indipendenti che formano una base nello spazio vettoriale ad m dimensioni delle colonne di A. Raffaele Pesenti 10 Soluzioni di base Soluzioni di base Il sistema di equazioni lineari Ax = b si può riscrivere come x B N B = b ⇒ BxB + NxN = b ⇒ xB = B−1b − B−1NxN xN [ In corrispondenza di una scelta di B ed N si può partizionare anche il vettore delle x: x x = B xN ] Per ogni base B ogni soluzione del sistema Ax = b corrisponde a determinare il valore per m variabili xB avendo fissato arbitrariamente il valore per le restanti n-m variabili xN. Una scelta particolarmente importante è porre xN=0, da cui si ottiene la corrispondente soluzione di base m componenti n − m componenti – xB è detto vettore delle variabili in base (vettore di base) x B −1 b x = B = xN 0 – xN è detto vettore delle variabili fuori base Se B-1b ≥ 0 si ottiene una soluzione di base ammissibile (BFS) per il sistema Ax = b, x ≥ 0 Raffaele Pesenti 11 Raffaele Pesenti 12 Soluzioni di base Soluzioni di base Proprietà: A ogni base corrisponde una soluzione di base per definizione, mentre ad ogni soluzione di base (degenere) possono corrispondere più basi, anche un numero molto elevato. Dimostrazione: Sia (B-1b)k = 0 , i.e., sia nullo l’elemento kmo del vettore B-1b, allora la stessa soluzione di base è associata a una qualunque nuova base B(1) ottenuta dalla precedente facendo uscire il kmo vettore colonna e facendo entrare un qualunque altro vettore rmo in N, i.e., non in base, che avesse l’elemento kmo non nullo. Infatti l’operazione di pivoting corrispondente al cambio di base da B a B(1), essendo nullo l’elemento del vettore associato al termine noto nella riga del pivot, lascia invariato quest’ultimo vettore B(1)-1 b = B-1b Quindi gli elementi di x che sono o in base o fuori dalla base in entrambe le soluzioni rimangono invariati, l’elemento kmo vale 0 sia in base che fuori base, l’elemento rmo vale 0 fuori dalla base e 0 in base quando sostituisce quello kmo Raffaele Pesenti 13 Commenti: • poiché esiste una soluzione ottima su un vertice di P, ad ogni vertice corrisponde una BFS (prossimo teorema) ed ad ogni BFS corrisponde una o più basi allora si può limitare la ricerca della soluzione ottima alle BFS generando in sequenza una successione finita di basi (cercando di non ciclare in una serie di basi corrispondenti ad una BFS degenere e tenendo presente che la generazione esplicita di tutte le soluzioni ammissibili di base non è conveniente poiché il numero massimo di basi cresce in maniera esponenziale col crescere delle dimensioni del problema (numero di variabili e vincoli)) • poiché il numero di possibili basi di un problema di PL è comunque al massimo n!/m!(n-m)!, il problema ha una struttura discreta, i.e., ottimizza selezionando tra un numero finito di alternative, la PL appartiene alla classe dei problemi combinatori Raffaele Pesenti 14 Vertici e BFS Soluzioni di base Dato il problema Ax = b, x ≥ 0, una soluzione x è un vertice del poliedro P(A, b) se e solo se x è una BFS Commenti (cont.): • una BFS degenere si presenta in corrispondenza di un vertice sovradefinito, i.e., che soddisfa all'uguaglianza più di n vincoli, ad esempio nel caso dei vertici di piramidi. In questo ultimo caso le basi associate alla BFS degenere possono essere numerosissime. Dimostrazione: un punto di un poliedro è un vertice (punto estremo) se e solo se soddisfa all’uguaglianza n vincoli linearmente indipendenti, quindi basta dimostrare che ogni BFS soddisfa n vincoli linearmente indipendenti tra Ax= b, x ≥ 0. Per definizione ogni BFS soddisfa all’uguaglianza (n-m) vincoli x ≥ 0 e gli m vincoli di Ax = b. I vincoli stringenti sono linearmente indipendenti poiché la matrice dei loro coefficienti è certamente non singolare essendo della forma B N 0 I n−m Raffaele Pesenti 15 Raffaele Pesenti 16 Esempio Esempio Sia dato il problema max z = 2x1 + x2 x1 + x2 ≤ 5 -x1 + x2 ≤ 0 6x1 +2x2 ≤ 21 x1, x2 ≥ 0 x 2 5 4 z=0 1 p3 Ottimo X p4 0=p1 17 1 2 3 4 5 x1 Raffaele Pesenti Esempio 18 Esempio 1 1 1 0 0 A = − 1 1 0 1 0 6 2 0 0 1 lo si trasforma in forma standard introducendo le variabili di slack x3, x4 , x5 max z = 2x1 + x2 x1 + x2 + x3 =5 -x1 + x2 + x4 =0 6x1 +2x2 + x5 =21 x1, x2 , x3, x4 , x5 ≥ 0 se ci fossero stati dei vincoli di maggiore o uguale si sarebbero introdotte variabili di surplus con segno opposto, e.g., -3x1 + 2x2 ≥ 5 ⇔ -3x1 +2 x2 - x4 = 5 se fosse stato un problema di minimo bastava cambiare verso all’obiettivo, e.g., min z =x1 - x2 ⇔ max z’ =-x1 + x2 Raffaele Pesenti p2 2 problema non in forma standard espresso solo in termini delle variabili strutturali (cioè quelle che hanno un immediata corrispondenza fisica col sistema reale che viene modellato) Raffaele Pesenti z = 7.75 3 19 5 b = 0 21 Limite superiore delle possibili basi 5!/3!2! = 10, ma non tutte le basi corrispondono ad una soluzione ammissibile BFS, nell’esempio solo 6 basi sono ammissibili. Siccome i vertici sono 4, vi saranno BFS degeneri Raffaele Pesenti 20 Esempio ( 3) B x componenti di base delle BFS ( 2) B x Soluzione PL 11 4 x1 −1 = x2 = B( 3) b = 9 4 ⇒ p3 dove 1 2 x4 x1 5 2 = x2 = 5 2 ⇒ p2 x5 1 x ( 4) B B (3) 1 1 0 = − 1 1 1 6 2 0 x1 7 2 = x3 = 3 2 ⇒ p4 x4 7 2 x4 0 (soluzioni degeneri) x2 x1 ( 6) ( 5) x = x3 = xB = x3 = xB = x3 = 5 ⇒ p1 x5 21 x5 x5 Principio guida dell’algoritmo del simplesso primale A partire da una soluzione di base ammissibile l’algoritmo del simplesso cerca un’altra soluzione di base ammissibile non peggiore di quella corrente. L’algoritmo itera quindi la ricerca a partire dalla nuova soluzione di base. Ad ogni iterazione si cerca la nuova soluzione di base solo tra quelle che siano semplici da calcolare. Questo algebricamente significa cambiare base di un solo vettore, geometricamente limitarsi alla stessa soluzione (degenere) o a quelle adiacenti. (1) B Raffaele Pesenti 21 Raffaele Pesenti 22 Tableau iniziale Soluzione PL valore dell’obiettivo (soluzione corrente) prima della relativizzazione rispetto alla base B scelta coeff. dell’obiettivo nomi delle variabili in base L’insieme dei vincoli e della funzione obiettivo possono essere scritti come un sistema lineare rispetto al quale si può supporre di aver individuato una base B ammissibile: z 1 − c T z 0 1 − c TB − c TN 0 = ⇔ xB = N b 0 A x b 0 B x N La quasi (manca la prima colonna) matrice estesa di questo sistema, composto dalle righe dei vincoli e dalla riga della funzione obiettivo, è detta tableau − c TB − c TN 0 − c T 0 = N b B A b Raffaele Pesenti z x B1 ⋮ x B1 -cB1 a1 B1 ⋮ xBr ⋮ a rB 1 ⋮ xB m a mB 1 ⋯ xBr ⋯ -cB r ⋯ a1 B r ⋱ ⋮ ⋯ a rB r ⋮ ⋯ a mB r nomi delle variabili fuori base ⋯ xB m ⋯ -cB m ⋯ a1 B m ⋮ ⋯ a rB m ⋱ ⋮ ⋯ a mB m ⋯ xj ⋯ -cj ⋯ a1 j ⋮ ⋯ a rj ⋮ ⋯ a mj coeff. delle variabili in base B coeff. delle variabili fuori base N 23 Raffaele Pesenti ⋯ xk ⋯ -ck ⋯ a1 k ⋮ ⋯ a rk ⋮ ⋯ a mk ⋯ ⋯ 0 ⋯ b1 ⋮ ⋯ br ⋮ ⋯ bm valori delle variabili in base b (soluzione corrente) 24 Soluzione PL (esempio) Soluzione PL Esplicitando la funzione obiettivo: tableau iniziale a colonne riordinate (sia noto che le colonne 3, 4 e 1 formino una base iniziale ammissibile)* x1 x 2 x 3 x 4 x 5 z − 2 −1 0 0 0 0 5 0 x3 1 x4 − 1 1 1 1 0 0 0 1 0 x5 2 0 6 0 1 21 x 3 x 4 x1 x 5 x 2 z 0 0 − 2 0 −1 ⇒ 0 x3 x4 1 0 1 0 0 1 −1 0 1 1 x1 0 2 21 0 6 B 1 N 5 0 b * in realtà, come si vedrà in seguito, si è partiti da una base banalmente ammissibile formata dalle colonne 3, 4 e 5, ma che non è utile per l’esempio e si scopre che la base delle colonne 3, 4 e 1 è certamente più conveniente Raffaele Pesenti x z = cx = [cB cN ] B = cB xB + cN xN xN e sostituendo in (1) l’espressione delle variabili di base: x B = B −1b − B −1 Nx N si ottiene: costi ridotti ( ) z = c B B − 1b − c B B − 1 N − c N x N (3) Raffaele Pesenti 26 Soluzione PL Le relazioni (2) e (3) esprimono rispettivamente i vincoli e la funzione obiettivo in funzione delle variabili fuori base. Raccogliendo le m+1 equazioni di (2) e (3) in forma matriciale si ottiene: (4) Soluzione PL (esempio) matrice pivoting tableau 1 0 0 0 x3 x4 0 0 1 / 3 1 0 − 1 / 6 0 1 1 / 6 0 0 1 / 6 27 Raffaele Pesenti x2 x3 x4 0 − 2 0 1 1 −1 0 −1 0 1 0 1 x1 0 0 1 6 0 5 0 = 2 21 x 3 x 4 x1 = 0 c B B − 1 N − c N c B B − 1b B −1 N B −1b I x1 x 5 0 1 0 z B-1 il corrispondente tableau dopo le operazioni di pivoting risulta essere Raffaele Pesenti (2) Il valore dell’obiettivo corrispondente alla base B è quindi z(B) = cBB-1b 25 z c B B − 1b c B B − 1 N − c N xN x = −1 − B −1 N B B b (1) x5 x2 z x3 x4 0 0 0 1 3 −1 3 7 1 0 0 −1 6 2 3 3 2 0 1 0 16 4 3 7 2 x1 0 0 1 16 13 7 2 28 Tableau Soluzione PL Al fine di una scrittura più compatta sia S l’insieme degli indici delle variabili in base, le colonne di B, e R l’insieme degli indici delle variabili fuori base, delle colonne di N, e si ponga y00 −1 c B B b y10 y0 = −1 = B b ⋮ ym 0 x B1 ⋯ z = y00 - Σj∈R y0j xj x Br ⋯ x B1 ⋯ ⋯ 0 0 ⋮ ⋮ ⋱ ⋮ x Br 0 ⋯ 1 ⋮ ⋱ ⋮ ⋯ 0 ⋯ 1 ⋮ ⋮ x Bm 0 xBi = yi0 - Σj∈R yij xj x3 x4 0 1 0 x1 0 0 1 16 16 y5 Raffaele Pesenti ⋯ 0 j ⋯ ⋮ ⋯ y rj ⋯ y mj xk ⋯ y0k ⋯ y1k ⋯ ⋮ ⋯ y rk ⋯ y mk ⋮ y 00 y 10 ⋮ ⋯ yr0 ⋯ ym0 ⋮ ⋮ valori delle variabili in base (soluzione corrente) 30 Soluzione PL 7 Verifica ottimalità soluzione corrente • L’obiettivo: z = y00 - 2 3 3 2 y2 Σj∈R y0j xj, data la corrente BFS vale: z(B) = y00 , se esiste un coefficiente y0k<0, facendo diventare positiva la variabile fuori base xk, attualmente nulla, l’obiettivo aumenta di valore 4 3 7 2 13 7 2 y0 z = y00 - y0k xk > y00 = z(B) z = y00 - Σj∈R y0j xj = 7 - 1/3 x5 + 1/3 x2 e.g., ⋮ x y0 j ⋯ y1 j ⋯ x2 1 3 −1 3 1 0 0 −1 6 ⋯ ⋯ Raffaele Pesenti Soluzione PL (esempio) S={3,4,1} R={5,2} 0 0 coeff. delle variabili fuori base 29 z 0 0 0 ⋯ ⋯ coeff. delle variabili in base Raffaele Pesenti x5 x Bm ⋯ 0 1 z dove A.j e cj sono rispettivamente la colonna di N ed il coefficiente di c che moltiplicano la jma variabile fuori base. La componente ima della BFS e l’obiettivo si possono quindi riscrivere come: x3 x 4 x1 nomi delle variabili fuori base nomi delle variabili in base y0 j −1 c B A. −c y1j yj = B −1 j j = ∀j ∈R B A.j ⋮ ymj valore dell’obiettivo (soluzione corrente) coeff. dell’obiettivo allora, compatibilmente col rispetto dei vincoli, conviene aumentare il più possibile il valore della variabile xk x4 = y40 - Σj∈R y4j xj = 7/2 - 1/6 x5 - 4/3 x2 31 Raffaele Pesenti 32 Soluzione PL Soluzione PL (esempio) Rispetto ammissibilità • Il vincolo generico associato all’elemento in base imo: Data la soluzione corrente xBi = yi0 - Σj∈R yij xj ≥ 0 è rispettato dalla BFS corrente, poiché yi0 ≥ 0 e xj =0, per j∈R Tale vincolo rispetto alla variabile fuori base che si vuole incrementare diventa xBi = yi0 - yik xk ≥ 0 se il coefficiente yik è non positivo xk può incrementare a piacere senza violare la non negatività di xBi, se il coefficiente yik è positivo xk, per rispettare la non negatività di xBi, può incrementare solo fino al valore yi0 / yik, Il massimo valore che può assumere xk è quindi: z = 7 - 1/3 x5 + 1/3 x2 il coefficiente complessivo di x2 è positivo, quindi conviene rendere il più positivo possibile x2, compatibilmente coi vincoli x3 = 3/2 + 1/6 x5 - 2/3 x2 ≥ 0 ⇒ 3/2 - 2/3 x2 ≥ 0 x4 = 7/2 - 1/6 x5 - 4/3 x2 ≥ 0 ⇒ 7/2 - 4/3 x2 ≥ 0 x1 = 7/2 - 1/6 x5 - 1/3 x2 ≥ 0 ⇒ 7/2 - 1/3 x2 ≥ 0 valore massimo assumibile da x2 x2 ← min{9/4, 21/8, 21/2} = 9/4 xk ← min{yi0 / yik,: j∈R , yik >0} Raffaele Pesenti 33 Raffaele Pesenti Soluzione PL Soluzione PL (esempio) pivot x3 z 0 uscente x 3 1 x4 0 x1 0 x4 0 0 1 0 entrante x1 x5 x2 0 1 3 −1 3 0 −1 6 2 3 3 0 16 4 3 7 1 16 13 7 34 7 2 3 2 ⋅ 3 2 = 9 4 (= 2,25) 2 7 2 ⋅ 3 4 = 21 8 (= 2,62) 2 7 2 ⋅ 3 = 21 2 (= 10,5) Cambio base: sia yrk il valore per cui si ottiene il min{yi0 / yik,: j∈R , yik >0}, tale valore è detto pivot, se xk assume il massimo valore ammissibile allora i valori delle componenti di x, in particolare quelle in base che quindi dipendono da xk, variano nel modo seguente, xk ← yr0 / yrk xj ← 0, ∀ j∈ R -{k} xBi← yi0 - yik (yr0 / yrk), ∀ i∈ S quindi xBr← 0 Raffaele Pesenti 35 Raffaele Pesenti 36 Soluzione PL Soluzione PL (esempio) Cambio base (cont.): Per potere iterare il ragionamento conviene esprimere le soluzioni del sistema Ax=b, in funzione delle variabili che dopo l’aggiornamento hanno certamente valore nullo.Le equazioni associate alla componente ima della BFS e l’obiettivo si dovranno quindi riscrivere come: nuovo valore obiettivo z = y00 - y0k yr0 /yrk - Σj∈R - {k} (y0j - y0k yrj /yrk) xj + y0k/yrk xBr z xBi = yi0 - yjk yr0 /yrk - Σj∈R - {k} (yij - yik yrj /yrk) xj + yjk /yrk xBr, ∀i∈ S-{r} xk = yr0 /yrk - Σj∈R - {k} ( yrj /yrk) xj + 1/yrk xBr nuova base S ← S ∪ {k} - {r} R ← R ∪ {r} - {k} 37 1 4 0 11 4 Raffaele Pesenti 38 Soluzione PL Soluzione PL (esempio) Iterazione: • si ridefiniscono i vettori yj, y0 • si verifica l’ottimalità o meno della base, – se esistono dei coefficienti y0k<0 e yrk>0 si itera, ponendo attenzione al cycling se yrk=0 – se esistono dei coefficienti y0k<0 , ma non esiste alcun yrk>0, il problema è illimitato – se non esiste alcun coefficiente y0k<0 la soluzione correntemente in base è ottima Raffaele Pesenti x5 x 2 1 4 0 31 4 3 2 0 0 −1 4 1 9 4 −2 1 0 1 2 0 1 2 x1 − 1 2 0 1 Ovvero si è cambiata base: Raffaele Pesenti x2 x4 x3 x 4 x1 12 0 0 39 coeff. non negativi z base ottima x2 x4 x3 x 4 x1 12 0 0 x5 x 2 1 4 0 31 4 3 2 0 0 −1 4 1 9 4 −2 1 0 1 2 0 1 2 x1 − 1 2 0 1 Raffaele Pesenti valore ottimo obiettivo 1 4 0 11 4 40 Condizioni di ottimalità Condizioni di ottimalità Condizione di ottimalità Dimostrazione (ovvia conseguenza di quanto già visto) Dato un problema di PL in forma standard una soluzione di base x*, relativa alla base B, è ottima se si verificano le seguenti condizioni: 1) B-1b = y0 ≥ 0 (ammissibilità primale) 2) cj - cbB-1A.j ≤ 0 ⇒ y0j ≥ 0, ∀j (non migliorabilità) In realtà la condizione 2) può essere praticamente verificata per le sole variabili fuori base, infatti le variabili in base hanno per costruzione costi ridotti sempre nulli e quindi soddisfano certamente la condizione data. la 2) quindi diventa 2) cj - cbB-1N.j ≤ 0 ⇒ y0j ≥ 0, ∀j∈ R Raffaele Pesenti basta esprimere x* e il corrispondente valore z assunto dall’obiettivo in funzione delle variabili non in base associate alla base B: −1 z c B B b z* * −1 * = xB = B b − x x* 0 N (*) per definizione di soluzione di base x* N =0, inoltre se si verifica la prima condizione anche le componenti in base sono non negative quindi la soluzione è ammissibile. Siccome (*) è una rappresentazione interna, al variare di x* N , di tutte le possibili soluzioni ammissibili e poiché gli xN sono vincolati ad essere positivi allora, se si verifica la seconda condizione, non può esistere un’altra x∈ X a cui è associato un valore della funzione obiettivo maggiore NB Esistono soluzioni di base degeneri ottime per cui la seconda condizione non vale 41 Raffaele Pesenti Condizioni di ottimalità 42 Condizioni di ottimalità Commenti: • Il modo di procedere è una dimostrazione costruttiva che dimostra che un problema di PL ammette una soluzione su un punto estremo e non ammette soluzioni locali multiple, infatti la metodologia utilizzata individua un massimo locale qualunque e prova che: – non vi possono essere altri punti di massimo locale che assumano una soluzione migliore di quella individuata (quindi il massimo è anche globale), – il luogo dei punti a cui è associato un valore della funzione obiettivo identico forma un insieme connesso (e convesso) con il massimo individuato (quindi non esistono altri massimi locali) Raffaele Pesenti c B B −1 N − c N * B −1 N xN I Commenti (cont.): • Si può giungere alla stessa conclusione a partire dal teorema più generale che afferma che una funzione convessa continua definita su un insieme convesso chiuso e limitato presenta certamente un massimo globale su un punto estremo, per assurdo, sfruttando la linearità, si può poi dimostrare che esiste un unico luogo dei punti massimo locale. • Le dimostrazioni costruttive, dal punto di vista della ricerca operativa e dell’informatica, sono da preferire a quelle per assurdo in quanto danno indicazioni su come realizzare gli algoritmi di soluzione di un problema. 43 Raffaele Pesenti 44 Scelta variabile entrante Condizioni di illimitatezza Condizione di illimitatezza Dato un problema di PL in forma standard esso è illimitato superiormente se esiste una base B per cui si verificano le seguenti condizioni: Dato un problema di PL in forma standard ed una base B per cui si verificano le seguenti condizioni: 1) B-1b = y0 ≥ 0 (ammissibilità primale) (ammissibilità primale) 2) ∃ j∈ R : cj - cbB-1N.j > 0 ⇒ y0j < 0, 1) B-1b = y0 ≥ 0 (migliorabilità) 2) ∀ j∈ R : cj - cbB-1N.j > 0, ⇒ ∃ r yrj >0 (migliorabilità finita) e B-1N. j ≤ 0 ⇒ yij ≤ 0 ∀i ≠ 0 (incrementabiltà variabile fuori base) Dimostrazione può essere trovata (come si è visto) un’altra soluzione di base che non peggiora la soluzione una volta scelta la colonna k che soddisfa la seconda condizione. La prima condizione è sufficiente per affermare l’esistenza di una variabile di base ammissibile, la seconda afferma la possibilità di miglioramento della funzione obiettivo muovendosi lungo la “direzione” B-1N.j, la terza condizione indica che B-1N.j è effettivamente una direzione e che quindi il miglioramento può essere infinito. Raffaele Pesenti 45 Raffaele Pesenti 46 Scelta variabile entrante Scelta variabile entrante Possibili criteri di scelta della variabile entrante in base: Commenti: – steepest descent (gradiente): si sceglie la variabile che induce incremento marginale massimo (metodo più usato) k = arg maxj∈ R {cbB-1N.j - cj} • A parte problemi di cycling (vedi dopo) usare un criterio invece che un altro non pregiudica il raggiungimento della soluzione ottima, ma può al peggio aumentare il tempo necessario per la sua ricerca. • I problemi di PL di solito presentano molte colonne e molte righe e quindi può essere preferibile un criterio semplice ma veloce, i.e., che esegue pochi confronti. – massimo incremento: si sceglie la variabile che può incrementare maggiormente – massimo incremento funzione obiettivo: si sceglie la variabile che conduce al massimo miglioramento della funzione obiettivo • Si possono formulare problemi in cui i criteri deterministici sono inefficienti, i.e., generano tutte le basi prima di trovare l’ottima. – casuale: si sceglie a caso la variabile tra quelle che soddisfano la seconda condizione Raffaele Pesenti 47 Raffaele Pesenti 48 Cycling Regole anticycling Si può verificare il caso, piuttosto comune, che min{yi0 / yik,: j∈R , yik >0} = 0 ovvero che sia nullo il termine noto corrente della riga rma che pone il vincolo stringente all’incremento della variabile kma che si vuole fare entrare in base. In questa situazione l’operazione di pivoting cambia la base, ma lascia invariata la BFS corrispondente, si corre quindi il rischio di passare di base in base senza cambiare BFS, fino a tornare ad una base già visitata e quindi invischiarsi in un ciclo infinito (cycling). Raffaele Pesenti 49 Esistono due criteri fondamentali per evitare il cycling • scelta opportuna della colonna k e della colonna r: la regola di Bland suggerisce di prendere sempre i valori minimi di k e r tra quelli possibili • piccola variazione del termine noto: si perturba leggermente il termine noto in modo da non cambiare le basi, ma impedire che vi siano BFS degeneri (in realtà i vertici sovradefiniti vengono decomposti in tanti vertici vicini), si risolve il problema così perturbato e, se la variazione è sufficientemente piccola, la base ottima ottenuta coincide con la base ottima del problema originale. Raffaele Pesenti 50 Algoritmo del simplesso (primale) Regole anticycling 1. Inizializzazione. Determinare una soluzione di base ammissibile 2. Verifica dell’ottimalità. Commenti: • Una conseguenza della regola di Bland è che certamente esiste una base ottima che soddisfa le condizioni di ottimalità. • Anche se le BFS degeneri sono comuni il cycling si verifica raramente in pratica (a parte casi su reti che sono risolti in modi specifici), viceversa le regole anticycling si dimostrano statisticamente poco efficienti per le direzioni di discesa che inducono o per i calcoli che richiedono. • I software commerciali le applicano solo quando, dopo vari pivoting, si accorgono che il valore della funzione obiettivo non è migliorato oppure non le applicano del tutto e semplicemente si arrestano dopo un certo numero di passi dichiarandosi incapaci di trovare la soluzione ottima. Se y0j≥ 0, ∀ j∈ R, la soluzione corrente è ottima e l’algoritmo termina, altrimenti andare al passo 3. 3. Scelta della variabile entrante in base. Scegliere una variabile fuori base xk tale che y0k<0 (ad esempio, con il metodo del gradiente o una regola anticycling), ed andare al passo 4. 4. Scelta della variabile uscente dalla base. Scegliere una variabile xBr tale che yi0 / yir = min{yi0 / yik,: j∈ R , yik >0} Se yik≤ 0,∀ i, la soluzione del problema è illimitata, e l’algoritmo termina. altrimenti passo 5. 5. Pivoting. Risolvere i vincoli di uguaglianza esprimendo le nuove variabili in base xk e xBi,∀ i≠ k in funzione delle nuove variabili fuori base xBi e xj,∀ j∈ R-{k}. La nuova BFS si ottiene ponendo le nuove variabili fuori base a zero. Andare al passo 2. Raffaele Pesenti 51 Raffaele Pesenti 52 Algoritmo del simplesso (primale) Algoritmo del simplesso (primale) Commenti: • Nell’algoritmo del simplesso si distingue una fase I, che consiste nel passo di inizializzazione in cui viene individuata una prima BFS, e una fase II, che consiste nel determinare la BFS ottima a partire dalla prima BFS. La fase II è stata illustrata nei lucidi precedenti, la fase I viene illustrata in seguito. • La verifica se il problema è illimitato può anche venire fatta al passo 2 controllando tutte le colonne associate a costi ridotti positivi (e quindi coefficienti nel tableau negativi), se le colonne sono numerose questa verifica può essere onerosa. Raffaele Pesenti 53 Dimostrazione Sia z* il valore assunto all’ottimo dalla funzione obiettivo e si consideri l’iperpiano H*:{x ∈ ℜ n: cx = z*} luogo dei punti anche non in P in cui la funzione obiettivo assume valore z*. Per l’ottimalità di z* l’iperpiano H*:{x ∈ ℜ n: cx = z*} è di supporto infatti: H*∩ P =X*≠∅. P ⊆ H≤*:{x ∈ ℜ n: cx ≤ z*} e Consegue che X* è un poliedro, è infatti intersezione di disuguaglianze e uguaglianze, ed è anche una faccia di P. I vertici ottimi sono quindi vertici di una stessa faccia e potrebbero essere molto numerosi. Raffaele Pesenti 54 Fase I Algoritmo del simplesso (primale) Commenti (cont.): • Durante un operazione di pivoting si può non cambiare BFS (pivoting degenere) e quindi non si cambia vertice sul poliedro, oppure si cambia BFS passando da un vertice ad un altro. In questo caso i due vertici sono adiacenti, i.e., sono i due vertici di uno spigolo di P. Dimostrazione (cenno) l’insieme delle soluzioni X(xk ), che si ottengono incrementando da 0 al massimo valore consentito la variabile xk che entra in base, è incluso in P ed anche negli (n-1) iperpiani (facce, poiché si suppone il sistema minimale) corrispondenti alle condizioni che ogni suo elemento soddisfa all’uguaglianza (le stesse condizioni della BFS di partenza meno la condizione xk=0). Poiché l’insieme X(xk ) è quindi incluso nell’intersezione di (n-1) iperpiani indipendenti in uno spazio n dimensionale esso è una retta (o meglio in uno spazio affine di dimensione 1), poiché esso è anche intersezione in P di facce ne consegue che X(xk ) è uno spigolo. Raffaele Pesenti Commenti (cont.): • La presenza di costi nulli all’ottimo indica che possono essere presenti soluzioni ottime multiple. L’insieme X* luogo delle soluzioni ottime è un poliedro ed in particolare una faccia di P, eventualmente un vertice in caso di unico ottimo. 55 Individuazione della prima BFS: In alcuni casi una prima base ammissibile è immediata, si supponga infatti che il problema sia formulato come max z = cx Hx ≤ b x≥ 0 con b ≥ 0, allora la sua trasformazione in forma standard introduce delle variabili di slack s le cui corrispondenti colonne formano la prima base ammissibile max z = cx Hx + Is = b x ≥ 0, s ≥ 0 Riordinando le colone si ottiene A=[I|H], B=I e N=H, dove chiaramente rango{A}=m e B-1b ≥ 0. Non può farsi lo stesso ragionamento in presenza di disuguaglianze di verso opposto, infatti le variabili di surplus hanno coefficienti negativi, o in presenza di vincoli di uguaglianza. Raffaele Pesenti 56 Fase I Esempio (fase I) Se il problema è nella forma standard, senza particolare struttura, si introducono m variabili artificiali u e si formula il problema di fase I max z = cx min w = 1u ⇒ fase I Ax + Iu = b Ax = b x≥0 x ≥ 0, u ≥ 0 Per il problema di fase I è immediato determinare una base iniziale ammissibile come nel caso del lucido precedente. Il problema fase I ammette una soluzione ottima w* non negativa per costruzione, – se w* >0 allora il problema fase I non ha soluzioni ammissibili x, u t.c. u = 0 e quindi non esiste x t.c. Ax + I0 = b ⇒ Ax = b, da cui il sistema Ax = b non è compatibile e il problema di PL non ha soluzioni ammissibili – se w* =0 allora la componente della soluzione ottima x*, u* è t.c. u = 0 e quindi x* è t.c. Ax* + I0 = b ⇒ Ax* = b. Poichè x*ha al più m componenti non nulle essa può essere presa come prima BFS del problema originale. Raffaele Pesenti 57 Dato problema min z = 4 x1 + x2 4 x1 + 3 x 2 − x 3 x1 x 2 x1 + 2 x 2 =3 + u2 = 6 + x4 variabili artificiali 4 x1 +3 x2 ≥ 6 4x1 +3x2 − x3 =6 x1 +2 x2 ≤ 4 x1 +2x2 58 Esempio (fase I) x3 x4 u1 u 2 u1 u2 0 0 1 0 3 −1 0 0 0 1 1 0 1 0 0 3 1 6 x4 1 2 1 0 0 4 0 Tableau iniziale problema ausiliario prima e dopo le operazioni di pivoting che permettono di esprimere vincoli e obiettivo in termini delle variabili fuori base (data la struttura del problema il pivoting sui vincoli non è in realtà necessario) la BFS corrente non è ottima base iniziale * ATTENZIONE: questo tableau non è espresso rispetto alla base scelta e quindi non può ancora essere eseguito il test di ottimalità. 59 +x4 = 4 x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0 base Dato la presenza di una slack bastano solo due variabili artificiali Raffaele Pesenti =3 0 3 4 = 4 x1 ≥ 0 , x 2 ≥ 0 , x 3 ≥ 0 , x 4 ≥ 0 , u 1 ≥ 0 , u 2 ≥ 0 3x1 + x2 si devono annullare questi coefficienti* z 3 x1 + x 2 3 x1 + x2 = 3 Raffaele Pesenti Definizione e soluzione del problema ausiliario ⇒ maxz = −u1 − u2 + u1 max z = −4x1 − x2 x1 ≥ 0, x2 ≥ 0 Esempio (fase I) min z = u 1 + u 2 formulazione standard Raffaele Pesenti x1 x 2 z − 7 − 4 x3 x4 u1 u 2 1 0 0 0 − 9 u1 3 1 0 0 1 0 3 u2 x4 4 1 3 −1 2 0 0 1 0 0 1 0 6 4 60 Esempio (fase I) Esempio (fase I) si devono annullare questi coefficienti tableau finale x1 x 2 x3 x4 u1 u2 1 1 z 0 0 x1 x2 1 0 0 1 5 1 −3 5 0 3 5 −1 5 3 5 0 −4 5 3 5 6 5 x4 0 0 1 0 1 0 1 −1 x1 x 2 0 z 1 x1 x2 0 0 0 3 5 0 6 5 x4 0 0 1 1 x1 x 2 z x3 0 0 −1 5 x4 0 − 18 x1 1 0 1 5 0 3 5 0 1 − 3 5 0 6 5 x4 0 0 1 1 1 62 Analisi di sensibilità (esempio) Sia dato un problema di PL in forma generale max z = cx H(1) x ≤ d(1) H(2) x ≥ d(2) x≥ 0 dove gli eventuali vincoli di uguaglianza sono stati trasformati in un coppia di vincoli opposti di disuguaglianza. Per ricondursi alla forma standard si devono introdurre le variabili di slack s e di surplus u max z = cx H(1) x + I(1) s = d(1) H(2) x - I(2) u = d(2) x ≥ 0, s ≥ 0, u ≥ 0 63 Sia dato il problema max z= 2 x1 - 2 x2 + 3 x3 - x1 + x2 + x3 ≤ 4 2 x1 - x2 + x3 ≤ 2 x1 + x2 + 3 x3 ≤ 12 xi≥0 che diventa max z= 2 x1 - 2 x2 + 3 x3 - x1 + x2 + x3 + s4 =4 2 x1 - x2 + x3 + s5 =2 x1 + x2 + 3 x3 + s6 = 12 xi≥0, si≥0 Raffaele Pesenti 5 x2 Raffaele Pesenti Analisi di sensibilità (prima parte) Raffaele Pesenti 1 base 61 x4 1 0 0 1 5 1 − 3 5 con questi valori può essere inizializzato il tableau del problema originale Raffaele Pesenti x3 4 1 0 Tableau iniziale problema originario prima e dopo le operazioni di pivoting che permettono di esprimere vincoli e obiettivo in termini delle variabili in base (data la struttura del problema il pivoting sui vincoli non è in realtà necessario) 64 Analisi di sensibilità (prima parte) Analisi di sensibilità (esempio) quindi, una volta risolto all’ottimo il problema in forma standard, sono disponibili le seguenti informazioni: – il valore ottimo z* della funzione obiettivo, i.e., il valore del massimo profitto/minimo costo ottenibile – il valore ottimo x* delle variabili strutturali, i.e., le decisioni ottime da prendere – il valore ottimo s* delle variabili di slack, i.e., quanto si è al disotto dei limiti massimi consentiti (e.g., dalle risorse disponibili). Nei vincoli derivati da condizioni di uguaglianza questo valore è sempre 0 a causa della presenza dei vincoli di verso opposto – il valore ottimo u* delle variabili surplus, i.e., quanto si eccedono i limiti minimi consentiti (e.g., di soddisfacimento di certe necessità). Nei vincoli derivati da condizioni di uguaglianza questo valore è sempre 0 ma anche ... Raffaele Pesenti 65 x1 x2 x3 s4 s5 5/ 2 0 0 1/ 2 5/ 2 0 7 x2 − 3 / 2 1 0 0 1 1/ 2 −1/ 2 1/ 2 1/ 2 0 1 0 3 0 0 −2 1 2 z x3 1 / 2 s6 1 1/ 2 −1/ 2 B −1 = 1 / 2 1 / 2 − 2 −1 −1 colonne in base B-1b x 2* = 1 x 3* = 3 s 4* = 0 s 5* = 0 s 6* = 2 tableau ottimo Raffaele Pesenti Analisi di sensibilità (prima parte) 66 Analisi di sensibilità (esempio) – i costi ridotti di ogni variabile strutturale non in base, i.e., di quanto peggiora marginalmente z* se si forza la variabile ad assumere un valore unitario, o viceversa di quanto deve aumentare il coefficiente iniziale della variabile affinché si ottenga un costo ridotto positivo e quindi si consideri la possibilità di fare entrare detta variabile in base – i costi ridotti di ogni variabile di slack non in base (quindi associata a un vincolo stringente), i.e., di quanto peggiora marginalmente z* se si forza la variabile ad assumere un valore unitario, operazione che equivale a diminuire di un’unità il termine noto del vincolo. Cambiando il segno del costo ridotto si ottiene invece l’indicazione del miglioramento di z* per un aumento unitario del termine noto. – i costi ridotti delle variabili di surplus non in base (quindi associate a vincoli stringenti), i.e., di quanto peggiora marginalmente z* se si forza la variabile ad assumere un valore unitario, operazione che equivale ad aumentare di un’unità il termine noto del vincolo. Cambiando il segno del costo ridotto si ottiene invece l’indicazione del miglioramento di z* per una diminuzione unitaria del termine noto. Raffaele Pesenti 0 0 1 z* = 7 x 1* = 0 s6 67 c’1= -5/2 -π1=c’4= -1/2 -π2= c’5= 5/2 x1 x2 x3 s4 s5 5/ 2 0 0 1/ 2 5/ 2 0 7 x2 − 3 / 2 1 0 0 1 1/ 2 −1/ 2 1/ 2 1/ 2 0 1 0 3 0 0 −2 1 2 z x3 1 / 2 s6 1 Raffaele Pesenti −1 s6 68 Analisi di sensibilità (prima parte) Analisi di sensibilità (prima parte) Si ottiene inoltre la matrice B- 1, inversa della base ottima B, che permette di eseguire l’analisi di sensibilità delle soluzioni rispetto ai parametri. Una volta definiti − variazione marginale: una variazione dei parametri del problema che non conduca al cambiamento della base ottima nell’ipotesi che gli altri coefficienti rimangano invariati, − ei il versore imo della base canonica (vettore colonna o riga a seconda del contesto), − π = cBB-1 il vettore in cui ogni elemento πi è dato dal prodotto scalare del vettore dei coefficienti cB delle variabili in base e dalla colonna ima (B-1).i di B-1, si può osservare preliminarmente che .... una variazione parametri, che non influenzi l’ottimalità e l’ammissibilità dalla BFS correntemente ottima, deve essere tale che continuino ad essere valide le due condizioni Raffaele Pesenti 1) B-1b = y0 ≥ 0 (ammissibilità primale) 2) cj - cbB-1N.j ≤ 0 ⇒ cbB-1N.j - cj ≥ 0 , ∀ j∈ R ⇒ ⇒ (cB T B-1 N - cN T )T ≥ 0 indipendentemente da quale sia il parametro variato, e quindi ... 69 Raffaele Pesenti 70 Analisi di sensibilità (esempio) Analisi di sensibilità (prima parte) s6≠0 ⇒ π3= 0 – il prezzo ombra del vincolo imo è πi, infatti sia data una variazione marginale ∆bi del termine imo, poiché z* = cBB-1b, la conseguente variazione di z* risulta essere ∆z* = cBB-1(b + ∆ biei) - cBB-1 b = cBB-1∆ biei = = ∆ bicBB-1ei = ∆ bicB (B-1).i = πi∆ bi 1/ 2 −1/ 2 = c B B = [− 2 3 0] 1 / 2 1 / 2 − 2 −1 i vincoli non stringenti possono avere variazioni marginali senza variare il valore di z* il loro prezzo ombra è quindi sempre 0 x1 x2 x3 s4 s5 5/ 2 0 0 1/ 2 5/ 2 0 7 x2 − 3 / 2 1 0 0 1 1/ 2 −1/ 2 1/ 2 1/ 2 0 1 0 3 0 0 −2 1 2 x3 1 / 2 s6 1 71 0 0 = [1 / 2 5 / 2 0] 1 −1 z Raffaele Pesenti (non migliorabilità) Raffaele Pesenti −1 s6 72 Analisi di sensibilità (prima parte) Analisi di sensibilità (esempio) e.g., variazione marginale massima di b2 (cont.) – la variazione marginale massima ∆ bi, che può subire la componente ima bi del termine noto, deve essere tale che le variabili di base rimangano non negative. Poiché, dopo la variazione, la variabili in base valgono B-1(b + ∆ biei) allora ∆ bi deve soddisfare le condizioni 1/ 2 −1/ 2 B −1 = 1 / 2 1 / 2 − 2 −1 ∆ b2 (B-1).2 ≥ -B-1b B-1(b + ∆ biei) ≥ 0 ⇒ ∆ bi (B-1).i ≥ -B-1b ⇒ − 1 / 2 1 ∆b2 1 / 2 ≥ − 3 ⇔ −6 ≤ ∆b2 ≤ 2 − 1 2 max {(-B-1b)r /(B-1)ri: (B-1)ri>0} ≤ ∆ bi ≤ min {(-B-1b)r /(B-1)ri: (B-1)ri<0} Raffaele Pesenti 73 Analisi di sensibilità (prima parte) Raffaele Pesenti 74 Analisi di sensibilità (esempio) (cont.) – la variazione marginale massima ∆ cj, che può subire il coefficiente cj della funzione obiettivo corrispondente alla jma variabile fuori base, deve essere tale da non indurre un costo ridotto positivo per xj. Quindi ∆ cj deve soddisfare la condizione Variazioni marginali massime dei coefficienti della funzione obiettivo associati a variabili fuori base ∆c1≤ 5/2 i.e., ∆cj deve essere non superiore al costo ridotto ottimo. Le variazioni marginali associate a coefficienti di variabili non in base non inducono variazioni del valore ottimo z* della funzione obiettivo. Raffaele Pesenti ∆c5≤ 5/2 x2 x3 s4 s5 5/ 2 0 0 1/ 2 5/ 2 0 7 x2 − 3 / 2 1 0 0 1 1/ 2 −1/ 2 1/ 2 1/ 2 0 1 0 3 0 0 −2 1 2 x3 1 / 2 s6 1 75 ∆c4≤ 1/2 x1 z cBB-1N.j - (cj + ∆ cj )≥ 0 ⇒ ∆ cj ≤ cBB-1N.j - cj Raffaele Pesenti 0 0 1 −1 s6 76 Analisi di sensibilità (prima parte) Analisi di sensibilità (esempio) e.g., variazione marginale massima di c2 (cont.) – la variazione marginale massima ∆cBk, che può subire il coefficiente cBk della funzione obiettivo corrispondente alla kma variabile in base, deve essere tale da non indurre dei costi ridotti positivi delle variabili fuori base. Quindi ∆cBk deve soddisfare le seguenti condizioni: ∆c2 (B-1 )1. N ≥ - (cBB-1N - cN) ⇒ Raffaele Pesenti x2 x3 s4 s5 5/ 2 0 0 1/ 2 5/ 2 0 7 x2 − 3 / 2 1 0 0 1 1/ 2 −1/ 2 1/ 2 1/ 2 0 1 0 3 0 0 −2 1 2 x3 1 / 2 s6 1 Le variazioni marginali associate a coefficienti di variabili in base inducono variazioni del valore ottimo z* della funzione obiettivo: ∆ z* = ∆ cBi x* x1 z (cB + ∆ cBk eBk) B-1N.j - cj ≥ 0 ∀ j ∈ R ⇒ ⇒ ∆ cBk (B-1 )Bk. N.j ≥ cj - cBB-1N.j ∀ j ∈ R ⇒ ⇒ (∆ cBk (B-1 )Bk. N)T ≥ (cN - cBB-1N)T -1 ≤ ∆ c2 ≤ 5/3 −1 s6 x2 è il primo elemento della base B 77 Raffaele Pesenti 78 Analisi di sensibilità (prima parte) Analisi di sensibilità (esempio) e.g., variazione marginale massima di a21 (cont.) – la variazione marginale massima ∆arj, che può subire il coefficiente arj della riga rma, colonna jma (fuori base) della matrice dei coefficienti A, deve essere tale da non indurre dei costi ridotti positivi per la variabile fuori base corrispondente. Quindi ∆arj deve soddisfare la seguente condizione: ∆a21 cB (B-1 ).2 ≥ -(cBB-1N.1 - c1 ) ⇒ Le variazioni marginali associate a coefficienti di variabili non in base non inducono variazioni del valore ottimo z* della funzione obiettivo. Raffaele Pesenti x1 x2 x3 s4 s5 5/ 2 0 0 1/ 2 5/ 2 0 7 x2 − 3 / 2 1 0 0 1 1/ 2 −1/ 2 1/ 2 1/ 2 0 1 0 3 0 0 −2 1 2 z cB B-1 ( N.j + ∆ arj er) - cj ≥ 0 ⇒ ∆ arj cB (B-1 ).r ≥ cj - cBB-1N.j x3 1 / 2 s6 1 79 Raffaele Pesenti ∆ a21 ≥ - 1 −1 s6 80 Analisi di sensibilità (prima parte) Analisi di sensibilità (prima parte) (cont.) – la variazione ∆ arq, che può subire il coefficiente arq della riga rma, colonna qma (in base) della matrice dei coefficienti, influenza la matrice inversa B-1 in modo non lineare quindi è difficile stabilire esattamente che conseguenze induce. Si può però stimare la variazione di ∆ z*, infatti per il vincolo rmo la variazione ∆arq può essere vista, se il suo valore è sufficientemente piccolo, come analoga ad una variazione sul temine noto di valore -∆ arq xq* : (Ar. + ∆ arq eq)x* = br ⇒ Ar.x* = br - ∆ arq xq* a tale variazione del termine noto corrisponderebbe ∆ z* = - ∆ arq xq*πr Il valore di ∆z* è solo approssimato poiché la variazione sul termine noto dipende da xq* che però cambia in seguito ad essa. Raffaele Pesenti 81 Commenti: – L’analisi di sensibilità indica che per essere ragionevolmente certi sul valore delle soluzioni ottime di un problema di PL si devono conoscere con buona precisione i coefficienti associati a variabili in base all’ottimo (soprattutto se sono elevati i valori assunti) e ai vincoli stringenti (soprattutto se sono elevati i prezzi ombra corrispondenti) – Affrontando un problema reale è sempre opportuno cercare di fornire un’interpretazione fisico-economica di tutte le informazioni ottenibili dalla soluzione tramite simplesso Raffaele Pesenti Complessità della PL e altri metodi 82 Complessità della PL e altri metodi Cubo di Klee–Minty: max Il simplesso non è un algoritmo polinomiale, i.e., esistono istanze di problemi di PL, e.g., il cosiddetto cubo di Klee–Minty (1972), per cui il simplesso esegue un numero di operazioni (visita un numero di vertici) che cresce in modo esponenziale O(2n) con la dimensione del problema espressa in termini del numero variabili n e numero di vincoli m. In realtà nei problemi pratici si comporta molto bene, infatti è l’algoritmo più usato per risolvere problemi di PL reali. Raffaele Pesenti 83 Σi=1...n 2n-ixi 2Σi=1...(j-1)2n-ixi +2xj≤ 100 j-1 j=1,...,n xi ≥ 0 Esempio a 3 dimensioni: max 4x1 + 2x2 + x3 x1 ≤1 ≤ 100 4x1 + x2 8x1 + 4x2 + x3 ≤ 10000 x1, x2, x3 ≥ 0 Raffaele Pesenti 84 Complessità della PL e altri metodi Commenti: il cubo di Klee–Minty è una leggera distorsione del cubo 0 ≤ x1 ≤ 1 0 ≤ x2 ≤ 100 ::: Complessità della PL e altri metodi 10000 Algoritmi polinomiali per problemi di PL 9600 9992 9592 0 ≤ xn ≤ 100n-1 100 – (derivati dal) metodo del punto interno [Karmarkar, 1984], possono essere competitivi con il simplesso per istanze di dimensione molto grande. 1 96 Raffaele Pesenti 85 Raffaele Pesenti 86 Simplesso “revised” Simplesso “revised” Difficoltà pratica Difficoltà pratica Il metodo del simplesso deve calcolare la sequenza delle matrici inverse B(i)-1 delle basi B(i) che progressivamente sceglie. Per passare da B(i)-1 a B(i+1)-1 basta applicare Gauss-Jordan, questo algoritmo è molto semplice, ma ha il difetto di propagare gli errori di arrotondamento. Soluzione Per k iterazioni si procede da B(i)-1 a B(i+1)-1 alla (k+1)ma iterazione si reinverte, i.e., si calcola la matrice inversa B(k+1)-1 con metodi accurati a partire dalle colonne in base del tableau iniziale e non dalla matrice B(k)-1. In questo modo ogni k iterazioni si blocca la propagazione degli errori. Raffaele Pesenti – (derivati dal) metodo dell’elissoide [Khachyan, 1979], di grande interesse teorico perché dimostrano la risolvibilità polinomiale di problemi PL, ma di pessima efficienza pratica. la matrice dei coefficienti di un problema di PL è generalmente molto grande ma sparsa, B-1 continua ad essere molto grande ma non è più sparsa Soluzione – non si memorizza B-1 bensì la sequenza di matrici elementari che la generano sfruttando le loro proprietà strutturali – si osserva che di solito non serve B-1 bensì il prodotto di tale matrice per dei vettori, così, ad esempio π =cB B-1 non viene calcolato a partire dalla matrice inversa, bensì attraverso la soluzione di due sistemi lineari triangolari w U =cB πL=w dove LU=B con L triangolare inferiore e U triangolare superiore. Ad ogni iterazione deve essere aggiornata LU invece di B-1 87 Raffaele Pesenti 88 Esercizi Esercizi Es 4. Dato il seguente problema di programmazione lineare risolverlo e determinare soluzioni, costi ridotti, slack, prezzi ombra ottimi ed indicare le massime variazioni marginali ammissibili per termini noti e coefficienti della funzione obiettivo Es 1. Determinare come cambiano le condizioni del simplesso quando si deve affrontare un problema di minimo Es 2. Dare una interpretazione fisico-economica a tutti i risultati dell’analisi di sensibilità per tutti i modelli template visti a lezione Es 3. Determinare come cambiano le proprietà della BFS ottima corrente e la struttura del problema se viene introdotta una variazione maggiore di quella massima marginale Raffaele Pesenti max 30 x1 + 40 x 2 + 35 x 3 89 3 x1 + 4 x2 + 2 x 3 ≤ 90 2 x1 x1 + x2 + 3 x2 + 2 x 3 ≤ 90 + 2 x 3 ≤ 90 x1 , x2 , x3 , ≥0 Raffaele Pesenti 90 Esercizi Esercizi Es 5. Dato il seguente problema di programmazione lineare stabilire quale tra le basi indicate è ottima, determinare soluzioni, costi ridotti, slack, prezzi ombra corrispondenti ed indicare le massime variazioni marginali ammissibili per termini noti e coefficienti della funzione obiettivo Es 6. Dato il seguente problema di programmazione lineare stabilire quale tra le basi indicate è ottima, determinare soluzioni, costi ridotti, slack, prezzi ombra corrispondenti ed indicare le massime variazioni marginali ammissibili per termini noti e coefficienti della funzione obiettivo max 2 x1 − x 2 + x 3 3 x1 + x 2 + x 3 ≤ 60 x1 − x 2 + 2 x 3 ≤ 10 basi {2,3,5} {1,2,4} {2,3,6} Raffaele Pesenti x1 + x 2 x1 , x 2 , max 4 x1 + 5 x 2 + 6 x 3 2 x1 + 3 x 2 + 4 x 3 ≤ 60 x1 + x 2 2 x1 + 3 x 2 − x 3 ≤ 20 x3 , ≥ 0 basi {2,3,5} {1,3,5} {2,4,6} 91 Raffaele Pesenti x1 , x2 , + x 3 ≤ 40 ≤ 50 x3 , ≥0 92 Esercizi Soluzioni ad alcune domande Es 7. Dato il seguente problema di programmazione lineare risolverlo scegliendo la variabile entrante in base secondo la regola dello steepest descendent. Verificare che al sesto passo si entra in una situazione di cycling ed applicare quindi la regola di Bland. Es 4. Es 5. Es 6. la base {3,5,6} è ottima la base {1,2,4} è ottima la base {1,3,5} è ottima max 0.75 x1-150x2+ 0.02x3- 6x4 0.25 x1 - 60x2+ 0.04x3+ 6x4 ≤0 0.5 x1 - 90x2+ 0.02x3+ 3x4 ≤0 x3 ≤1 x1 x2 x3 x4 ≥0 esempio tratto da H.J. Greenberg. Mathematical Programming Glossary. World Wide Web, http://www.cudenver.edu/~hgreenbe/glossary/glossary.html, 1996-2000. Raffaele Pesenti 93 Raffaele Pesenti 94