Sunteți pe pagina 1din 8

Universitatea POLITEHNICA din

Bucuresti

Facultatea TRANSPORTURI

DEPARTAMENTUL TRANSPORTURI, TRAFIC SI


LOGISTICA

Referat
La Cercetari Operaționale
Cu tema : METODA SIMPLEX DE PROGRAMARE LINIARĂ

Elaborat:st.gr LT: Mastac Alexandru


Conducator: Prof.dr.mat Octav Olteanu

Bucuresti 2018
1. Concepte generale privind metoda simplex
Metodele grafice de rezolvare a problemelor de programare liniară sunt aplicabile, după cum
am văzut î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 numeşte şi simplex.
Ţinând cont că soluţiile optime ale unei probleme de programare liniară se găsesc printre vârfurile
poliedrului convex sau simplexului care reprezintă regiunea admisibilă, metoda simplex porneşte de
la un vârf sau o soluţie de bază şi trece apoi la un alt vârf care să reprezinte o soluţie mai bună.
Algoritmul metodei simplex se finanlizează în două situaţii:
(1) se obţine cea mai bună soluţie, şi se decide că problema de programare liniară are optim finit
unic sau multiplu;
(2) nu se obţine cea mai bună soluţie, pentru că această soluţie 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
întîi problema standard de maximizare:

în care avem valorile bj > 0 .


Pentru problemele de minimizare sub formă matriceală:

vom considera problema duală:


care conduce de fapt la o problemă de maximizare standard cu cerinţele definite mai sus.
De asemenea, vom considera şi cazul în care sunt restricţiile mixte, respectiv unele inecuaţii
din sistemul de restricţii sunt definite prin condiţia ≥ 0 , iar altele sunt definite prin condiţia ≤ 0 .

2. Algoritmul simplex pentru rezolvarea problemelor de programare liniară de


maximizare
Vom analiza în continuare metoda simplex pentru rezolvarea problemelor de programare
liniară de maximizare, pentru care vom aplica următorul algoritm:

Pasul 1: Determinarea funcţiei obiectiv şi a restricţiilor:

Pasul 2: Determinarea matricei sau a tabloului simplex:

(2.1) Rescriem problema de programare liniară, rescriind funcţia obiectiv şi introducând


variabilele artificiale sau suplimentare sj, care transformă inecuaţiile în ecuaţii:

(2.2) Considerăm tabloul simplex de forma:

Tabloul simplex #1
Linia x1 ... xk ... xn s1 ... st ... sn f b Raport
L11 a11 ... a1k ... a1n 1 ... 0 ... 0 0 b1
... ... ... ... ... ... ... ... ... ... ... ... ...
L1r a1r ... ark ... arn 0 ... 1 ... ... 0 br
... ... ... ... ... ... ... ... ... ... ... ... ...
L1m a1m ... amk ... amn 0 ... 0 ... 1 0 bm
L1,m+1 −c1 ... −ck ... −cn 0 ... 0 ... 0 1 0

Componentele tabloului simplex sunt următoarele:

(1) În prima coloană vom numerota liniile tabelului în funcţie de numărul tabloului, care
reprezintă de fapt numărul iteraţiilor algoritmului.
(2) Pentru variabilele suplimentare, vom considera sj = 1, iar în rest 0.

(3) În ultima linie vom înscrie valorile cu semn schimbat ale coeficienţilor funcţiei obiectiv,
apoi 0 pentru celulele corespunzătoare variabilelor suplimentare, iar în coloana
corespunzătare lui f valoarea 1.
Pasul 3: Determinarea celulei pivot:
Determinarea coloanei pivot:
Coloana pivot este dată de valoarea cj negativă minimă:

cp = min{c j }, 1 ≤ p ≤ n .
1≤ j≤n

Determinarea liniei pivot:

Se determină mai întâi, în ultima coloană a tabelului simplex, rapoartele:

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


b
rl = min 1≤i≤m a
i .
ip

Elementul pivot va fi: alp.

Tabloul simplex #2
Linia x1 ... xp ... xn s1 ... st ... sn f b Raport
b a
L21 a11 ... a1p ... a1n 1 ... 0 ... 0 0 b1 1 1p

... ... ... ... ... ... ... ... ... ... ... ... ... ...
L2l a1l ... alp ... aln 0 ... 1 ... ... 0 bl bl a1l *
... ... ... ... ... ... ... ... ... ... ... ... ... ...
a
L2m a1m ... amp ... amn 0 ... 0 ... 1 0 bm bm mp

L2,m+1 −c1 ... −cp ... −cn 0 ... 0 ... 0 1 0

Pasul 4: Determinarea valorii 1 în celula pivot şi a valorilor 0 în celelalte celule ale


coloanei pivot:

Se împarte linia pivot la elementul pivot (dacă elementul pivot este diferit de 1):

Se aplic ă combinaţii liniare în funcţie de celula pivot, astfel încât să se obţină


valoarea 0 în celelalte celule ale coloanei pivot:

Pasul 5: Se continuă iteraţiile de la Pasul 3 până când se obţin toate celulele pivot
corespunzătoare variabilelor problemei.
Pasul 6: Dacă toate valorile din ultima linie a tabloului simplex sunt 0 sau pozitive, s-a
obţinut solu ţia optim ă. Valorile optime ale variabilelor se obţin în coloana termenilor
liberi b, iar valoarea optimă a funcţiei obiectiv se obţine în ultima celulă a tabloului
simplex.
Dacă obţinem celule pivot corespunzătoare variabilelor suplimentare, atunci problema
de programare liniară nu are soluţie unică.

Dacă după determinare tuturor celulelor pivot corespunzătoare variabilelor problemei în


ultima linie a tabelului simplex există valori negative, atunci problema de programare liniară
nu are soluţie optimă.
Exemplu:
Să se aplice algoritmul simplex pentru rezolvarea problemei de programare liniară:

y≥0

Rezolvare: Vom aplica algoritmul simplex descris anterior.


Pasul 1: Determinarea funcţiei obiectiv şi a restricţiilor:

y≥0

Pasul 2: Determinarea matricei sau a tabloului simplex:


Rescriem problema de programare liniară, rescriind funcţia obiectiv şi introducând
variabilele artificiale sau suplimentare s1 şi s2, care transformă inecuaţiile în ecuaţii:
[max] − 4x − 3y + f = 0
x + 2 y + s1 = 8

Considerăm tabloul simplex de forma:

Tabloul simplex #1
Linia x1 x2 s1 s2 f b Raport
L11 1 2 1 0 0 8
L12 2 1 0 1 0 10
L13 −4 −3 0 0 1 0
Pasul 3: Determinarea celulei pivot:

Determinarea coloanei pivot:


Coloana pivot este dată de valoarea cj negativă minimă:

Rezultă coloana pivot corespunzătoare variabilei x1.

Determinarea liniei pivot:


Se determină mai întâi, în ultima coloană a tabelului simplex, rapoartele:

Linia pivot este dată de valoarea ri minimă:


rl = min{8;5}= 5 .
Rezultă linia pivot L22.
Elementul pivot va fi: a12 = 2.
Rezultă tablolul simplex #2:

Tabloul simplex #2
Linia x1 x2 s1 s2 f b Raport
L21 1 2 1 0 0 8 8/1 = 8
L22 2 1 0 1 0 10 10/2 = 5*
L23 −4 −3 0 0 1 0

Pasul 4: Determinarea valorii 1 în celula pivot şi a valorilor 0 în celelalte celule ale


coloanei pivot:
Se împarte linia pivot la elementul pivot (dacă elementul pivot este diferit de 1):
L32 := L22 / 2;
Se aplică combinaţii liniare în funcţie de celula pivot, astfel încât să se obţină valoarea
0 în celelalte celule ale coloanei pivot:
L3l := L21−L32, L33 := L23 + 4L22.
Rezultă operaţiile:
Linia x1 x2 s1 s2 f b
L31 1−1=0 2−0,5=1,5 1−0=1 0−0,5=−0,5 0−0=0 8−5=3
L32 2/2=1 1/2=0,5 0/2=0 1/2=0,5 0/2=0 10/2=5
L33 −4+4=0 −3+2=−1 0+0=0 0+2=2 1+0=1 0+20=20

Rezultă tablolul simplex #3:


Tabloul simplex #3
Linia x1 x2 s1 s2 f b Raport
L31 0 1,5 1 −0,5 0 3 3/1,5=2*
L32 1 0,5 0 0,5 0 5 5/0,5=10
L33 0 −1 0 2 1 20
Pasul 5: Se continuă iteraţiile de la Pasul 3 până când se obţin toate celulele pivot
corespunzătoare variabilelor problemei.

Determinarea coloanei pivot:


Coloana pivot este dată de valoarea cj negativă minimă:

Rezultă coloana pivot corespunzătoare variabilei x2.


Determinarea liniei pivot:
Se determină mai întâi, în ultima coloană a tabelului simplex, rapoartele:

Linia pivot este dată de valoarea ri minimă:

Rezultă linia pivot L31.


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:

Se împarte linia pivot la elementul pivot (dacă elementul pivot este diferit de 1):
L4l := L31 / 1,5;
Se aplică combinaţii liniare în funcţie de celula pivot, astfel încât să se obţină valoarea
0 în celelalte celule ale coloanei pivot:
L42 := L32−L41/2, L43 := L4l + L33.
Rezultă operaţiile:
Linia x1 x2 s1 s2 f b
L41 0/1,5=0 1,5/1,5=1 1/1,5=0,67 −0,5/1,5=−0,33 0/1,5=0 3/1,5=2
L42 1−0/2=1 0,5−1/2=0 0−0,67/2=−0,33 0,5+0,33/2=0,67 0−0/2=0 5−2/2=4
L43 0+0=0 1−1=0 0,67+0=0,67 −0,33+2=1,67 0+1=1 2+20=22

Rezultă tablolul simplex #4:

Tabloul simplex #4
Linia x1 x2 s1 s2 f b Raport
L41 0 1 0,67 −0,33 0 2
L42 1 0 −0,33 0,67 0 4
L43 0 0 0,67 1,67 1 22

Pasul 6: Având în vedere că toate valorile din ultima linie a tabloului simplex sunt 0 sau
pozitive, s-a obţinut soluţia optimă. Valorile optime ale variabilelor se obţin în coloana
termenilor liberi b, iar valoarea optimă a funcţiei obiectiv se obţine în ultima celulă a tabloului
simplex.
Rezultă valorile optime (maxime) x1 = 4 , x2 = 2 şi f = 22 .

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