Sunteți pe pagina 1din 7

1/7

REZOLVAREA PROBLEMELOR DE PROGRAMARE LINIAR



FUNDAMENTELE ALGORITMULUI SIMPLEX

Considerm problema de programare liniar sub forma standard:

min (max) (z = cx)
Ax = b (1)
x 0
unde
A M
m,n
(R), b R
m
, c R
n
, x R
n
.

Astfel, matricea A are m linii i n coloane, corespunztoare celor m restricii i,
respectiv, celor n variabile.
Presupunem n plus c liniile matricei A sunt liniar independente. Aceast
condiie se scrie rang(A) = m, cu m n. Pentru calcule, aceast concluzie corespunde
cazului n care exist un minor nenul de grad m i toi minorii de grad mai mare dect m
sunt nuli.
In cazul m=n, problema de optimizare este trivial deoarece sistemul de
restricii este unic determinat, mulimea programelor are un singur element i, n
consecin, nu se pune poate problema optimizrii valorii funciei obiectiv pe mulimea
programelor.
In continuare, lum n discuie cazul m<n.
n detaliu, problema (1) devine:
min (max) (z =
j
n
j
j
x c

=1
)

= + + +
= + + +
= + + +
m n mn m m
n n
n n
b x a x a x a
b x a x a x a
b x a x a x a
...
... .......... .......... ..........
...
...
2 2 1 1
2 2 2 22 1 21
1 1 2 12 1 11
(2)
0 ,... ,
2 1

n
x x x .

Definiii
(i) Vectorul x R
n
se numete program al problemei (1) dac satisface
sistemul de restricii, deci dac Ax = b, x 0.
(ii) Programul x se numete program de baz al problemei (1) dac
coloanele matricei A, corespunztoare componentelor nenule ale lui x sunt
liniar independente.
2/7
(iii) Programul de baz x se numete nedegenerat dac are exact m
componente nenule i degenerat n caz contrar.
(iv) Se numete program optim al problemei (1) un program care confer
funciei obiectiv valoarea optim.
Notm cu P i respectiv cu S mulimea programelor, respectiv mulimea
programelor optime ale problemei (1):



=
= =
}. max , , ' ' | {
} min , , ' ' | {
}; 0 , | {
imizare de este problema dac P x x c x c P x
imizare de este problema dac P x x c x c P x
S
x b Ax R x P
n


Observaii.
1. Deoarece rangul matricei A este m, rezult c nu pot exista mai mult de m
vectori liniar independeni alei dintre liniile matricei A, deci, un program de
baz are cel mult m componente nenule. Dac programul de baz are exact
m componente nenule, programul este nedegenerat i se poate trece la
rezolvarea problemei prin aplicarea algoritmului simplex; altfel (adic avem
mai puin de m componente nenule) programul este degenerat i se aplic
metode specifice de rezolvare (vezi, n continuare, degenerare i ciclare).
2. Definiiile anterioare arat c este baz orice matrice ptratic, nesingular,
de rang m, submatrice a matricei A. Notm aceast submatrice cu B i
partiionm matricea A sub forma A = ( B S ), unde coloanele lui B dau rangul
matricei A i celelalte coloane din A, numite coloane secundare, sunt
cuprinse n submatricea S.
3. Corespunztor partiionrii matricei A, prelum indicii liniilor din baz i
partiionm vectorul x al variabilelor astfel:
x
x
x
B
S
=
|
\

|
In consecin, sistemul de restricii n form standard Ax = b, se scrie:
b
x
x
S B
S
B
=
|
|

\
|
) ( <=> b Sx Bx
S B
= + <=> b B Sx B Bx B
S B 1 1 1
= + <=>
<=> b B Sx B x
S B 1 1
= + <=>
S B
x S B b B x
1 1
=
(3)
Notm
B
x =B
-1
b 0 i S B j a B y
j B
j
=

,
1
, unde
j
a este coloana j din A,
n j
m i
j
i
a A
, 1
, 1
) (
=
=
= i mulimile de indici sunt:
B i pentru } | } ,..., 2 , 1 { { B din i coloana este a n i i
i
i
S j pentru } | } ,..., 2 , 1 { { S din j coloana este a n j j
j
.
Cu aceste notaii, expresia (*) se scrie detaliat:
B i x y x x
S
j
S j
B
ij
B
i
B
i
=

,
(4)
3/7
4. n baza relaiei (3) funcia obiectiv poate fi exprimat numai cu ajutorul
variabilelor secundare astfel:

= + = + = = =

B i S j
S
j j
S j
S
j
B
ij
B
i i
S
j
S j
j
B
i
B i
i
S B
x c x y x c x c x c x x c x c z ) ( ) (


=
S j B i
S
j j
B
ij i
B i
B
i i
x c y c x c ) (
Folosind notaiile:
B
i
B i
i
B
x c z

= i
B
ij
B i
i
B
j
y c z

= (5)
obinem:

=
S j
S
j j
B
j
B
x c z z z ) (
(6)
unde
B
z reprezint valoarea funciei obiectiv pentru baza B (la iteraia curent).
Conform notaiilor anterioare, avem:

B j c
S j A B c
z
j
j B
j
,
, ) (
1
.
Fie acum x un program de baz corespunztor bazei B, adic x B b
B
=
1
, cu
0
1

b B i sub-vectorul variabilelor secundare nule . 0 =


S
x
Presupunem n cele ce urmeaz c 0
1

b B i c problema (1) este problem


de minimizare. Enunm rezultatele specifice pentru fundamentarea algoritmului
simplex de rezolvare a PPL.
Algoritmul generic este:
1. determin un program de baz
2. testeaz optimalitatea
dac programul curent nu este optim
atunci aplic mbuntire
pn cnd se ntlnete o condiie de oprire
Teorema 1. Test de optimalitate
Dac ] 0 [ ) , 1 ( =
j
B
j
c z n j , atunci:
problema de programare liniar (1) are optim finit;
B este baz optim;
un program optim este
|
|

\
|
=
0

B
x
x ;
iar valoarea optim a funciei obiectiv este z
B
.
Demonstraie. Din (6), deoarece S j c z
j
B
j
, 0 i S j x
S
j
, 0 rezult c
B
z z . Problema fiind de minimizare, se caut valoarea cea mai mic pentru z, obinut
4/7
prin
B
z . Rezult c B este baz optim, valoarea curent z
B
a funciei obiectiv este
optim i programul curent
|
|

\
|
=
|
|

\
|
=

0 0

1
b B x
x
B
este optim.
Teorema 2. Teorema de mbuntire
Dac ) ( S k ] 0 [ >
k
B
k
c z atunci programul asociat bazei B nu este optim (cu
excepia, eventual, a cazului cnd programul este degenerat). In acest caz, programul
curent poate fi mbuntit dac x
k
S
> 0.
Demonstraie. Din (7), innd cont de faptul c 0 >
S
k
x i z c
k
B
k
> 0, rezult:
B S
k k
B
k
B
z x c z z z < = ) ( ,
ceea ce arat c valoarea curent a funciei obiectiv,
B
z , nu este minim (exist
valoarea
B
z z < ). In consecin, baza curent B nu este optim, existnd o baz mai
bun care se obine din baza B prin introducerea n baz a indicelui k al coloanei a
k
a
matricei A a coeficienilor, respectiv indicele variabilei x
k
.
Pentru aplicarea algoritmului simplex, spunem c variabila de indice k intr n
baz.
Teorema 3. Criteriul de mbuntire a programului curent
Dac ) ( S k ] 0 [ >
k
B
k
c z i dac ) ( B i ] 0 [ >
B
ik
y , atunci x
k
S
poate crete pn
la valoarea:
B
lk
B
l
B
ik
B
i
y
B i
y
x
y
x
B
ik
=
)
`

>

0
min (7)
Demonstraie. Datorit condiiei y
ik
B
> 0, creterea lui x
k
S
este limitat de minimul
menionat n enun. Aceasta deoarece, pentru a nu iei din domeniul programelor,
adic pentru ca B i x
B
i
, 0 , din (4) rezult c trebuie s avem 0 =
S
k
B
ik
B
i
B
i
x y x x ,
adic, ] 0 )[ ( , >
B
ik B
ik
B
i S
k
y B i
y
x
x .
Notm cu l indicele din B care confer raportului aceast valoare minim.
Rezult c creterea valorii x
k
S
este mrginit de valoarea
B
lk
B
l
B
ik
B
i
y
B i
y
x
y
x
B
ik
=
)
`

>

0
min .
Imbuntim programul curent prin schimbarea de baz } { } {
~
k l
a a B B + = .
Alegerea indicilor k i l asigur c valoarea funciei obiectiv scade de la evaluarea pe
programul corespunztor bazei B la evaluarea pe programul corespunztor bazei B
~
.
Pentru aplicarea algoritmului simplex, spunem c variabila de indice l iese n
baz.
Teorema 4. Criteriul de recunoatere a optimului infinit
Dac exist ) ( S k ] 0 [ >
k
B
k
c z i dac ) ( B i ] 0 [
B
ik
y , atunci problema are
optim infinit (- ).
5/7
Demonstraie. Din (4) avem 0 =
S
k
B
ik
B
i
B
i
x y x x , adic
B
ik
B
i S
k
y
x
x deoarece
] 0 )[ ( <
B
ik
y B i . Deci
S
k
x poate crete nemrginit (
S
k
x ). Din (6) i condiia
0 >
k
B
k
c z rezult c
S
k k
B
k
B
x c z z z ) ( = , cu z .
n cazul n care problema (1) este de maximizare, teoremele 1 - 4 anterioare
devin:
Teorema 1. Dac ] 0 [ ) , 1 ( =
j
B
j
c z n j atunci problema de programare liniar
(1) are optim finit, baza B este baz optim, programul
|
|

\
|
=
0

B
x
x este optim, iar
valoarea optim a funciei obiectiv este z
B
.
Teorema 2. Dac ) ( S k ] 0 [ <
k
B
k
c z atunci programul asociat bazei B nu este
optim (cu excepia, eventual, a cazului cnd programul este degenerat). In acest caz
programul curent poate fi mbuntit dac x
k
S
> 0.
Teorema 3. Dac ) ( S k ] 0 [ <
k
B
k
c z i dac ) ( B i ] 0 [ >
B
ik
y atunci x
k
S
poate
creste pn la valoarea:
B
lk
B
l
B
ik
B
i
y i
y
x
y
x
B
ik
=
)
`

>0 /
min
pentru care se obine un nou program de baz asociat bazei
~
{ } { } . B B a a
l k
= +
Teorema 4. Dac ) ( S k ] 0 [ <
k
B
k
c z i dac ) ( B i ] 0 [
B
ik
y atunci problema
are optim infinit (+).
Observaie. Pentru aplicarea algoritmului simplex, oricrei baze B i se
asociaz sistemul de valori:
) ( ), , ( , ), ( S B j pentru c z S B j B i pentru y z B i pentru x
j
B
j
B
ij
B B
i
.
Aceste valori se trec ntr-un tabel, numit tabel simplex, de forma urmtoare:

c
1
c
l
c
m
c
m+1
c
k
c
n

VB VVB x
1
x
l
x
m
x
m+1

x
k
INTR
x
n
c
1
x
1
B
x
1
1 0 0
B
m
y
1 , 1 +

B
k
y
1

B
n
y
1


c
l
x
l
IESE
B
l
x 0 1 0
B
m l
y
1 , +

B
lk
y
B
n l
y

c
m
x
m
B
m
x 0 0 1
B
m m
y
1 , +

B
mk
y
B
mn
y

B
z
0 0 0 0
1 1 + +

m
B
m
c z

k
B
k
c z

n
B
n
c z

Am considerat c primele m variabile (coloane) sunt variabile (coloane) de baz.
6/7
Algoritmul simplex este o metod de explorare sistematic i economic a
programelor de baz ale unei probleme de programare liniar, sau, cu alte cuvinte, o
metod de trecere de la un program de baz la altul n sensul optimizrii (maximizrii,
sau minimizrii) valorii funciei obiectiv, pn la atingerea optimului, dac acesta exist.
Algoritmul simplex este aadar un algoritm iterativ, fiecare iteraie corespunde
unei baze (unui program de baz, unui tabel simplex).
Prima linie i prima coloan ale tabelului simplex sunt utile numai la prima
iteraie a algoritmului simplex.
Teorema 5. Formulele de transformare ale tabelului simplex prin schimbarea de
baz de la baza B la baza
~
B se bazeaz pe urmtoarele calcule n jurul pivotului
B
lk
y :
x
x
y
k
B l
B
lk
B
~
= ; y
y
y
kj
B
lj
B
lk
B
~
= , j B S ;

x x y
x
y
i
B
i
B
ik
B l
B
lk
B
~
= , l i ; y y y
y
y
ij
B
ij
B
ik
B
lj
B
lk
B
~
= , i l , j B S (8)
z z z c
x
y
B B
k
B
k
l
B
lk
B
~
( ) = ;
z c z c z c
y
y
j
B
j j
B
j k
B
k
lj
B
lk
B
~
( ) ( ) = , j B S
Demonstraie. Se folosesc relaiile (4) i (6).
Din (4), pentru i = l rezult:
S
k
B
lk
S
j
k S j
B
lj
B
l
B
l
x y x y x x =

} \{

i mai departe
S
j
S j
B
kj
B
k
B
l
S
j
k S j
B
lj
B
l
B
lk
S
k
x y x x x y x
y
x
~
~
~ ~
} \{
) (
1


= =
de unde, prin identificare, rezult primele dou relaii din (8). Am notat: } { } {
~
l k B B + =
i } { } {
~
l k S S + = .
n aceeai relaie (4) nlocuim pe
S
k
x obinut mai sus i rezult:
B
lk
B
ik S
j
k S j
B
ij
B
i
B
i
y
y
x y x x =

} \{
) (
} \{
B
l
S
j
k S j
B
lj
B
l
x x y x

=
=
B
lk
B
ik B
i
y
y
x
S
j
B
lj
l k S j
B
lk
B
ik B
ij
B
l
x y
y
y
y x ) (
} { } \{

+

S
j
S j
B
ij
B
i
x y x
~
~
~ ~

=
de unde, prin identificare, rezult urmtoarele dou relaii din (8).
Ultimele dou relaii din (8) se obin, tot prin identificare, din relaia (6) n care
folosim aceeai expresie a lui
S
k
x rezultat din (4):
7/7

. ) (
) (
1
) ( ) (
~
~
~ ~
} \{ } \{
S
j j
S j
B
j
B
B
l
B
j
k S j
B
lj
B
l
B
lk
k
B
k
S
j
k S j
j
B
j
B
x c z z
x x y x
y
c z x c z z z
=
= =




Algoritmul simplex n cazul problemei (1) de minimizare const din:
Pasul 1. Se determin o baz iniial B (de preferat I
m
);
Se calculeaz x
B
, y j B S
j
B
, ( ) , ) ( , S B j c z
j
B
j
, z
B
i se completeaz
tabelul simplex iniial, corespunztor bazei B determinate anterior.
Pasul 2. Testul de optimalitate i criteriul de intrare n baz
2.1. Dac z c
j
B
j
0 pentru toi j S atunci baza B este optim, deci
programul corespunztor bazei B ,
|
|

\
|
0
B
x
este programul optim, iar
B
z este valoarea optim a funciei obiectiv.
STOP
2.2. Dac exist k S astfel nct z c
k
B
k
> 0atunci baza B nu este optim
i ea poate fi mbuntit introducnd n baz pe a
k
.
Alegem k astfel nct z c z c
k
B
k
j z c
j
B
j
j
B
j
=
>
max { }
/ 0
, valoarea cea mai
neconvenabil.
Pasul 3. Criteriul de ieire din baz
3.1. Dac exist k S astfel nct z c
k
B
k
> 0 i dac y
ik
B
0 ( ) i B
atunci problema are optim infinit.
STOP
3.2. Dac exist k S astfel nct z c
k
B
k
< 0i exist i B astfel nct
y
ik
B
> 0, atunci se determin l B astfel nct:
)
`

=
>
B
ik
B
i
y i
B
lk
B
l
y
x
y
x
B
ik
0 /
min .
Coloana a
l
iese din baz.
Pasul 4. Se aplic schimbarea de baz de la baza B la
~
B , prin } { } {
~
k l
a a B B + = .
Se transform tabelul simplex dup formulele date de Teorema 5 i se reia
algoritmul de la Pasul 2.

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