Sunteți pe pagina 1din 11

Algoritmul simplex

1
METODE NUMERICE Curs i aplicaii


Unitatea de nvare nr. 12
Algoritmul simplex.

Cuprins Pagina

Obiectivele unitii de nvare nr. 12 2
12.1 Algoritmul simplex primal 2
12.2 Metoda celor dou faze 5
12.3 Lucrare de laborator 8
Lucrare de verificare unitatea de nvare nr. 12 10
Rspunsuri i comentarii la ntrebrile din testele de autoevaluare 10
Bibliografie unitatea de nvare nr. 12 11







Algoritmul simplex

2
METODE NUMERICE Curs i aplicaii

OBIECTIVELE unitii de nvare nr. 12

Principalele obiective ale Unitii de nvare nr. 12 sunt:
Determinarea unei baze admisibile
Aplicarea algoritmului simplex pentru determinarea programului
optim de baz i a optimului funciei obiectiv i verificarea
rezultatelor
Interpretarea rezultatelor din punct de vedere economic i luarea
deciziei optime n plan economic

12.1 Al goritmul simplex primal

Pentru rezolvarea problemelor de programare liniar s-a impus algoritmul simplex datorat
matematicianului american G.B. DANTZIG (1951). Metoda simplex garanteaz convergena
procesului iterativ n sensul c o baz admisibil cercetat la un moment dat nu mai revine n iteraiile
ulterioare. Cum numrul bazelor este finit, urmeaz ca ntr-un numr finit de pai s ajungem fie la
soluia optim fie la concluzia c programul are optim infinit.
Metoda permite explorarea sistematic a mulimii programelor prin trecerea de la un program
de baz la alt program de baz vecin care este cel puin la fel de bun ca programul iniial i pentru
aceasta trebuie s parcurgem etapele:

1- Trecem problema de programare liniar n forma standard:
( )
max(min)
0
T
z c x
A x b
x

, unde
,
( )
m n
A M R ,
1
1
( )
ij i m
j n
A a


= ,
1
2
...
m
m
b
b
b R
b
| |
|
|
=
|
|
\ .
, ( )
1
2
1 2
...
...
n T
n
n
c
c
c R c c c c
c
| |
|
|
= =
|
|
\ .
,
T
z c x = ,
1
2
...
n
n
x
x
x R
x
| |
|
|
=
|
|
\ .
.

2- Se determina B-baza primal admisibil
B este o baza a lui A format din m coloane ale lui A,
1 2
1 2
( ... ) ( ... )
m
i i i n
A a a a B a a a = = cu
det 0 B , B
{ }
/
i
i a B = , S
{ }
/
i
i a S = , ( ) A BS = i
1
0 B b

(primal admisibil).
Observaie: Iniial se pleac cu baza format din vectori unitari,
m
B I = , i n acest pas coordonatele
vectorilor
j
a coincid cu componentele lor pe coloanele A i ,n plus,
1
B
x B b b

= = .

3- Se formeaz tabelul simplex n care se trec:

Algoritmul simplex

3
METODE NUMERICE Curs i aplicaii



a)
1
B
x B b

= - soluia sistemului n care am fcut 0


S
x = (ceea ce nu face parte din baz);
b)
B
B B B
T
i
B i
i
z c x c x

= =

;
c)
1
,
B j
j
y B a j

= B S, iar cnd
m
B I = ,
B
j
y sunt chiar coeficienii din sistem;
d)
,
, 1,
0,
B B
j j i ij j
T B
i
B j j
B
j j
z c c y c j S
c y c j n
z c j

= =

.

4- TESTUL DE OPTIMALITATE

Daca 0
B
j j
z c n problema de max, respectiv 0 n problema de min, pentru orice
1, j n = , atunci problema are optim finit. Soluia optim este
( )
1
,0
B
x B b

= , iar valoarea optim a


funciei obiectiv este
B B
T
B
z c x = . n caz contrar se continu algoritmul.

5- TESTUL PENTRU INFINITITUDINEA SOLUIEI

Dac exist j pentru care 0
B
j j
z c < n problema de max, respectiv 0 > n problema de
min, i ( ) 0,
ij
y i , atunci problema are optim infinit. n caz contrar se continu algoritmul.

6- CRITERIUL DE MBUNTIRE A SOLUIEI

Dac exist j astfel nct 0
B
j j
z c < n problema de max, respectiv 0 > n problema de
min, i 0
ij
y > , atunci soluia se mbuntete astfel:

a) CRITERIUL DE INTRARE N BAZ

Variabilele
din baza
B
x
Val. var. din
baza
B
x
1
c
2
c
3
c
.......
n
c
B
c
1
x
2
x
3
x
.......
n
x
1
c
2
c




m
i
c
1
2
.
.
.
m
i
i
i
x
x
x




1
B
x B b

=



1
B
y



2
B
y



3
B
y



.......



B
n
y

B
z 1 1
B
z c
2 2
B
z c
3 3
B
z c
.......
B
n n
z c
Algoritmul simplex

4
METODE NUMERICE Curs i aplicaii

Intr n baz
k
a , cu k stabilit astfel nct min( )
B B
k k j j
j
z c z c = pentru problema de max,
respectiv max( )
B B
k k j j
j
z c z c = pentru problema de min.

b) CRITERIUL DE IEIRE DIN BAZ

Iese din baz
l
a , cu l stabilit astfel nct
0
min
ik
B B
l i
B B
i
lk ik
y
x x
y y

>
= indiferent dac este o cerin de
max sau de min.

7. - Se construiete o nou baza
{ } ( ) { }
\
l k
B B a a = i relum algoritmul corespunztor noii baze cu
un nou tabel simplex. Trecerea la noua baz se face astfel:
a) Linia pivotului se mparte la pivot (
B
lk
y );
b) Coloana pivotului se completeaz cu 0, doar pe locul pivotului rmnnd valoarea 1;
c) Toate celelalte elemente se determina cu regula dreptunghiului
...
. .
...
a p
x b
,
xp ab ab
x x
p p

= .

Observaii: i) Orice coloan a tabelului care conine 0 pe linia pivotului rmne neschimbat;
ii) Orice linie a tabelului care conine 0 pe coloana pivotului rmne neschimbat.

Exemplu:
1 2
1 2
1 2
1 2
1 2
max(3 4 )
4 28
3 21
10
, 0
x x
x x
x x
x x
x x
+

.
Aducem problema la forma standard:
1 2
1 2 3
1 2 4
1 2 5
max(3 4 )
4 28
3 21
10
0, 1,5
i
x x
x x x
x x x
x x x
x i

+ + =

+ + =

+ + =

,
3 4 5
, , x x x variabile ecart. Scriem matricea
sistemului,
1 4 1 0 0
3 1 0 1 0
1 1 0 0 1
A
| |
|
=
|
|
\ .
de unde avem:
3
1 0 0
0 1 0
0 0 1
B I
| |
|
= =
|
|
\ .
i cum
28
21 0
10
b
| |
|
= >
|
|
\ .
,
1
0 B b b

= > , deci avem baz primal admisibil.



Algoritmul simplex

5
METODE NUMERICE Curs i aplicaii


Se formeaz tabelul simplex :
Fiind o problem de max, din testul de optim 4,
toate valorile de pe ultima linie trebuie s fie 0 ,
alegem min{-3,-4}=-4 ceea ce nseamn c
2
x
intr n baz. Indiferent de cerina problemei, se
alege min{28/4;21/3;10/1}=7, adic
3
x iese din
baz i obinem pivotul 4. Aplicm cele trei
reguli ale etapei 7 i obinem noul tabel.
n ultima linie a tabelului doi vedem c mai exist
o valoare care nu respect testul de optim 4 i
trebuie s repetm etapele. -2 fiind singura
valoare negativ,
1
x intr n noua baz i
min{
7
1/ 4
,
14
11/ 4
,
3
3/ 4
}=4, adic
5
x iese din
baz, obinndu-se noul pivot 3/4. Aplicm din
nou cele trei reguli ale pivotului i obinem
urmtorul tabel.
Se observ din ultima linie a tabelului c
toate valorile respect testul de optim 4, deci
valoarea maxim este 36 i se obine pentru
(4,6,0,3,0).

12.2 Metoda celor dou faze

Determinarea unei baze primal admisibile la etapa 2 a algoritmului simplex constituie uneori o
parte important a rezolvrii modelului, pentru care exist metode speciale ca metoda celor doua faze
sau metoda bazei artificiale.
Nu se aleg la ntmplare m coloane din cele n ale matricei A, pentru c ele ar putea fi liniar
dependente sau soluia de baz corespunztoare ar putea fi neadmisibil. n cazul n care nu exist o
baz iniial se construiete o problem auxiliar derivat din problema dat i care va furniza o baz
de nceput pentru problema dat.
Fie problema de programare liniar n forma standard (PPL1)
max(min)
0
T
c x
Ax b
x

.
- presupunem 0 b , n caz contrar se nmulete cu -1 ecuaia al crei termen liber este negativ;
- scriem coloanele matricei A i se pun n eviden vectorii unitate (0,...,1,...0)
i T
e = care se
gsesc printre coloanele ei;
- dac exist toi cei m vectori unitari , 1,
i
e i m = , atunci acetia formeaz o baza
m
B I = care este
i primal admisibil pentru c
1
0 B b b

= ;
- dac nu exist toi cei m vectori unitari, vom introduce unele variabile suplimentare numite i
variabile artificiale, totdeauna cu coeficientul 1, n anumite restricii, convenabil alese, pn
B
c

B
x
B
x
3 4 0 0 0
1
x
2
x

3
x
4
x
5
x
0
3
x


28 1 4 1 0 0
0
4
x
21 3 1 0 1 0
0
5
x
10 1 1 0 0 1
0 -3 -4 0 0 0
4
2
x
7 1/4 1 1/4 0 0
0
4
x
14 11/4 0 -1/4 1 0
0
5
x
3 3/4 0 -1/4 0 1
28 -2 0 1 0 0

2
x
6 0 1 1/3 0 -1/3

4
x
3 0 0 2/3 1 -11/3

1
x
4 1 0 -1/3 0 4/3
36 0 0 1/3 0 8/3
Algoritmul simplex

6
METODE NUMERICE Curs i aplicaii

cnd matricea sistemului de restricii conine m vectori unitari, obinndu-se astfel un model
extins.

Observaie: Pentru a putea extrage din soluia modelului extins o soluie pentru modelul dat trebuie
ca, n aceast soluie, variabilele artificiale s ia valoarea zero. Astfel, vom cuta s form
anularea variabilelor artificiale ntr-o prima faz de rezolvare n care considerm drept funcie
obiectiv, suma tuturor variabilelor artificiale, care trebuie s devin minim: (PPL2)
1 2
min( ... )
0, 0
a a a
n n n m
a
a
x x x
Ax x b
x x
+ + +
+ +

+ =


unde , 1,
a
n i
x i m
+
= sunt variabile artificiale.
- se aplic algoritmul simplex primal modelului extins, lund 0, 0
a
x x b = = , iar dac se ajunge
la o soluie optim a modelului extins, fr ca toate variabilele artificiale s aib valori nule n
aceasta soluie, atunci prima problema este imposibil.
Concluzie:
cazul I:
1 2
min( ... )
a a a
n n n m
x x x
+ + +
+ + >0 , atunci (PPL1) nu are soluie;
cazul II:
1 2
min( ... )
a a a
n n n m
x x x
+ + +
+ + =0, adic dup prima faz valoarea funciei obiectiv este nul,
atunci ultima baz (cea optim pentru PPL2) se va folosi ca baz de nceput pentru PPL1.
Putem avea una din situaiile:
a) n baza exist variabile artificiale (evident cu valoarea zero), atunci:
i) ele pot fi eliminate printr-o noua iteraie lund pivot orice element nenul de pe linia
corespunztoare acelei variabile artificiale;
ii) nu pot fi eliminate neavnd pivot, atunci se suprim liniile din tabel corespunztoare
acestor variabile artificiale.
b) Nu exist variabile artificiale n baza optim i atunci se trece la faza a doua, i anume, la
rezolvarea PPL1 pornind de la ultimul tabel simplex n care se modific coeficienii funciei
obiectiv.
Observaii:
1) Deoarece valorile variabilelor artificiale trebuie s fie nule, orice variabil artificial care a ieit
din baz nu va mai fi cercetat pentru o eventual introducere n baz;
2) Dup un numr de iteraii i ncheierea fazei nti se vor calcula elementele liniei
B
j j
z c
corespunztoare funciei obiectiv a fazei a doua ,deci pentru PPL1, dup care se continu cu
iteraiile.
Exemplu:
1 2 3
1 2 3 4
1 2 3 5
2 3 6
max(5 5 4 )
60
2 3 90
2 40
0, 1,6
i
x x x
x x x x
x x x x
x x x
x i

+ +

+ + + =

+ + =

+ =

,
Algoritmul simplex

7
METODE NUMERICE Curs i aplicaii


1 2 3 4 5 6
1 1 1 1 0 0
2 1 3 0 1 0
0 1 2 0 0 1
x x x x x x
A
| |
|
|
=
|

|
\ .

Avem una din coloanele matricei unitate, deci trebuie s le construim pe celelalte dou, introducnd
dou variabile artificiale
7 8
,
a a
x x . Trecem la faza nti cu problema de minim:
Faza I)
7 8
1 2 3 4
1 2 3 5 7
2 3 6 8
7 8
min( )
60
2 3 90
2 40
0, 1,6, , 0
a a
a
a
a a
i
x x
x x x x
x x x x x
x x x x
x i x x

+ + + =

+ + + =

+ + =

,
1 2 3 4 5 6 7 8
1 1 1 1 0 0 0 0
2 1 3 0 1 0 1 0
0 1 2 0 0 1 0 1
a a
x x x x x x x x
A
| |
|
|
=
|
|
|
\ .

Se observ coloanele matricei unitate de ordin trei deci putem s trecem la aplicarea algoritmului
simplex pentru aceasta prim faza, n cazul problemei de minim.
B
c
B
x
B
x
5 5 4 0 0 0 0 0
0 0 0 0 0 0 1 1
1
x
2
x
3
x
4
x
5
x
6
x
7
a
x
8
a
x
0
4
x
60 1 1 1 1 0 0 0 0
1
7
a
x
90 2 1 3 0 -1 0 1 0
1
8
a
x
40 0 1 2 0 0 -1 0 1
130 2 2 5 0 -1 -1 0 0
0
4
x
40 1 1/2 0 1 0 1/2 0 -1/2
1
7
a
x
30 2 -1/2 0 0 -1 3/2 1 -3/2
0
3
x
20 0 1/2 1 0 0 -1/2 0 1/2
30 2 -1/2 0 0 -1 3/2 0 -5/2
0 0
4
x
25 0 3/4 0 1 1/2 -1/4 -1/2 1/4
5 0
1
x
15 1 -1/4 0 0 -1/2 3/4 1/2 -3/4
4 0
3
x
20 0 1/2 1 0 0 -1/2 0 1/2
0 0 0 0 0 0 0 -1 -2
FAZA
II
155 0 -17/4 0 0 -5/2 7/4 - -
5
2
x
100/3 0 1 0 4/3 2/3 -1/3 - -
5
1
x
70/3 1 0 0 1/3 -1/3 2/3 - -
4
3
x
10/3 0 0 1 -2/3 -1/3 -1/3 - -
890/3 0 0 0 17/3 1/3 1/3 - -


Algoritmul simplex

8
METODE NUMERICE Curs i aplicaii

12.3 Lucrare de laborator

Pentru rezolvarea problemelor de programare liniar cu ajutorului Matlab-ului folosim comanda
[x,fval]=linprog(f,A,b), unde f este un vector linie ce conine coeficienii funciei obiectiv, A este
matricea coeficienilor variabilelor, iar b este vectorul coloan a termenilor liberi. Comanda rezolv
doar problemele de tipul
( )


=
0
min
x
b x A
x C f
.
Exemplu:
1 2
1 2
1 2
1 2
1 2
max(3 4 )
4 28
3 21
10
, 0
x x
x x
x x
x x
x x
+

.
Determinm ( )
2 1
4 3 min x x + .
>>f=[-3; -4]
f =
-3
-4
>>a=[1 4;3 1; 1 1]
a =
1 4
3 1
1 1
>>b=[28;21;10]
b =
28
21
10
>>lb=zeros(2,1)
lb=
0
0
>>[x,fval]=linprog(f,a,b,lb)
Optimization terminated.
x =
4.0000
6.0000
fval =
-36.0000.
Astfel s-a obinut soluia 4
1
= x , 6
2
= x i 36 max = f .
Pentru problemele de tipul
( )


=

=
ub x lb
beq x Aeq
b x A
x C f min
, folosim comanda: [x,fval]=linprog(f,A,b,Aeq,beq,lb,ub).

Algoritmul simplex

9
METODE NUMERICE Curs i aplicaii

Exemplu: ( )
3 2 1
2 3 max x x x +


+ +
+
= +
0 , 0 , 0
7 3 4
5 2 3
3 2 2
3 2 1
3 2 1
3 2 1
3 2 1
x x x
x x x
x x x
x x x
.
Rescriem problema astfel nct s putem extrage vectorii i matricele necesare comenzii:
( )
3 2 1
2 3 min x x x +



+
= +
0 , 0 , 0
7 3 4
5 2 3
3 2 2
3 2 1
3 2 1
3 2 1
3 2 1
x x x
x x x
x x x
x x x
.
>>f=[-1; -3; 2]
f =
-1
-3
2
>>a=[1 3 -2;1 -4 -3]
a =
1 3 -2
1 -4 -3
>>b=[5;-7]
b =
5
-7
>>aeq=[2 2 -1]
aeq =
2 2 -1
>>beq=[3]
beq =
3
>>lb=zeros(3,1)
lb =
0
0
0
>>[x,fval]=linprog(f,a,b,aeq,beq,lb)
Optimization terminated.
x =
0.0000
1.6000
0.2000
fval =
-4.4000.
Soluia obinut este: 0
1
= x , 6 . 1
2
= x , 2 . 0
3
= x i 4 . 4 max = f

Algoritmul simplex

10
METODE NUMERICE Curs i aplicaii


De reinut!

Etapele celor dou metode.



Test de autoevaluare

S se rezolve problemele:
a) ( )
1 2
max x x b) ( )
3 2 1
3 min x x x +


+
+ =
0 , 0
2
5 3
2 1
2 1
2 1
x x
x x
x x


+ +
+
0 , 0 , 0
7 3 2
5 5
3 2 1
3 2 1
3 2 1
x x x
x x x
x x x



Lucrare de verificare la Unitatea de nvare nr. 12

S se problema de programare liniar:
( )
3 2 1
3 5 2 max x x x +


+ +
+
+
0 , 0 , 0
7 3 4
5 2 3
3 2
3 2 1
3 2 1
3 2 1
3 2 1
x x x
x x x
x x x
x x x




Rspunsuri i comentarii la ntrebrile din testele de
autoevaluare

a)
4
7
1
= x ,
4
1
2
= x ,
2
3
max = f
b)
11
17
1
= x ,
11
30
2
= x , 0
3
= x ,
11
21
min = f



Recapitulare

1. Trecem problema de programare liniar n forma standard
2. Se determina B-baza primal admisibil
3. Se formeaz tabelul simplex
4. Testul de optimalitate
5. Testul pentru infinitudinea soluiei
6. Criteriul de mbuntire a soluiei
7. Se construiete o nou baz i relum algoritmul corespunztor
noii baze cu un nou tabel simplex

Algoritmul simplex

11
METODE NUMERICE Curs i aplicaii



Concluzii

Pentru rezolvarea modelelor liniare, au aprut, ncepnd cu 1948, mai multe
metode, dintre care amintim: metoda simplex cu variantele sale, metoda
Kantorovici, metoda relaxrii. Dintre toate metodele aprute n literatura de
specialitate, cea mai rspndit este cea elaborat de G. B. Dantzig.
Algoritmul propus de Dantzig permite determinarea unei soluii admisibile
de baz optime, dac exist, prin examinarea parial dirijat a mulimii
soluiilor admisibile de baz; mai precis, vor fi testate o parte din soluiile
admisibile de baz. n mod empiric, pe baza unor experiene de calcul efectuate
timp de 10 ani, s-a stabilit c soluia optim, dac exist, se obine dup cel
mult 3m iteraii (m =rangA). Fiecare dintre aceste noi iteraii const n gsirea
unei noi soluii admisibile de baz creia i corespunde o valoare mai bun a
funciei obiectiv dect n situaia precedent.




Bibliografie

1. Constantinescu Eliodor, Mihai Bogdan, Matlab. Caiet de laborator, Editura
Crizon, Constana, 2008
2. Pelican Elena, Analiz numeric. Complemente, exerciii i probleme.
Programe de calcul, Editura MatrixRom, Bucureti, 2006

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