4.5 Metodo del simplesso min z = c T x s.v. Ax = b x 0 PL in forma standard Esamina una sequenza di soluzioni di base ammissibili con valori non crescenti della funzione obiettivo fino a raggiungerne una ottima o a determinare che il PL è illimitato (Dantzig 1947). Si passa da una soluzione di base ammissibile ad una vicina E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 1
Geometricamente: vertici adiacenti cammino lungo gli spigoli del poliedro delle soluzioni ammissibili fino a un vertice ottimo NB: Nel caso peggiore il metodo può esaminare tutte le soluzioni di base ammissibili ma mediamente risulta molto efficiente. E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 2
Bisogna sapere come: determinare una soluzione di base ammissibile iniziale (o stabilire che il PL è inammissibile) applicando il metodo ad un altro PL verificare l ottimalità della soluzione di base ammissibile corrente passare dalla soluzione di base ammissibile corrente ad una soluzione di base ammissibile vicina migliore (o stabilire che il PL è illimitato). E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 3
Costi ridotti Dati un PL min{ c T x : Ax = b, x 0 } e una base ammissibile B, Ax = b si può riscrivere come B x B + N x N = b x B = B -1 b - B -1 N x N con B -1 b 0. Soluzione di base ammissibile: x B = B -1 b, x N = 0 E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 4
Sostituendo nella funzione obiettivo: x c T x = (c T B B c T N) = (c x T B c T N) N B -1 b B -1 Nx N x N c T x = c T B B -1 b c T B B -1 Nx N + c T N x N = c T B B -1 b + ( c T N c T B B -1 N ) x N espressa in funzione solo delle variabili fuori base z 0 = costo soluzione di base ammissibile x B = B -1 b, x N = 0 c T N costi ridotti E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 5
c j = variazione della funzione obiettivo se x j fuori base aumentasse di 1 unità e le altre variabili fuori base rimanessero uguali a 0 Def.: = 0 T c T N c T c T c T B B -1 A = [c T B c T B B -1 B, c T N c T B B -1 N] = I vettore dei costi ridotti rispetto alla base B E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 6
Test di ottimalità Dato un PL di min (max) e una base ammissibile B, se tutti i costi ridotti delle variabili fuori base sono non negativi (non positivi) la soluzione di base ammissibile x B = B -1 b 0, x N = 0 di costo c T B B -1 b è ottima. Infatti c T 0 T implica c T x = c T B B -1 b + c T N x N c T B B -1 b x 0, A x = b NB: Questa condizione di ottimalità è sufficiente ma in generale non è necessaria. E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 7
Cambiamento di base (PL di min) Sia una base ammissibile B e x j fuori base (in x N ) con costo ridotto c j < 0. Aumentare x j il più possibile ( entra in base ) mantenendo le altre variabili fuori base uguali a 0. La variabile x i in base (in x B ) tale che x i 0 impone il limite alla crescita di x j più stringente si annulla ( esce dalla base ). La nuova base ha una colonna diversa (vertici adiacenti) E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 8
Forma canonica Ad ogni iterazione bisogna porre il sistema n j 1 in forma canonica n aij x j bi i 1,..., m Bx B + Nx N = b x i a x j b i 1 m j m 1 ij i,..., I x B + N x N = b che mette in evidenza le variabili in base in funzione di quelle fuori base. x B = b - N x N E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 9
La forma canonica associata ad una base B si ottiene calcolano a ij e b i in funzione di B -1 B -1 B x B + B -1 N x N = B -1 b I N b eseguendo una sequenza di operazione di pivoting I x B + N x N = b mette in evidenza la soluzione di base x B = b e x N = 0! E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 10
Operazione di pivoting 1. Scegliere un coefficiente a rs 0 (il pivot ) 2. Dividere per a rs la r-esima riga 3. Per ogni riga i r, sottrarre la r-esima riga moltiplicata per a is NB: Stesse operazioni (che lasciano invariato l insieme delle soluzioni) usate nel metodo di eliminazione di Gauss per risolvere i sistemi di equazioni lineari. E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 11
Esempio: min z = x 1 + x 2 + x 3 r pivot 1 2 1-1 0 0 4-1 0 1 2 0 3 1 0 s A b 3 2 5 colonne variabili in base x 1 + 2x 2 + x 3 x 4 = 3 4x 2 x 3 + x 5 = 2 2x 1 + 3x 3 + x 4 = 5 x i 0 i = 1,,5 ½ 1 ½ - ½ 0-2 0-3 2 1 2 0 3 1 0 0 1 -¼ -¾ 0 0 0 0 3 1 1 0 3/2 ½ 0 3/2 E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 12-4 5 ¼ 1 5/2
Operazioni di pivoting permettono di: mettere un PL in forma canonica rispetto ad una base B passare da una forma canonica ad un altra, ovvero cambiare base. Vantaggio: B -1 della nuova base B non viene calcolata da zero ma in modo incrementale applicando all inversa della base precedente (con un unica colonna diversa) un unica operazione di pivoting! E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 13
Scegliere la base ammissibile vicina (vertice adiacente) in modo tale da: migliorare il valore della funzione obiettivo mantenere l ammissibilità 1) Variabile da fare entrare nella base con costo ridotto c j < 0 (NB: decremento z dipende anche dal limite alla crescita di x j!) che produce z massimo rispetto a z = c BT B -1 b regola di Bland: s = min{ j : c j < 0} Per problemi di max: c j > 0 scelta colonna s pivot E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 14
scelta riga r pivot 2) Variabile da fare uscire dalla base altrimenti nessun limite! indice i con i minimo = * tra quelle con a is >0 limite alla crescita di x s più stringente bi a regola di Bland: r = min{ i : = *, a is >0 } a caso b a is is NB: Se c j < 0 con a ij 0 i, nessun elemento della colonna può fare da pivot la funzione obiettivo è illimitata! E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 15
Rappresentazione sotto forma di tabella ( tableau ) sistema z = c T x Ax = b con vincoli di non negatività impliciti Tableau iniziale: - termine noto funz. obiettivo x 1 0 c T x n funz. obiettivo m righe b A termini noti E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 16
Considerando una base B e partizionando A = [B N] x 1 x m x m+1 x n 0 c T B c T N b B N z -1 0 0 0 = c T x z con operazioni di pivoting (o pre-moltiplicando per B -1 ) si porta il tableau in forma canonica rispetto a B: -z x B[1] x B[m] x 1 x m x m+1 x n -z 0 0 0 c T N b I N variabili in base z = c T B B -1 b + c T N x N b = B -1 b E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 17 z 0
Esempio: min z = - x 1 - x 2 6x 1 + 4x 2 + x 3 = 24 3x 1 2x 2 + x 4 = 6 Tableau rispetto alla base con colonne 3, 4: r s x 1 x 2 x 3 x 4 -z 0-1 -1 0 0 x 3 24 6 4 1 0 x 4 6 3-2 0 1 I 2x2 x i 0 i =1,, 4 Pivot su equivale a ricavare x 1 dalla riga pivot e sostituirla nelle rimanenti righe pivot base x 1 entra nella base e x 4 esce dalla base E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 18
Tableau rispetto alla nuova base: x 1 x 2 x 3 x 4 -z 2 0-5/3 0 1/3 x 3 12 0 8 1-2 x 1 2 1-2/3 0 1/3 base soluzione di base ammissibile: x 1 = 2, x 3 = 12, x 2 = x 4 = 0 con z = -2 costi ridotti x 1 x 1 6 0 3 1 E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 19
x 2 unica variabile fuori base da fare entrare (c 2 = -5/3 < 0) x 3 unica variabile in base che può uscire (a rs = 8 > 0) s x 1 x 2 x 3 x 4 -z 2 0-5/3 0 1/3 r x 3 12 0 8 1-2 x 1 2 1-2/3 0 1/3 x 1 x 2 x 3 x 4 -z 6 ½ 0 ¼ 0 x 2 6 3/2 1 ¼ 0 x 4 18 6 0 ½ 1 x 1 x 2 x 3 x 4 -z 9/2 0 0 5/24-1/12 x 2 3/2 0 1 1/8-1/4 x 1 3 1 0 1/12 1/6 s Tutti i costi rodotti 0 r sol. di base (ammissibile) ottima: x * = (0, 6, 0, 18) con z * = -6 E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 20
Algoritmo del simplesso (PL di min) BEGIN Siano B[1],,B[m] gli indici delle colonne di una base ammissibile iniziale B; Costruire il tableau iniziale A = {a[i,j]: 0 i m, 0 j n} in forma canonica rispetto a B; illimitato:=false; ottimo:=false; WHILE (ottimo = false) AND (illimitato = false) THEN IF a[0,j] 0 j=1,,m THEN ottimo := true; /* per PL di min */ ELSE Scegliere una x s fuori base con a[0,s] < 0; IF a[i,s] 0 i=1,,m THEN illimitato := true; ELSE costi ridotti Determina indice r che minimizza con 1 i m e a[i,s] > 0; a[ i,0] a[ i, s] pivot(r,s) /* aggiornamento tableau */ B[r] := s; END-IF Procedura pivot(r,s)? END END-IF E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 21
Degenerazione e convergenza Def. Una soluzione di base ammissibile x è degenere se contiene almeno una variabile di base = 0. x con più di n-m zeri corrisponde a più basi distinte! Stesso vertice: x più di n vincoli ( gli m di Ax = b e più di n-m tra gli n di x 0 ) sono soddisfatti con segno di uguaglianza. E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 22
In presenza di soluzioni di base (ammissibili) degeneri il cambiamento di base può non diminuire il valore della funzione obiettivo: Se la sol. di base corrente è degenere, * può essere = 0 e quindi la nuova sol. di base è identica a quella precedente. Anche se * > 0, più variabili in base possono annullarsi quando x s viene aumentata a *. La nuova sol. di base è quindi degenere. Si può percorrere ciclicamente (all ) una sequenza di basi degeneri associate allo stesso vertice. E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 23
Esistono varie regole anticiclo per la scelta delle variabili che entrano ed escono dalla base (indici r, s) Regola di Bland: tra le variabili candidate ad entrare/uscire dalla base (x s e x r ) scegliere sempre quella con indice minore. Proposizione: L algoritmo del simplesso con la regola di Bland termina dopo n m iterazioni. finito di pivot E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 24
In casi patologici (Klee Minty 72) il numero di iterazioni può essere esponenziale in n e/o m, ma l algoritmo è mediamente molto efficiente. Campagne sperimentali: Il numero di iterazioni cresce linearmente rispetto a m (m. 3m) e molto lentamente ( logaritmicamente) rispetto a n. E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 25
Metodo del simplesso a due fasi Fase 1: Determinazione di una soluzione di base ammissibile iniziale Esempio: min z = x 1 + x 3 x 1 + 2x 2 5 una sottomatrice I 2x2 di A! x 2 + 2x 3 = 6 x 1, x 2, x 3 0 x 1 + 2x 2 + x 4 = 5 x 4 0 Sia (P) min z = c T x Ax = b x 0 Ipotesi: b 0 E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 26
Problema ausiliario con variabili artificiali y i, 1 i m (P A ) min v m i 1 y i A x + I y = b x 0, y 0 una soluzione di base ammissibile iniziale ovvia y = b 0 1) Se v * > 0, (P) è inammissibile 2) Se v * = 0, chiaramente y * = 0 e x * è una soluzione di base ammissibile di (P) E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 27
Per 2) si verificano i sottocasi: Se y i fuori base i, 1 i m, eliminando quelle colonne si ottiene un tableau in forma canonica rispetto a una base; la riga di z va determinata mediante sostituzione. Se y i in base (soluzione degenere), si può effettuare un pivot su un coefficiente 0 della riga y i e scambiare y i con una variabile x j fuori base. cf. esempio E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 28
Esempio: min v = y 1 + y 2 (P A ) x 2 + 4x 3 + y 1 = 2 min z = x 1 + x 2 +10 x 3 (P) x 2 + 4x 3 = 2-2x 1 + x 2-6x 3 = 2 x 1, x 2, x 3 0-2x 1 + x 2-6x 3 + y 2 = 2 x 1, x 2, x 3, y 1, y 2 0 Mettere v = y 1 +y 2 in forma canonica sostituendo le espressioni di y 1, y 2 in funzione di x 1, x 2 e x 3 x 1 x 2 x 3 y 1 y 2 -v -4 2-2 2 0 0 y 1 2 0 1 4 1 0 y 2 2-2 1-6 0 1 E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 29
x 1 x 2 x 3 y 1 y 2 -v -4 2-2 2 0 0 y 1 2 0 1 4 1 0 y 2 2-2 1-6 0 1 x 1 x 2 x 3 y 1 y 2 -v 0 2 0 10 2 0 x 2 2 0 1 4 1 0 y 2 0-2 0-10 -1 1 ottimo v * = 0 E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 30
scegliendo come pivot il coefficiente 2 della riga di y 2 si ottiene: base ottima equivalente x 1 x 2 x 3 y 1 y 2 -v 0 0 0 0 1 1 x 2 2 0 1 4 1 0 x 1 0 1 0 5 ½ -½ trasferito la colonna di I nella zona delle variabili originali 0 1 soluzioni di base ottima per (P A ) x = (0, 2, 0) è di base ammissibile per (P) E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 31
z = x 1 +x 2 +10 x 3 Sostituendo: forma canonica variabile fuori base x 2 = 2-4x 3 x 1 = -5x 3 z = 2 + x 3 x 1 x 2 x 3 -z -2 0 0 1 x 2 2 0 1 4 x 1 0 1 0 5 tableau corrispondente alla soluzione di base ammissibili iniziale per (P) La soluzione di base ammissibile è gia ottima quindi niente seconda fase! E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 32