Sunteți pe pagina 1din 8

TEMA13:METODASIMPLEXDEPROGRAMARELINIAR

101

TEMA13:METODASIMPLEXDEPROGRAMARE LINIAR

Obiective:
Definirea conceptelor generale ale metodei simplex Definirea algoritmului de rezolvare a problemei de programare liniar prin metoda simplex

Coninut:
13.1 Concepte generale privind metoda simplex 13.2 Algoritmul simplex pentru rezolvarea problemelor de programare liniar de maximizare 13.3 Concepte cheie 102 103 108

102

MODULUL6:MODELEDEOPTIMIZARE

13.1Conceptegeneraleprivindmetodasimplex
Metodele grafice de rezolvare a problemelor de programare liniar sunt aplicabile, dup cum am vzut n tema anterioar, numai pentru modelele de programare liniar cu dou variabile. Pentru trei sau mai multe variabile, metoda grafic nu mai poate fi aplicat. Metoda simplex de rezolvare a problemelor de programare liniar, introdus n anul 1947 de George B. Dantzig, poate fi aplicat pentru trei sau mai multe variabile, fiind n esen o metod matriceal. Denumirea metodei este legat de faptul c un poliedru convex se mai numete i simplex. innd cont c soluiile optime ale unei probleme de programare liniar se gsesc printre vrfurile poliedrului convex sau simplexului care reprezint regiunea admisibil, metoda simplex pornete de la un vrf sau o soluie de baz i trece apoi la un alt vrf care s reprezinte o soluie mai bun. Algoritmul metodei simplex se finanlizeaz n dou situaii: (1) se obine cea mai bun soluie, i se decide c problema de programare liniar are optim finit unic sau multiplu; (2) nu se obine cea mai bun soluie, pentru c aceast soluie nu exist, i se decide c problema de programare liniar nu are optim finit. Pentru rezolvarea problemelor de programare liniar cu metoda simplex, vom considera, mai nti problema standard de maximizare:
n [ ] max f cjxj = j =1 n aij x j b j , 1 i m , j =1 x 0, 1 j n j

(13.1)

n care avem valorile b j > 0 . Pentru problemele de minimizare sub form matriceal:
[min ]g = yb . yA c y 0

(13.2)

vom considera problema dual:


[max ] f = cx , Ax b x 0

(13.3)

care conduce de fapt la o problem de maximizare standard cu cerinele definite mai sus. De asemenea, vom considera i cazul n care sunt restriciile mixte, respectiv unele inecuaii din sistemul de restricii sunt definite prin condiia 0 , iar altele sunt definite prin condiia 0 .

TEMA13:METODASIMPLEXDEPROGRAMARELINIAR

103

13.2Algoritmulsimplexpentrurezolvareaproblemelorde programareliniardemaximizare
Vom analiza n continuare metoda simplex pentru rezolvarea problemelor de programare liniar de maximizare, pentru care vom aplica urmtorul algoritm:
Pasul 1: Determinarea funciei obiectiv i a restriciilor:
n [ ] max f = cjxj j =1 n a x b , 1 i m . ij j j j =1 b j > 0, 1 j n x j 0, 1 j n

Pasul 2: Determinarea matricei sau a tabloului simplex: (2.1) Rescriem problema de programare liniar, rescriind funcia obiectiv i introducnd variabilele artificiale sau suplimentare sj, care transform inecuaiile n ecuaii:
n [ ] max cjxj + f = 0 j =1 n a x + s = b , 1 i m ij j j j j =1 b j > 0, 1 j n x j 0, 1 j n

(2.2) Considerm tabloul simplex de forma:


Tabloul simplex #1 Linia x1 ... L11 a11 ... ... ... ... L1r a1r ... ... ... ... L1m a1m ... L1,m+1 c1 ...

xk a1k ... ark ... amk ck

... ... ... ... ... ... ...

xn a1n ... arn ... amn cn

s1 1 ... 0 ... 0 0

... ... ... ... ... ... ...

st 0 ... 1 ... 0 0

... ... ... ... ... ... ...

sn 0 ... ... ... 1 0

f 0 ... 0 ... 0 1

b b1 ... br ... bm 0

Raport

Componentele tabloului simplex sunt urmtoarele: (1) n prima coloan vom numerota liniile tabelului n funcie de numrul tabloului, care reprezint de fapt numrul iteraiilor algoritmului. (2) Pentru variabilele suplimentare, vom considera sj = 1, iar n rest 0. (3) n ultima linie vom nscrie valorile cu semn schimbat ale coeficienilor funciei obiectiv, apoi 0 pentru celulele corespunztoare variabilelor suplimentare, iar n coloana corespunztare lui f valoarea 1.

104

MODULUL6:MODELEDEOPTIMIZARE

Pasul 3: Determinarea celulei pivot: (3.1) Determinarea coloanei pivot: Coloana pivot este dat de valoarea cj negativ minim:
c p = min{c j }, 1 p n .
1 j n

(3.2) Determinarea liniei pivot: Se determin mai nti, n ultima coloan a tabelului simplex, rapoartele:
r1 = b b1 , ..., rm = m . a1 p amp

Linia pivot este dat de valoarea ri minim (marcat cu *):


b rl = min i . 1i m a ip (3.3) Elementul pivot va fi: alp.
Tabloul simplex #2 Linia x1 ... L21 a11 ... ... ... ... L2l a1l ... ... ... ... L2m a1m ...

xp a1p ... alp ... amp cp

... ... ... ... ... ... ...

xn a1n ... aln ... amn cn

s1 1 ... 0 ... 0 0

... ... ... ... ... ... ...

st 0 ... 1 ... 0 0

... ... ... ... ... ... ...

sn 0 ... ... ... 1 0

f 0 ... 0 ... 0 1

b b1 ... bl ... bm 0

Raport b1 a1 p ... bl a1l * ... bm amp

L2,m+1

c1

...

Pasul 4: Determinarea valorii 1 n celula pivot i a valorilor 0 n celelalte celule ale coloanei pivot: (4.1) Se mparte linia pivot la elementul pivot (dac elementul pivot este diferit de 1):

L3l := L2l / alp;


(4.2) Se aplic combinaii liniare n funcie de celula pivot, astfel nct s se obin valoarea 0 n celelalte celule ale coloanei pivot:

L3l := L2l a1p L2l / alp, ..., L3,m+l := L3,m+l cp L2l / alp.
Pasul 5: Se continu iteraiile de la Pasul 3 pn cnd se obin toate celulele pivot corespunztoare variabilelor problemei. Pasul 6: Dac toate valorile din ultima linie a tabloului simplex sunt 0 sau pozitive, s-a obinut soluia optim. Valorile optime ale variabilelor se obin n coloana termenilor liberi b, iar valoarea optim a funciei obiectiv se obine n ultima celul a tabloului simplex.

Dac obinem celule pivot corespunztoare variabilelor suplimentare, atunci problema de programare liniar nu are soluie unic. Dac dup determinare tuturor celulelor pivot corespunztoare variabilelor problemei n ultima linie a tabelului simplex exist valori negative, atunci problema de programare liniar nu are soluie optim.

TEMA13:METODASIMPLEXDEPROGRAMARELINIAR

105

Exemplul 13.1: S se aplice algoritmul simplex pentru rezolvarea problemei de programare liniar: [max] f ( x, y ) = 4 x + 3 y x + 2 y 8 . 2 x + y 10 x 0 y 0 Rezolvare: Vom aplica algoritmul simplex descris anterior. Pasul 1: Determinarea funciei obiectiv i a restriciilor: [max] f ( x, y ) = 4 x + 3 y x + 2 y 8 . 2 x + y 10 x 0 y 0 Pasul 2: Determinarea matricei sau a tabloului simplex: (2.1) Rescriem problema de programare liniar, rescriind funcia obiectiv i introducnd variabilele artificiale sau suplimentare s1 i s2, care transform inecuaiile n ecuaii: [max] 4 x 3 y + f = 0 x + 2 y + s = 8 1 2 x + y + s2 = 10 x 0 y 0

(2.2) Considerm tabloul simplex de forma:


Tabloul simplex #1 Linia x1 x2 L11 1 2 L12 2 1 L13 4 3

s1 1 0 0

s2 0 1 0

f 0 0 1

b 8 10 0

Raport

Pasul 3: Determinarea celulei pivot: (3.1) Determinarea coloanei pivot: Coloana pivot este dat de valoarea cj negativ minim:
c p = min{ 4;3} = 4 .

Rezult coloana pivot corespunztoare variabilei x1. (3.2) Determinarea liniei pivot: Se determin mai nti, n ultima coloan a tabelului simplex, rapoartele:
r1 = 8 10 = 8 , r2 = = 5. 1 2

Linia pivot este dat de valoarea ri minim:

106

MODULUL6:MODELEDEOPTIMIZARE

rl = min{8;5} = 5 .

Rezult linia pivot L22. (3.3) Elementul pivot va fi: a12 = 2. Rezult tablolul simplex #2:
Tabloul simplex #2 Linia x1 x2 L21 1 2 L22 2 1 L23 4 3

s1 1 0 0

s2 0 1 0

f 0 0 1

b 8 10 0

Raport 8/1 = 8 10/2 = 5*

Pasul 4: Determinarea valorii 1 n celula pivot i a valorilor 0 n celelalte celule ale coloanei pivot: (4.1) Se mparte linia pivot la elementul pivot (dac elementul pivot este diferit de 1):

L32 := L22 / 2; (4.2) Se aplic combinaii liniare n funcie de celula pivot, astfel nct s se obin valoarea 0 n celelalte celule ale coloanei pivot: L3l := L21L32, L33 := L23 + 4L22. Rezult operaiile: Linia x1 L31 11=0 L32 2/2=1 L33 4+4=0 x2 20,5=1,5 1/2=0,5 3+2=1 s1 10=1 0/2=0 0+0=0 s2 00,5=0,5 1/2=0,5 0+2=2 f 00=0 0/2=0 1+0=1 b 85=3 10/2=5 0+20=20

Rezult tablolul simplex #3: Tabloul simplex #3 Linia x1 x2 L31 0 1,5 L32 1 0,5 L33 0 1

s1 1 0 0

s2 0,5 0,5 2

f 0 0 1

b 3 5 20

Raport 3/1,5=2* 5/0,5=10

Pasul 5: Se continu iteraiile de la Pasul 3 pn cnd se obin toate celulele pivot corespunztoare variabilelor problemei. (3.1) Determinarea coloanei pivot: Coloana pivot este dat de valoarea cj negativ minim:
c p = min{0;1} = 1 .

Rezult coloana pivot corespunztoare variabilei x2. (3.2) Determinarea liniei pivot: Se determin mai nti, n ultima coloan a tabelului simplex, rapoartele: r1 = 3 5 = 2 , r2 = = 10 . 1,5 0,5

Linia pivot este dat de valoarea ri minim:

TEMA13:METODASIMPLEXDEPROGRAMARELINIAR

107

rl = min{2;10} = 2 .

Rezult linia pivot L31. (3.3) Elementul pivot va fi: a22 = 1,5.
Pasul 4: Determinarea valorii 1 n celula pivot i a valorilor 0 n celelalte celule ale coloanei pivot: (4.1) Se mparte linia pivot la elementul pivot (dac elementul pivot este diferit de 1):

L4l := L31 / 1,5; (4.2) Se aplic combinaii liniare n funcie de celula pivot, astfel nct s se obin valoarea 0 n celelalte celule ale coloanei pivot: L42 := L32L41/2, L43 := L4l + L33. Rezult operaiile: Linia x1 x2 L41 0/1,5=0 1,5/1,5=1 L42 10/2=1 0,51/2=0 L43 0+0=0 11=0 Rezult tablolul simplex #4:
Tabloul simplex #4 Linia x1 x2 L41 0 1 L42 1 0 L43 0 0

s1 s2 1/1,5=0,67 0,5/1,5=0,33 00,67/2=0,33 0,5+0,33/2=0,67 0,67+0=0,67 0,33+2=1,67

f 0/1,5=0 00/2=0 0+1=1

b 3/1,5=2 52/2=4 2+20=22

s1 0,67 0,33 0,67

s2 0,33 0,67 1,67

f 0 0 1

b 2 4 22

Raport

Pasul 6: Avnd n vedere c toate valorile din ultima linie a tabloului simplex sunt 0 sau pozitive, s-a obinut soluia optim. Valorile optime ale variabilelor se obin n coloana termenilor liberi b, iar valoarea optim a funciei obiectiv se obine n ultima celul a tabloului simplex.

Rezult valorile optime (maxime) x1 = 4 , x2 = 2 i f = 22 .

108

MODULUL6:MODELEDEOPTIMIZARE

13.4Conceptecheie
Metoda simplex Tabloul (matricea) simplex Variabil artificial (suplimentar) Coloan pivot Linie pivot Celul pivot