Sunteți pe pagina 1din 7

Algoritmul simplex pentru rezolvarea problemei de programare liniară în formă canonică

1. Să se rezolve prin algoritmul simplex PPL:


x1 + x2 → max
3 x1 − 2 x2  3

−2 x1 + 3 x2  3
x − x  1
 1 2
x1  0, x2  0

Rezolvare.
Pasul 1. Se aduce PPL la forma standard, introducând variabilele ecart x3 , x4 , x5 :

x1 + x2 → max
3 x1 − 2 x2 + x3 =3

−2 x1 + 3 x2 + x4 = 3 (1)
x − x + x5 = 1
 1 2
x j  0, j = 1,5

Pasul 2. Se determină o soluție admisibilă de bază inițială.


Matricea coeficienților sistemului de restricții (1)
 3 −2 1 0 0 
 
 −2 3 0 1 0 
 1 −1 0 0 1 
 
include o submatrice unitate de dimensiune m, unde m=3 coincide cu numărul de ecuații ale sistemului. În
1 0 0
acest caz, putem direct identifica o soluție admisibilă de bază în PPL. Submatricea unitate  0 1 0 
0 0 1
 
corespunde variabilelor de bază x3 , x4 , x5 . Prin urmare, în soluția admisibilă de bază avem variabilele

nebazice x1 = 0, x2 = 0 , care, fiind înlocuite în sistemul (1), stabilesc valorile variabilelor bazice

x3 = 3, x4 = 3 , x5 = 1 în soluția admisibilă de bază x ( 0) = ( 0,0,3,3,1) .


T

Pasul 3. Se construiește tabelul simplex inițial:


1 1 0 0 0
cB xB b
x1 x2 x3 x4 x5
0 x3 3 3 -2 1 0 0
0 x4 3 -2 3 0 1 0
0 x5 1 1 -1 0 0 1
j 0

1
Pasul 4. Se verifică dacă se satisface criteriul de optimalitate:
1 1 0 0 0
cB xB b
x1 x2 x3 x4 x5
0 x3 3 3 -2 1 0 0
0 x4 3 -2 3 0 1 0
0 x5 1 1 -1 0 0 1
j 0 -1 -1 0 0 0

Deoarece avem estimații negative, rezultă că nu se satisface criteriul de optimalitate în PPL.


Pasul 5. Se alege în calitate de coloană pivot coloana cu estimație negativă, căreia îi corespunde variabila
xi cu cel mai mic indice, adică coloana ce corespunde lui x1 în cazul dat:

1 1 0 0 0
cB xB b
x1 x2 x3 x4 x5
0 x3 3 3 -2 1 0 0
0 x4 3 -2 3 0 1 0
0 x5 1 1 -1 0 0 1
j 0 -1 -1 0 0 0

Pasul 6. Selectarea liniei pivot.


Se consideră rapoartele elementelor din coloana termenilor liberi b la elementele corespunzătoare
pozitive din coloana pivot și se alege minimul dintre acestea:
min 3 3,1 1 = 1 .

Deoarece sunt două variante pentru care se atinge minimul considerat, în calitate de linie pivot se alege
linia în care s-a atins minimul, iar indicele variabilei bazice xi este minimal – adică linia ce corespunde

variabilei x3 în cazul dat.

1 1 0 0 0
cB xB b
x1 x2 x3 x4 x5
0 x3 3 3 -2 1 0 0
0 x4 3 -2 3 0 1 0
0 x5 1 1 -1 0 0 1
j 0 -1 -1 0 0 0

Coloana pivot indică faptul că variabila corespunzătoare x1 va intra în bază (adică va deveni variabilă

bazică). Linia pivot indică faptul că variabila corespunzătoare x3 va ieși din bază (adică va deveni variabilă

nebazică).
Pasul 7. Se efectuează transformarea simplex:
Elementul de la intersecția liniei pivot și a coloanei pivot este numit element pivot. În continuare, în baza
acestuia sunt efectuate transformările din cadrul iterației simplex conform regulii dreptunghiului.

2
a) În coloana cu variabile bazice se schimbă x3 prin x1 , iar în coloana coeficienților bazici (adică

coloana c B ) – se pune coeficientul variabilei x1 (ca re a intrat în bază) din funcția obiectiv.

1 1 0 0 0
cB xB b
x1 x2 x3 x4 x5
1 x1 3 3 -2 1 0 0
0 x4 3 -2 3 0 1 0
0 x5 1 1 -1 0 0 1
j 0 -1 -1 0 0 0
b) Elementele liniei pivot se împart la elementul pivot:
1 1 0 0 0
cB xB b
x1 x2 x3 x4 x5
1 x1 1 1 -2/3 1/3 0 0
0 x4 3 -2 3 0 1 0
0 x5 1 1 -1 0 0 1
j 0 -1 -1 0 0 0
c) În coloanele ce corespund variabilelor bazice se scriu coloanele matricei unitate, în ordinea în care
variabilele bazice sunt enumerate în tabel:
1 1 0 0 0
cB xB b
x1 x2 x3 x4 x5
1 x1 1 1 -2/3 1/3 0 0
0 x4 3 0 3 0 1 0
0 x5 1 0 -1 0 0 1
j 0 -1 -1 0 0 0
d) Restul elementelor, marcate cu roșu, se recalculează după regula dreptunghiului, dar în baza
datelor din tabelul de la punctul a):
1 1 0 0 0
cB xB b
x1 x2 x3 x4 x5
1 x1 3 3 -2 1 0 0
0 x4 3 -2 3 0 1 0
0 x5 1 1 -1 0 0 1
j 0 -1 -1 0 0 0

Elementul v de la intersecția coloanei termenilor liberi b cu linia ce corespunde lui x4 se recalculează


astfel:
Se consideră dreptunghiul care are două vârfuri (pe diagonală) în elementul considerat și elementul pivot
(a se vedea porțiunea hașurată cu albastru).
1 1 0 0 0
cB xB b
x1 x2 x3 x4 x5
1 x1 3 3 -2 1 0 0
0 x4 3 -2 3 0 1 0
0 x5 1 1 -1 0 0 1

3
j 0 -1 -1 0 0 0
Elementul v se recalculează astfel:
din valoarea curentă a lui v se scade produsul elementelor din vârfurile celeilalte diagonale raportat la
elementul pivot:
v := 3 −
( −2 )  3 = 5 .
3
Analog se calculează celelalte elemente.

Elementul v de la intersecția coloanei termenilor liberi b cu linia ce corespunde lui x5 se recalculează


astfel:
1 3
v := 1 − =0.
3
Elementul v de la intersecția coloanei ce corespunde lui x2 cu linia ce corespunde lui x4 se recalculează
astfel:
v := 3 −
( −2 )  ( −2 ) = 5 .
3 3
Elementul v de la intersecția coloanei ce corespunde lui x2 cu linia ce corespunde lui x5 se recalculează
astfel:
1 ( −2 ) 1
v := −1 − =− .
3 3
Elementul v de la intersecția coloanei ce corespunde lui x3 cu linia ce corespunde lui x4 se recalculează
astfel:
v := 0 −
( −2 ) 1 = 2 .
3 3
Elementul v de la intersecția coloanei ce corespunde lui x3 cu linia ce corespunde lui x5 se recalculează
astfel:
1 1 1
v := 0 − =− .
3 3
Am obținut următorul tabel simplex:
1 1 0 0 0
cB xB b
x1 x2 x3 x4 x5
1 x1 1 1 -2/3 1/3 0 0
0 x4 5 0 5/3 2/3 1 0
0 x5 0 0 -1/3 -1/3 0 1
j 1

Pasul 4. Pentru noua soluție admisibilă de bază rezultată x (1) = (1,0,0,5,0 ) , se verifică dacă se satisface
T

criteriul de optimalitate:
Calculăm estimațiile:
1 1 0 0 0
cB xB b
x1 x2 x3 x4 x5
1 x1 1 1 -2/3 1/3 0 0
0 x4 5 0 5/3 2/3 1 0
0 x5 0 0 -1/3 -1/3 0 1
j 1 0 -5/3 1/3 0 0
4
Estimația 1 a fost calculată, înmulțind scalar coloanele c B și x1 , iar din rezultat scăzând coeficientul
funcției obiectiv de pe lângă x1 : 1 = 11 + 0  0 + 0  0 − 1 = 0 . Analog se determină celelalte estimații. De
exemplu, 2 = 1 ( −2 3) + 0  ( 5 3) + 0  ( −1 3) − 1 = − 5 3 .
Deoarece avem o estimație negativă  2  0 , nu se verifică criteriul de optimalitate. Prin urmare, este
necesar de efectuat încă o iterație simplex.
Pasul 5. Selectarea coloanei pivot
Deoarece avem o singură estimație negativă, se alege în calitate de coloană pivot coloana ce-i corespunde,
adică coloana căreia îi corespunde variabila x2 :

1 1 0 0 0
cB xB b
x1 x2 x3 x4 x5
1 x1 1 1 -2/3 1/3 0 0
0 x4 5 0 5/3 2/3 1 0
0 x5 0 0 -1/3 -1/3 0 1
j 1 0 -5/3 1/3 0 0
Pasul 6. Selectarea liniei pivot.
Se consideră rapoartele elementelor din coloana termenilor liberi b la elementele corespunzătoare
pozitive din coloana pivot și se alege minimul dintre acestea:
min 5 ( 5 3) = 3 (doar un singur element este pozitiv în coloana pivot).

În calitate de linie pivot se alege linia ce corespunde variabilei x4 în cazul dat.

1 1 0 0 0
cB xB b
x1 x2 x3 x4 x5
1 x1 1 1 -2/3 1/3 0 0
0 x4 5 0 5/3 2/3 1 0
0 x5 0 0 -1/3 -1/3 0 1
j 1 0 -5/3 1/3 0 0
Coloana pivot indică faptul că variabila corespunzătoare x2 va intra în bază (adică va deveni variabilă

bazică). Linia pivot indică faptul că variabila corespunzătoare x4 va ieși din bază (adică va deveni variabilă

nebazică).
Pasul 7. Se efectuează transformarea simplex:
a) În coloana cu variabile bazice se schimbă x4 prin x2 , iar în coloana coeficienților bazici (adică

coloana c B ) – se pune coeficientul variabilei x2 (care a intrat în bază) din funcția obiectiv. La fel, se

recalculează valoarea funcției obiectiv – 6.


1 1 0 0 0
cB xB b
x1 x2 x3 x4 x5
1 x1 1 1 -2/3 1/3 0 0
1 x2 5 0 5/3 2/3 1 0
0 x5 0 0 -1/3 -1/3 0 1

5
j 6

Punctele b), c), d) ale pasului 7 pot fi realizate simultan și plasate în același tabel:
Tabelul precedent:
1 1 0 0 0
cB xB b
x1 x2 x3 x4 x5
1 x1 1 1 -2/3 1/3 0 0
1 x2 5 0 5/3 2/3 1 0
0 x5 0 0 -1/3 -1/3 0 1
j 6

Tabelul curent rezultat după efectuarea iterației simplex:


1 1 0 0 0
cB xB b
x1 x2 x3 x4 x5
1 x1 3 1 0 3/5 2/5 0
1 x2 3 0 1 2/5 3/5 0
0 x5 1 0 0 -1/5 1/5 1
j 6

Pasul 4. Pentru noua soluție admisibilă de bază rezultată x (1) = ( 3,3, 0, 0,1) , se verifică dacă se satisface
T

criteriul de optimalitate:
Calculăm estimațiile:
1 1 0 0 0
cB xB b
x1 x2 x3 x4 x5
1 x1 3 1 0 3/5 2/5 0
1 x2 3 0 1 2/5 3/5 0
0 x5 1 0 0 -1/5 1/5 1
j 6 0 0 1 1 0

Deoarece toate estimațiile  j  0, j = 1,5 (sunt nenegative), rezultă că soluție admisibilă de bază curentă

( ) = ( 3,3,0,0,1) a PPL în forma


T
x ( ) = ( 3,3, 0, 0,1) este soluția optimă x (
opt )
= x1(
opt )
, x2(
opt )
, x3(
opt )
, x4(
opt )
, x5(
1 T opt ) T

standard
x1 + x2 → max
3 x1 − 2 x2 + x3 =3

−2 x1 + 3 x2 + x4 = 3
x − x + x5 = 1
 1 2
x j  0, j = 1,5
PPL inițială

6
x1 + x2 → max
3 x1 − 2 x2  3

−2 x1 + 3 x2  3
x − x  1
 1 2
x1  0, x2  0
este echivalentă cu problema în formă standard, în sensul că componentele soluției optime pentru
problema în formă standard, care corespund problemei inițiale, sunt componente ale soluției optime în
( ) = ( 3,3) .
T
problema inițială. Astfel, PPL inițială are soluția optimă x ( opt ) = x1( opt ) , x2( opt )
T

S-ar putea să vă placă și