Metodo del simplesso N.B.: Se qualche passaggio non ti è chiaro scrivici sul forum! Si consideri il seguente problema di programmazione lineare (PL) max z = 3x1 + 4x2 2x1 + x2 <= 8 -x1 +2x2 <= 6 x1 , x2 >=0 Applicare il simplesso e determinare la soluzione ottima Consideriamo il problema (PL) in Forma Standard aggiungendo le variabili di slack e di surplus e mettendo i vincoli di uguaglianza. min z = cT x Ax = b x>= 0 - min –z = -3x1 -4x2 2x1 + x2 +x3 = 8 -x1 + 2x2 + x4 = 6 x >= 0 x1 x2 x3 x4 A= [ ] Poiché abbiamo la matrice identità nelle colonne x3 e x4 la base di partenza sarà B = { 3, 4} Scriviamo la matrice di base AB e la sua inversa sarà proprio AB AB = [ ] Calcoliamoci gli b = xB = A-1B b = [ ] [ ]= [ ] La base è ammissibile poiché gli xB sono >=0 Test di ottimalità per le variabili fuori base zj – cj = cTB A-1B aj <= 0 CB è la matrice con i coefficienti di costo della funzione obiettivo delle variabili in base. Aj e’ la colonna della variabile fuori base con la quale si fa il test di ottimalità. z1 – c1 = [ ][ ][ z2 – c2 = 3 e z 2 – c2 = [ ] ][ ][ ] Poiché i coefficienti sono > 0 allora scegliamo quello con il valore maggiore (Secondo la regola del gradiente). Quindi x2 entra in base. Ora facciamo il test di illimitatezza. Se y i k ≤0 ∀i=1,...m, allora la soluzione del problema è illimitata (non esiste ottimo finito), e l’algoritmo termina altrimenti facciamo il test dei minimi rapporti per stabilire quale variabile uscirà dalla base. Test illimitatezza yj = A-1B aj y2 = [ ][ ] [ ] Test minimi rapporti x3 x4 ∀j = 1,…,k} = { 8/1 , 6/2} Min = { x4 esce dalla base. Nuova base B = { 3, 2} N={1, 4} AB = [ ] A-1B = [ ] Per calcolare l’inversa di una matrice 2x2 basta scambiare a11 con a22 e cambiare di segno ad a12 e a21. Poi calcolare il determinante e dividere la matrice con quest’ultimo. xB = [ ][ ] [ ] Test di ottimalità z1 – c1 = [ ][ z4 – c4 = [ ][ ] ][ ] x1 entra in base Test illimitatezza Y1 = [ ][ ] [ ] [ ][ ] Test minimi rapporti Poiché abbiamo un y negativo allora il test dei minimi verrà fatto solo sulla x3 che di conseguenza esce dalla base. Nuova base B = {1, 2} N = {3, 4} AB = [ ] A-1B = [ XB = [ ][ ] ] [ ] Test di ottimalità z3 – c3 = [ ] [ z4 – c4 = [ ][ ] ][ ] [ ][ ] L’algoritmo termina poiché tutti i z j – cj sono <= 0. Quindi la base B = {1, 2} è ottima.