4.5 Metodo del simplesso min z = c T x s.v. Ax = b x 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 947). Si passa da una soluzione di base ammissibile ad una vicina E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano
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
Bisogna sapere come: determinareuna 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 } e una base ammissibile B, Ax = b si può riscrivere come B x B + N x N = b x B = B - b -B - N x N con B - b. Soluzione di base ammissibile: x B = B - b, x N = E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 4
Sostituendo nella funzione obiettivo: x c T x = (c T B B ct N ) x = (ct B ct N ) N B - b B - Nx N x N c T x = c T B B- b c T B B- Nx N + c T N x N = c T B B- b + ( c T N ct B B- N ) x N espressa in funzione solo delle variabili fuori base z = costo soluzione di base ammissibile x B = B - b, x N = 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 unità e le altre variabili fuori base rimanessero uguali a Def.: = T c T N c T c T c T B B- A = [c T B ct B B- B, c T N ct B B- 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 - b, x N = di costo c T B B- b è ottima. Infatti c T T implica c T x = c T B B- b + c T N x N ct B B- b x, 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 (min) Sia una base ammissibile B e x j fuori base (x N ) con costo ridotto c j <. Aumentare x j il più possibile ( entra in base ) mantenendo le altre variabili fuori base uguali a. La variabile x i in base (x B ) tale che x i 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= in forma canonica n aij x j = bi i =,..., m Bx B + Nx N = b x i a x j = b i = m + j= m+ 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 - B - B x B + B - N x N = B - 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 =! E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano
Operazione di pivoting. Scegliere un coefficiente a rs (il pivot ). 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
Esempio: min z = x + x + x 3 r pivot 4 A - 3 - x +x + x 3 x 4 = 3 4x x 3 +x 5 = x +3x 3 +x 4 = 5 x i i =,,5 b 3 5 ½ - ½ -3 3 -½ 3/ -4 5 s -¼ -¾ 3 3/ ½ base B ¼ 5/ E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano
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 - 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 3
Scegliere la base ammissibile vicina (vertice adiacente) in modo tale da: migliorare il valore della funzione obiettivo mantenere l ammissibilità ) Variabile da fare entrare nella base con costo ridotto c j < minimo (NB: decremento z dipende anche dal limite alla crescita di x j ) che produce z massimo rispetto a z = c BT B - b regola di Bland: s = min{ j : c j < } scelta colonna s pivot E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 4
scelta riga r pivot ) Variabile da fare uscire dalla base altrimenti nessun limite! indice i con i minimo = θ * tra quelle con a is > limite alla crescita di x s più stringente bi a regola di Bland: r = min{ i : = θ *, a is > } a caso b a is is NB: Se c j < con a ij i, nessun elemento della colonna può fare da pivot la funzione obiettivo è illimitata! E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 5
Rappresentazione sotto forma di tabella ( tableau ) sistema z = c T x Ax = b con vincoli di non negatività impliciti Tableau iniziale: m righe b - termine noto funz. obiettivo x c T A x n funz. obiettivo termini noti E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 6
Considerando una base B e partizionando A = [B N] b x x m c T B B x m+ x n c T N N z - = c T x z con operazioni di pivoting (o pre-moltiplicando per B - ) si porta il tableau in forma canonica rispetto a B: -z x B[] x B[m] x x m -z x m+ x n c T N b I N variabili in base z = c T B B - b + c T N x N b = B - b E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 7 z
Esempio: min z = - x -x 6x +4x +x 3 = 4 3x x +x = 6 4 x i i =,, 4 Tableau rispetto alla base con colonne 3, 4: r -z x 3 x 4 4 6 s x - 6 3 x - 4 - x 3 x 4 I x Pivot su 3 equivale a ricavare x dalla riga pivot e sostituirla nelle rimanenti righe pivot base x entra nella base e x 4 esce dalla base E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 8
Tableau rispetto alla nuova base: -z x 3 x x x -5/3 x 3 x 4 /3 8 - -/3 /3 base soluzione di base ammissibile: x =, x 3 =, x = x 4 = con z = - costi ridotti x 6 x 3 E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 9
x unica variabile fuori base da fare entrare (c = -5/3 < ) x 3 unica variabile in base che può uscire (a rs = 8 > ) r -z x 3 x x s x -5/3 x 3 /3 8 - -/3 /3 x 4 -z 9/ x x x x x 3 5/4 3/ /8 -/4 3 / x 4 -/ /6 r -z x x 4 6 6 8 x x x 3 x 4 s ½ ¼ Tutti i costi rodotti 3/ ¼ soluzione di base ottima: 6 ½ con z * = -6 x * =, x * = 6, x* 3 =, x* 4 = 8 E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano
Algoritmo del simplesso (forma tableau) BEGIN Siano B[],,B[m] gli indici delle colonne di una base ammissibile iniziale B; Costruire il tableau iniziale A = {a[i,j]: i m, j n} in forma canonica rispetto a B; illimitato:=false; ottimo:=false; WHILE (ottimo = false) AND (illimitato = false) THEN IF a[,j] j=,,m THEN ottimo := true; /* per PL di min */ ELSE Scegliere una x s fuori base con a[,s] < ; IF a[i,s] i=,,m THEN illimitato := true; ELSE costi ridotti a[ i,] Determina indice r che minimizza a[ i, s] con i m e a[i,s] > ; pivot(r,s) /* aggiornamento tableau */ B[r] := s; END-IF Procedura pivot(r,s)? END-IF END E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano
Degenerazione e convergenza Def. Una soluzione di base ammissibile x è degenere se contiene almeno una variabile di base =. 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 ) sono soddisfatti con segno di uguaglianza. E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano
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 = e quindi la nuova sol. di base identica a quella precedente. Anche se θ * >, 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 3
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 4
In casi patologici (Klee & Minty 7) 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 5
Metodo del simplesso a due fasi Fase : Determinazione di una soluzione di base ammissibile iniziale Esempio: min z = x +x 3 x +x 5 x +x 3 = 6 una sottomatrice I x di A! x, x, x 3 x + x + x 4 = 5 x 4 Sia (P) min z = c T x Ax = b x Ipotesi: b E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 6
Problema ausiliario con variabili artificiali y i, i m (P A ) min v = m i= y i A x + I y = b x, y una soluzione di base ammissibile iniziale ovvia y = b ) Se v * >, (P) è inammissibile ) Se v * =, chiaramente y * = e x * è una soluzione di base ammissibile di (P) E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 7
Per ) si verificano i sottocasi: Se y i fuori base i, i m, eliminando quelle colonne si ottiene un tableau in forma canonica rispetto a una base; la riga di z va determinata mediante sostituzione. cf. esempio Se y i in base (soluzione degenere), si può effettuare un pivot su un coefficiente della riga y i e scambiare y i con una variabile x j fuori base. E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 8
Esempio: min v = y + y (P A ) x + 4x 3 + y = -x + x - 6x 3 + y = x, x, x 3, y, y min z = x + x + x 3 (P) x + 4x 3 = -x + x - 6x 3 = x, x, x 3 Mettere v = y +y in forma canonica sostituendo le espressioni di y, y in funzione di x, x e x 3 -v y y -4 E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 9 x - x - x 3 4-6 y y
x x x 3 y y -v -4 - y 4 y - -6 x x x 3 y y -v x 4 ottimo v * = y - - - E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 3
scegliendo come pivot il coefficiente della riga di y si ottiene: base ottima equivalente -v x x x x x 3 4 5 y ½ y -½ trasferito la colonna di I nella zona delle variabili originali soluzioni di base ottima per (P A ) x =, x =, x 3 = è di base ammissibile per (P) E. Amaldi -- Fondamenti di R. O. -- Politecnico di Milano 3
z = x +x + x 3 Sostituendo: forma canonica variabile fuori base x = - 4x 3 x = -5x 3 z = + x 3 -z x x - x x x 3 4 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 3