Sunteți pe pagina 1din 36

Bazele cercetrii operaionale

PROGRAMAREA LINIAR
Prezentare general
Mulimea sistemelor economice concrete i multitudinea problemelor conducerii acestora au
creat o diversitate de reprezentri economico-matematice, denumite modele.
Varietatea acestora este determinat, n principal, de structura "obiectului" analizat, de
scopul cercetrii precum i de informaia disponibil.
Modelele de programare matematic i mai ales subclasa acestora modelele de programare
liniar ocup un loc deosebit de important, att n teoria ct i n practica economic. Teoria
economic a beneficiat de aportul abordrii interdisciplinare care a permis aprofundarea analizei
eficienei maximale a sistemelor complexe, a permis descoperirea unor concepte noi ale optimului
economic, a perfecionat metodele de cercetare i cunoatere iar practica economic s-a mbogit
cu un instrument deosebit de util analizei economice i fundamentrii deciziilor.
Structura modelului general de programare liniar se constituie n primul rnd prin mulimea
de activiti {A
1
, A
2
, ... A
n
} care compun sistemul economic analizat, mulimea de resurse utilizate
{R
1
, R
2
, ... R
m
} precum i prin relaiile tehnico-economice dintre acestea. Legtura dintre activiti
i resurse este determinat de tehnologia de fabricaie corespunztoare fiecrei activiti A
j
(j=1,...,n) i poate fi caracterizat numeric prin vectorul coloan a
(j)
de componente (a
1j
, a
2j
, ... a
mj
).
Elementele {a
ij
, i = 1,...,m; j = 1,...,n} se numesc coeficieni tehnici sau coeficieni de consum
specific i arat ce cantitate din resursa R
i
se consum pentru producerea unei uniti din produsul
(serviciul) P
j
(ca rezultat al activitii A
j
). Toate "tehnologiile" de fabricaie definite de vectorii
coloan a
(j)
se pot organiza ntr-o matrice A cu m linii i n coloane; fiecare linie se refer la o resurs
R
i
(i = 1,...,m) i fiecare coloan se refer la o activitate A
j
(j = 1,...,n).
Notnd cu x
j
(j = 1,...,n) rezultatul activitii A
j
ntr-o perioad dat i cu b
i
(i = 1,...,m)
cantitile disponibile din resursele R
i
(i = 1,...,m), se pot scrie matematic urmtoarele restricii
tehnico-economice:
(1)
m n mn 2 m2 1 m1
2 n 2n 2 22 1 21
1 n 1n 2 12 1 11
b x a ... x a x a
b x a ... x a x a
b x a ... x a x a
+ + +
+ + +
+ + +

sau A x b
unde A =

,
_

mn m2 m1
2n 22 21
1n 12 11
a a a
a a a
a a a

; x =

,
_

n
2
1
x
x
x

i b =

,
_

n
2
1
b
b
b

Fiecare inecuaie/restricie ncorporeaz dou afirmaii:


a. cantitatea consumat dintr-o resurs nu poate depi volumul disponibil (propoziie
de logic economic)
b. consumul total R
ij
din resursa R
i
pentru efectuarea activitii A
j
este proporional cu
intensitatea acesteia, adic cu x
j
, deci R
ij
(

)
= a
ij
x
j
(ipotez simplificatoare)
(

)
De aici rezult posibilitatea s calculm coeficienii aij pe baza informaiilor disponibile privind cantitile consumate
Rij i nivelul xj: aij =
j
x
ij
R
; i = 1,...,m; j = 1,...,n
21
Programarea liniar
Sistemul de restricii (1) realizeaz legtura dintre resurse i activiti prin intermediul celor
m restricii liniare.
Modelul problemei de programare liniar conine restricii de tipul (1) precum i un criteriu
de "performan" care s permit evaluarea eficienei fiecrei activiti. n funcie de scopul urmrit,
putem alege drept criteriu de eficien un indicator care msoar efortul, unul care msoar
rezultatul sau un indicator exprimat ca raport ntre rezultat i efort (sau efort pe rezultat).
Este evident c eficiena maxim nseamn minimizarea efortului i maximizarea
rezultatului, iar conceptul de optim se definete, n acest caz, ca un program x R
n
care minimizeaz
sau maximizeaz o funcie obiectiv i, n acelai timp, satisface toate restriciile tehnico-economice.
Presupunnd c fiecare component a vectorului linie c = (c
1
, c
2
, ..., c
n
) msoar eficiena
unei uniti din rezultatul activitii A
j
, atunci se poate introduce funcia liniar:
f(x) = c
1
x
1
+ c
2
x
2
+ ... + c
n
x
n
care evalueaz performana oricrui program x.
Sintetiznd, obinem urmtorul program de programare liniar:
( ) [ ]

'

n 1, j 0 x
I k b x a
I i b x a
x optim
j
2
n
1 j
k j kj
1
n
1 j
i j ij
f
x
Relaiile (1), (2) i (3) constituie mpreun modelul general al unei probleme de programare
liniar, avnd fiecare un rol specific:
1. relaia (1), unde f(x) =

n
1 j
j j
c x
este denumit funcia obiectiv de eficien a
problemei, evalueaz eficiena/performana fiecrei variante de program x;
2. relaiile (2) de tipul


n
1 j
i j ij
b x a
reprezint restricii de tip resurse; iar restriciile
de tipul


n
1 j
k j kj
b x a
se refer la restricii tehnico-economice de tip calitativ (i ca
urmare indicatorul b
k
este limita inferioar impus "reetei optime";
3. relaia (3) x
j
0 j = 1,...,n, numit condiia de nenegativitate a variabilelor, asigur
obinerea unei soluii realizabile din punctul de vedere al logicii economice.
Dup cum s-a artat la nceput, structura concret a unei aplicaii n economie este
determinat n primul rnd de obiectivul urmrit.
Astfel, n cazul problemei determinrii structurii sortimentale optime a produciei, se
cunosc cantitile disponibile (cantitile de care se poate face rost pe perioada analizat) din fiecare
materie prim {b
i
, i =1,...,m}, coeficienii tehnologici {a
ij
, i = 1,...,m, j = 1,...,n} (a
ij
reprezint
cantitatea din materia prim i necesar fabricrii unei uniti din produsul de tipul j), cantitile
maxime { j
x
, j = 1,...,n} i minime { j
x
, j = 1,...,n} ce pot fi produse din fiecare sortiment n
perioada analizat i profiturile unitare {p
j
, j = 1,...,n} ale fiecrui tip de produs. Se cere gsirea
acelor cantiti x
j
care trebuie fabricate din fiecare tip de produs astfel nct s se obin profitul
maxim, n condiiile nedepirii disponibilurilor din fiecare resurs.
Pentru simplificarea modelului, se presupune c preul unui bun nu depinde de cantitatea
produs din acesta sau din celelalte, consumul din fiecare materie prim este direct proporional cu
22
unde I
1
I
2
= {1,2,...,m}
(1)
(2)
(3)
Bazele cercetrii operaionale
cantitatea produs i, pentru fiecare bun, consumurile dintr-o resurs sau alta nu se condiioneaz
reciproc.
Problema matematic echivalent este:
( )

'



+ + +
+ + +

n 1,..., j 0 x
n 1,..., j x x x
m 1,..., i b x a ... x a x a
x p ... x p x p max
j
j j j
i n in 2 i2 1 i1
n n 2 2 1 1
n 1, j x
j
n unele probleme, n loc de profiturile p
j
se cunosc veniturile unitare v
j
sau costurile unitare
c
j
sau alt criteriu de eficien, scopul fiind maximizarea venitului, minimizarea costurilor respectiv
optimul indicatorului de eficien respectiv, sau toate la un loc. De asemenea pot lipsi condiiile de
limitare a produciei sau pot exista i alte condiii.
La o problem de programare operativ a produciei restriciile se refer la o serie de
maini (utilaje) cu care se execut produsele dorite, b
i
fiind disponibilul de timp al utilajului i pe
perioada analizat iar a
ij
timpul necesar prelucrrii unui produs de tipul j pe utilajul i, scopul fiind
maximizarea produciei.
Ca urmare, modelul are forma:
( )

'


+ + +
+ + +

n 1,..., i 0 x
m 1,..., i b x a ... x a x a
x ... x x max
j
i n in 2 i2 1 i1
n 2 1
n) 1,..., j ( x
j
Dac se dorete obinerea unui meniu (reete furajere), care s asigure necesarurile {b
i
, i =
1,...,m} dintr-un numr de m substane eseniale organismului, avnd la dispoziie un numr de n
alimente, cunoscndu-se cantitile {a
ij
, i = 1,...,m, j = 1,...,n} din fiecare substan pe care le conine
o unitate de msur din fiecare aliment i costurile {c
j
, j = 1,...,n} unei uniti de msur din fiecare
aliment, putem scrie modelul:
( )

'


+ + +
+ + +

n 1,..., j 0 x
m 1,..., i b x a ... x a x a
x c ... x c x c min
j
i n in 2 i2 1 i1
n n 2 2 1 1
n) 1,..., j (
j
x
Variabilele x
j
reprezint, n acest caz, cantitatea din fiecare aliment ce va intra n meniu iar
f(x) =

n
1 j
j j
c x
este costul total al reetei definit de vectorul x.
23
Programarea liniar
Vom ncheia exemplificarea cu prezentarea modelului amestecului optim de produse
petroliere. Presupunem c o rafinrie dispune de n tipuri de benzine, prin amestecarea acestora
urmnd s obin o benzin cu m caracteristici impuse i la un pre minim posibil. O serie de
caracteristici trebuie s fie ndeplinite cu o limit inferioar (de exemplu cifra octanic), altele cu o
limit superioar (de exemplu densitatea sau temperatura de fierbere) i altele cu egalitate (de
exemplu cantitatea necesar), aceste limite fiind
1
i
b , i = 1,...,m
1
,
2
i
b , i = 1,...,m
2
respectiv
3
i
b , i =
1,...,m
3
cu m
1
+ m
2
+ m
3
= m. De asemenea, trebuie inut cont de cantitile disponibile din fiecare
benzin D
i
, i = 1,...,n. Se cunosc caracteristicile fiecrei benzine disponibile, date ntr-o matrice A
M
m n
, unde a
ij
este valoarea caracteristicii i pentru benzina j i preurile unitare ale fiecrei benzine,
notate p
j
, j = 1,...,n. Dac notm cu x
j
, j = 1,...,n, cantitile din fiecare benzin care vor forma
amestecul optim, atunci avem de rezolvat problema:

'



+ +
+ +

,
_

n 1,..., j 0 x
n 1,..., j D x
m 1,..., m m i b x a
m m 1,..., m i b x a
m 1,..., i b x a
p min
j
j j
2 1
n
1 j
3
i j ij
2 1 1
n
1 j
2
i j ij
1
n
1 j
1
i j ij
n
1 j
j j
x
j
x
Programarea matematic
Se observ c toate aceste probleme, cu toate c reprezint situaii economice total diferite,
sunt aplicaii n sfera activitii economice ale urmtoarei probleme de optimizare:
( ) ( ) ( )
( )
3 . 1
2 . 1
1 . 1
x ,..., x , x
n 1,..., i b x ,..., x , x
x ,..., x , x min sau max
n
n 2 1
i n 2 1
n 2 1

'



R
g
f
i
n care funciile f,g
i
: R
n
R pot avea orice form i proprieti (liniare, convexe, continui,
difereniabile etc) iar poate fi orice submulime a lui R
n
(continu sau discret, mrginit sau
nemrginit, convex sau neconvex, finit sau infinit etc) i n care dorim s gsim minimul sau
maximul funciei f n variabilele x
i
care ndeplinesc restriciile 1.2 i 1.3. O astfel de problem se
numete problem de programare matematic.
Funcia (1.1) se numete funcia obiectiv a problemei de optimizare. n aplicaiile
economice, ea reprezint criteriul de performan urmrit: maximizarea beneficiului, maximizarea
produciei marf, minimizarea costului produciei, maximizarea gradului de ncrcare al utilajelor
sau minimizarea timpului de staionare al acestora, maximizarea veniturilor etc.
Inegalitile (1.2), n care g
i
sunt funcii de n variabile iar b
i
sunt constante, se numesc
restricii ale problemei de optimizare. Ele traduc n limbaj matematic condiiile de natur economic
sau tehnologic n care se desfoar procesul economic modelat, cum ar fi: nedepirea stocurilor
24
Bazele cercetrii operaionale
disponibile de resurse (materii prime, capaciti de producie, for de munc, fonduri bneti, timp
etc), ndeplinirea sau depirea unor indicatori economici (producia fizic, net) etc.
Condiiile (1.3), impuse "direct" variabilelor, depind de natura problemei studiate. De cele
mai multe ori, este mulimea vectorilor x = (x
l
,...,x
n
) R
n
cu toate componentele nenegative i
acest fapt se justific prin aceea c, n general, x
i
reprezint "nivelele" unor activiti de producie,
nivele care nu pot fi negative. n unele probleme de optimizare, cum ar fi cele de croire sau
ordonanare, variabilele desemneaz mrimi indivizibile i deci nu pot lua dect valori ntregi.
Mulimea va fi format n acest caz din vectori x cu toate componentele ntregi i nenegative. n
alte probleme, ca de pild cele de afectare, portofoliu etc, variabilele nu pot lua dect valorile 0 sau
1 (variabile bivalente) i ca atare va fi format din vectorii x = (x
1
, ,x
n
) cu toate componentele
0 sau 1. Caracteristic acestor tipuri de probleme este faptul c devine o submulime discret din
R
n
, de unde i numele generic de probleme de optimizare discret dat acestora.
O soluie a unei astfel de probleme are deci trei proprieti:
P1. verific restriciile 1.2
P2. verific restriciile "directe" 1.3
P3. optimizeaz funcia obiectiv pe mulimea vectorilor care ndeplinesc
condiiile P1. i P2.
n teoria programrii matematice se folosesc, pentru claritatea i simplitatea expunerii,
urmtoarele noiuni:
soluie a problemei de optimizare =
un vector x R
n
care verific restriciile 1.2
soluie admisibil a problemei de optimizare =
un vector x R
n
care verific restriciile 1.2 i 1.3
o soluie care verific restriciile 1.3
soluie optim a problemei de optimizare =
un vector x R
n
care verific restriciile 1.2 i
1.3 i optimizeaz funcia obiectiv pe mulimea
tuturor vectorilor cu aceast proprietate
o soluie care verific restriciile 1.3 i
optimizeaz funcia obiectiv pe mulimea
tuturor soluiilor cu aceast proprietate
o soluie admisibil care optimizeaz funcia
obiectiv pe mulimea soluiilor admisibile
Izvort din studiul problemelor extremale ale analizei matematice clasice, programarea
matematic a cunoscut n ultimele decenii o dezvoltare spectaculoas, explicabil numai n parte
prin progresele nregistrate n matematic. ntr-adevr, aceast dezvoltare a fost puternic stimulat
de creterea vertiginoas a complexitii activitilor economice, care a furnizat probleme cu
structuri din ce n ce mai complicate, ca i de rapida perfecionare a mijloacelor automate de calcul,
singurele capabile s testeze eficiena practic a metodelor teoretice elaborate. La rndul ei,
programarea matematic, prin rezultatele ei, a adus un considerabil aport la perfecionarea
metodelor de conducere n economie i a impulsionat cercetrile - n plan teoretic - privind
modelarea sistemelor economice complexe, studiul i interpretarea legilor i proceselor economice.
n ceea ce privete rezolvarea acestor probleme, este evident c varietatea extrem a acestora
face imposibil gsirea unui algoritm practic care s le poat rezolva pe toate, dar putem gsi (sau
ne putem atepta s gsim), pentru fiecare caz particular, un algoritm de rezolvare care s-i trag
eficacitatea tocmai din folosirea tuturor particularitilor cazului respectiv. n prezent exist sute de
algoritmi de rezolvare, cercetarea problemei evolund din ce n ce mai mult spre testarea i
mbuntirea acestora dect spre gsirea unora noi.
25
Programarea liniar
Problema de programare liniar
Definiia 1. Dac ntr-o problem de programare matematic funcia obiectiv f i funciile
g
i
, din restriciile 1.2, sunt funcii liniare atunci problema se numete problem de programare
liniar. O problem de programare liniar este, deci, un caz particular al problemelor de programare
matematic i, innd cont de forma oricrei funcii liniare, rezult c forma general a oricrei
probleme de programare liniar este:
( )

'

+ + +
+ + +
oarecare
0
0
x ,..., x , x
n 1,..., i b x a ... x a x a
x c ... x c x c min max
n 2 1
i n in 2 i2 1 i1
n n 2 2 1 1
f
unde c
j
(coeficienii funciei obiectiv), a
ij
(coeficienii restriciilor) i b
i
(termenii liberi) sunt
constate reale.
Forma conic i forma standard a unei probleme de programare liniar
Cu toate c problema de programare liniar este cea mai simpl dintre problemele de
programare matematic, ea este nc destul de complicat, prin faptul c orice restricie poate avea
trei forme diferite iar obiectivul poate fi minimizarea sau maximizarea funciei f. Este puin probabil
c exist un algoritm i simplu i aplicabil la toate cazurile.
Din acest motiv este mult mai simplu s gsim o anumit form (ct mai simpl) cu
proprietatea c pentru orice problem P, exist o alta problem P' de aceast form, echivalent cu
problema iniial P (spunem c dou probleme sunt echivalente dac exist un izomorfism ntre
mulimile soluiilor celor dou probleme i un homeomorfism ntre funciile lor obiectiv) i s
dispunem de un algoritm care s rezolve problemele de aceast form i de o regul prin care s
gsim soluia problemei iniiale P din soluia problemei P', gsit cu acest algoritm.
n acest sens (dar i din cauza frecvenei apariiei lor n practic) s-au evideniat dou forme
ale problemelor de programare liniar, forma canonic i forma standard.

Definiia 2. Spunem c o problem este la forma canonic dac are una din urmtoarele
dou forme:
Forma canonic de minim Forma canonic de maxim
( )

'

+ + +
+ + +
0 x ,..., x , x
n 1,..., i b x a ... x a x a
x c ... x c x c min
n 2 1
i n in 2 i2 1 i1
n n 2 2 1 1
f ( )

'

+ + +
+ + +
0 x ,..., x , x
n 1,..., i b x a ... x a x a
x c ... x c x c max
n 2 1
i n in 2 i2 1 i1
n n 2 2 1 1
f
Aceast form este cel mai des ntlnit n practic (vezi problema determinrii structurii
sortimentale optime a produciei sau problema dietei) i, n plus, restriciile economice sunt n
general inegaliti i foarte rar egaliti. De asemenea, aceast form este invariant la anumite
transformri (vezi problema dual) i asigur existena soluiei (orice problem la aceast form,
care are termenii liberi i coeficienii restriciilor pozitivi, are soluie).
26
Bazele cercetrii operaionale
Definiia 3. Spunem c o problem este la forma standard dac are forma:
( ) ( )

'

+ + +
+ + +
0 x ,..., x , x
n 1,..., i b x a ... x a x a
x c ... x c x c max sau min
n 2 1
i n in 2 i2 1 i1
n n 2 2 1 1
f
Aceast form, dei nenatural din punct de vedere economic, este cea care se preteaz cel
mai bine la rezolvarea cu metodele algebrei clasice.
Propoziie. Pentru orice problem de programare liniar P exist o problem la forma
canonic PFC i o problem la forma standard PFS echivalente cu P.
Demonstraie. ntr-adevr:
a) orice problem de maxim poate fi transformat n una de minim i reciproc folosind relaia:
max f(x) = min f(x)
b) orice restricie de tipul " " poate fi transformat ntr-o restricie de forma " " i reciproc
folosind relaia:

c) orice restricie inegalitate poate fi transformat n egalitate, prin introducerea unei variabile
suplimentare nenegative i folosind relaiile:

'

+
0 x
x
i

'


0 x
x
Toate variabilele introduse pentru transformarea inegalitilor n egaliti se numesc variabile de
abatere sau variabile de compensare.
d) orice restricie egalitate poate fi transformat n restricii inegalitate, folosind relaia:
=

'



e) orice variabil cu restricie de semn negativ (x 0) poate fi nlocuit cu o variabil cu
restricie de semn pozitiv (y 0), folosind relaia:
x 0

'

0 y
y - x

f) orice variabil fr restricie de semn poate fi nlocuit cu dou variabile cu restricie de semn
pozitiv, folosind relaia:
x oarecare

'

0 z
0 y
z - y x
Se demonstreaz fr un efort matematic deosebit c dac P' se obine din P folosind doar
27
Programarea liniar
transformrile de mai sus (numite i transformri elementare) atunci P i P' sunt dou probleme
echivalente i ntre soluiile lor optime exist o bijecie.
Din cele de mai sus rezult cum poate fi adus orice problem de programare liniar la
forma standard (sau canonic) i cum se obine soluia problemei iniiale din soluia problemei la
forma standard (sau canonic).
Exemplu: Problemei P de mai jos i corespunde problema la forma standard PFS alturat:
P PFS
(min) f = 3x
1
2x
2
+ 4x
3

'


+ +

+ +
+ +
0 x oarecare, x , 0 x
31 x 5 x 30 x 3
21 x 14 x 7 x 7
9 x 6 x 36 x 19
16 x 15 x 13 x 9
3 2 1
3 2 1
3 2 1
3 2 1
3 2 1
(max) g = +3a
1
+ 2y
2
2z
2
4x
3

'

+ + +
+ +
+ +
+ + +
0 x , x , x , x , x , z , y , a
31 x x 5 z 30 y 30 a 3
21 x x 14 z 7 y 7 a 7
9 x x 6 z 36 y 36 a 19
16 x x 15 z 13 y 13 a 9
7 6 5 4 3 2 2 1
7 3 2 2 1
6 3 2 2 1
5 3 2 2 1
4 3 2 2 1

Problema PFS are o singur soluie optim:
a
1
= 3, y
2
=
3
4
, z
2
= 0, x
3
= 0, x
4
=
3
77
, x
5
= 0, x
6
=
3
154
, x
7
= 0
care d un maxim al funciei g egal cu
3
35
.
Acestei soluii i corespunde singura soluie optim pentru P:
x
1
= -3, x
2
=
3
4
, x
3
= 0
care d un minim al funciei f, egal cu
3
35

.
Rezolvarea problemei de programare liniar.
Analiza problemei
Fie o problem P despre care presupunem (fr a restrnge generalitatea) c a fost adus la
forma standard. De asemenea presupunem (tot fr a restrnge generalitatea) c variabilele
problemei au fost numerotate i denumite x
j
cu j = 1,...,n (n = numrul de necunoscute), coeficienii
variabilelor din funcia obiectiv f cu c
j
(c
j
= coeficientul variabilei x
j
), c n ecuaii variabilele apar
n ordinea indicilor, ecuaiile fiind numerotate de la 1 la m (m = numrul de ecuaii) i c am notat
cu b
i
termenul liber al ecuaiei i i cu a
ij
coeficientul variabilei j din ecuaia i. n acest caz putem
aeza variabilele problemei ntr-un vector cu n componente, coeficienii funciei obiectiv ntr-un
vector cu n componente, termenii liberi ntr-un vector cu m componente, coeficienii variabilelor
din ecuaii ntr-o matrice cu m linii i n coloane i vom avea:
x =

,
_

n
2
1
x
x
x

, c =

,
_

n
2
1
c
c
c

, b =

,
_

n
2
1
b
b
b

, A =

,
_

mn m2 m1
2n 22 21
1n 12 11
a a a
a a a
a a a

(vom nota cu x
T
, c
T
i b
T
transpuii acestor vectori i cu A
T
transpusa matricei A).
28
Bazele cercetrii operaionale
Alegerea aezrii ca vectori coloan a fost fcut din raiuni de uurin a calculelor i a
memorrii acestora. Dup aceste notaii, problema poate fi scris mult mai simplu:
( )

'



0 x
b x A
x c min
T
f
sau
( )

'



0 x
b x A
x c max
T
f
Se tie c un sistem de forma A x = b are soluie doar dac rang(A) = rang( A), unde A
este matricea extins obinut adugnd matricei A vectorul b, n acest caz sistemul devenind
echivalent cu sistemul obinut prin eliminarea restriciilor care nu corespund minorului principal
(dac sistemul nu are soluie atunci evident nici problema nu are soluii, caz care este total
neinteresant).
Presupunem c au fost eliminate aceste restricii. Dac rang A = n atunci sistemul are o
singur soluie care, dac este admisibil, este i soluia optim cutat, altfel problema nu are
soluie. Este evident c i acest caz este la fel de neinteresant ca primul.
Presupunem deci n continuare c:
rang(A) = m < n
Rezolvarea sistemului A x = b se poate face ntr-un mod simplu (cel puin teoretic) folosind
algebra matricial astfel:
mprim coloanele matricei A n dou submatrici: minorul principal (notat
cu B, care este o matrice ptratic de dimensiune m i va fi numit baz a sistemului) i
restul coloanelor (notat cu S, care este o matrice cu m linii i n m coloane);
mprim variabilele problemei n doi vectori: vectorul variabilelor principale
(corespunztoare coloanelor bazei) i vectorul variabilelor secundare (notat cu x
S
).
Fcnd eventual o renumerotare, pentru uurina expunerii i fiind evident c nu se
restrnge generalitatea problemei, presupunem c variabilele principale sunt chiar
primele m (aceast presupunere va fi fcut de cte ori va fi posibil, fr a mai specifica
acest lucru).
aducem succesiv sistemul la forma de mai jos:
A x = b (BS)
,
_

S
B
x
x
= b B x
B
+ S x
S
= b B x
B
= b S x
S
x
B
= B
-1
b B
-
1
S x
S
soluia sistemului va fi submulimea lui R
n
:
D
B
= {x = {x
B
,x
S
} / x
S
R
n-m
oarecare, x
B
= B
-1
b B
-1
S x
S
}
Orice alegere a lui x
S
d o soluie. Dintre toate alegerile posibile este remarcabil (prin
simplitatea ei) soluia x
S
= 0, care duce la soluia particular:
x
B
=

,
_


0
0
0
b B
1

numit soluia de baz asociat bazei B. Deci x


B
este x
B
= B
-1
b la care se adaug n-m
zerouri. Cu toate acestea, vor fi ambele numite soluie de baz, rezultnd din context de care
este vorba.
29
n m zerouri
Programarea liniar
Observaie: Este evident c fiecrui minor principal al sistemului (= minor de
dimensiune m = baz) i corespunde o unic soluie de baz. O soluie de baz care are toate
componentele nenule strict pozitive se va numi soluie de baz admisibil iar o soluie
optim care este de baz se va numi soluie optim de baz. Se observ c o soluie de baz
are cel mult m componente diferite de 0. Din cauza importanei lor n rezolvarea problemei,
vom evidenia soluiile de baz care au mai puin dect m componente nenule, numite soluii
degenerate i pe cele care au fix m elemente nenule, numite soluii nedegenerate.
D
B
este izomorf cu R
n
, adic are tot attea elemente cte puncte sunt ntr-un spaiu cu n
_

_
m dimensiuni. "Alegndu-le" din acestea doar pe cele cu toate elementele pozitive, gsim
mulimea n care vom "cuta" vectorul (vectorii) care d (dau) extremul lui f.
Rezolvarea problemei poate duce la urmtoarele rezultate:
R1. Sistemul A x = b nu are soluii sau nu are soluii admisibile. n acest caz problema
nu are soluie.
R2. Imaginea funciei obiectiv pe mulimea soluiilor admisibile este nemrginit (la +
ntr-o problem de maxim sau la - ntr-o problem de minim). n acest caz spunem
c problema are optim infinit.
R3. Imaginea funciei obiectiv pe mulimea soluiilor admisibile este mrginit. n acest
caz problema are cel puin o soluie i spunem c problema are optim finit.
Greutatea gsirii soluiei problemei const n imensitatea numrului de soluiilor posibile ale
sistemului i n respectarea condiiei de nenegativitate a celor printre care cutm extremul dorit al
funciei f. Este natural ca primele ncercri n rezolvare s caute n primul rnd o limitare ct mai
puternic a locului n care cutm. Pe baza unor reprezentri geometrice ale problemei au fost
descoperite urmtoarele proprieti ale problemei, care poart denumirea de teoreme fundamentale
ale programrii liniare:
Teorema 1. Dac problema de programare liniar are soluii admisibile atunci are i soluii
de baz admisibile.
Teorema 2. Dac problema de programare liniar are soluii optime atunci are i soluii
optime de baz.
Teorema 3. Mulimea soluiilor admisibile (optime) este nchis i convex. Dac este i
mrginit atunci punctele extremale ale acesteia sunt chiar soluiile admisibile
(optime) de baz ale problemei.

Cele dou teoreme realizeaz efectiv trecerea ctre o problem rezolvabil pe calculator.
ntr-adevr, deoarece o baz este un minor de ordinul m al matricii A i unei baze i corespunde o
unic soluie de baz rezult c sunt cel mult
m
n
C soluii de baz, adic un numr finit. n acest
moment s-ar prea c nu avem dect s lsm calculatorul s calculeze toate soluiile de baz i
valorile funciei obiectiv n cele admisibile gsind-o prin comparare pe cea care d minimul sau
maximul funciei printre acestea. Totui, aceast variant se dovedete nepractic la o analiz mai
atent, innd cont de urmtoarele observaii:
1. faptul c numrul soluiilor de baz este finit ne asigur doar c problema se va termina
cndva, ceea ce, din punct de vedere economic, este evident nemulumitor. Noi dorim ca
problema s fie rezolvat n timp util, adic repede. Rezolvnd problema ca mai sus vom
avea, pentru o problem cu 50 variabile i 20 restricii, de calculat, listat i comparat
20
50
C soluii de baz, adic n jur de 10
20
. Presupunnd c suntem dotai cu un
supercalculator care ar termina un miliard de baze pe secund, rezolvarea ar dura 3000
ani. De altfel, o problem ca cea de sus este foarte mic n comparaie cu problemele
30
Bazele cercetrii operaionale
"serioase" ce au peste 1000 de variabile i 100 de restricii. n plus, un calculator ca cel
de sus nu exist nc, deci n nici un caz nu e disponibil ntreprinderilor obinuite.
2. Cu algoritmul de mai sus vom gsi cea mai bun soluie dintre soluiile admisibile de
baz, fr ns s tim dac problema admite, de fapt, optim (ar putea s aib optim
infinit).
3. Nu vom ti dac un minor de m m este baz dect dup ce-i vom calcula determinantul
i nu vom ti dac soluia de baz corespunztoare este admisibil dect dup ce o vom
calcula.
4. Soluia optim, odat gsit, nu va fi recunoscut ca atare dect dup ce vom calcula
toate celelalte soluii de baz, chiar dac ea a aprut chiar la nceputul calculelor.
n concluzie, pentru a fi eficient, un algoritm ar trebui s aib urmtoarele proprieti:
a) s dispun de un criteriu de recunoatere a faptului c problema nu are soluii
admisibile;
b) s dispun de un criteriu de recunoatere a faptului c problema are optim
infinit;
c) s dispun de un criteriu de recunoatere dac o soluie este optim sau nu;
d) s treac de la o soluie de baz admisibil la una cel puin la fel de bun (o
soluie x este mai bun dect o soluie y dac f(x) > f(y) ntr-o problem de maxim i f(x)
< f(y) ntr-o problem de minim;
e) s treac de la o soluie la cea mai bun dintre soluiile cel puin la fel de
bune posibile ca succesoare;
f) s nu revin la o soluie deja analizat;
g) s efectueze un numr de iteraii comparabil polinomial cu dimensiunea
problemei.
h) s nu introduc erori de rotunjire (sau nu prea mari);
i) s fie ct mai simplu de implementat;
Condiiile de mai sus reprezint de fapt un algoritm ideal. La nceputurile cercetrii
operaionale era suficient, de fapt, i un algoritm care s ndeplineasc mcar condiiile b), c), d), e)
i h). Acest algoritm a fost dat de G.B. Dantzig, n 1947, care la numit algoritmul simplex. El
rmne i n zilele noastre cel mai eficient algoritm n ceea ce privete viteza de lucru, simplitatea i
implementarea pe calculator, pentru problemele care apar efectiv n practica economic.
Totui, el nu ndeplinea condiiile a), f) i g).
Condiia a) este relativ uor de ndeplinit i ea este acoperit prin introducerea unei faze
iniiale suplimentare la algoritmul simplex, rezultnd algoritmul simplex n dou faze.
Condiia f) a fost pus n momentul n care s-a observat c, n condiiile existenei soluiilor
degenerate, se poate ajunge n situaia cnd, de la o soluie dat, nu se poate ajunge dect la una la
fel de bun i tot aa, astfel nct, dac nu se iau msuri de evitare, se poate ajunge la o soluie care
a mai fost, fenomen numit ciclare. Astfel de exemple a fost efectiv gsite, unul fiind exemplul lui
Beale prezentat mai jos:
( )

'


+
+ +
+ +
+
7 ,..., 1 i , 0 x
1 x x
0 3x x
2
1
12x x
2
1
x
0 9x x 8x x
4
1
x
x 6 x
2
1
x 20 x
4
3
max
i
6 3
7 6 5 4 2
7 6 5 4 1
7 6 5 4
f
31
Programarea liniar
Se observ imediat baza admisibil B
0
= (a
1
,a
2
,a
3
), de la care, aplicnd algoritmul sub forma
clasic, se vor obine succesiv bazele admisibile B
1
= (a
4
,a
2
,a
3
), B
2
= (a
4
,a
5
,a
3
), B
3
= (a
6
,a
5
,a
3
), B
4
=
(a
6
,a
7
,a
3
), B
5
= (a
6
,a
2
,a
3
), B
6
= (a
4
,a
2
,a
3
) ... . Cititorul poate verifica uor c toate aceste baze au ca
soluie de baz soluia (0,0,1,0,0,0,0) i valoarea funciei 0, dar nu ndeplinesc condiia de optim. Pe
de alt parte se vede c B
6
= B
1
i deci algoritmul va repeta la infinit aceast succesiune de baze,
neatingnd niciodat valoarea maxim
4
7
, corespunztoare soluiei (
4
3
,0,0,1,0,1,0).
Aceast situaie este ngrijortoare nu att din considerente practice imediate (nc nu a fost
gsit o problem din practic la care s apar acest fenomen, toate exemplele existente fiind
artificial construite, ca i cel de mai sus) ct din faptul c un algoritm implementat pe calculator s-ar
putea s fie pus n faa unei astfel de probleme, situaie n care n-am putea rezolva problema nici pe
calculator, nici manual, ea fiind prea mare. Situaia a fost depit prin diferite tehnici suplimentare
adugate celei de trecere la o soluie cel puin la fel de bun (insuficient, cum s-a vzut), cea mai
cunoscut fiind cea care folosete ordonarea lexicografic a soluiilor, care va fi prezentat i n
aceast carte.
n fine, referitor la condiia g), a durat mult timp pn s-a demonstrat c algoritmul, sub
aceast form, nu este n timp polinomial, un exemplu fiind clasa de probleme de mai jos, gsit
de Klee i Minty n 1972, n care algoritmul trebuie s analizeze 2
n
baze (n = numrul de
necunoscute) pn la gsirea celei optime.
( )

'

,
_

n 1,..., j 0 x
n 1,..., i 100 x x 10 2
x 10 max
j
1 - i
i
1 - i
1 j
j
j - i
n
1 j
j
j - n
f
Pentru o astfel de problem, la 100 de variabile, algoritmul va avea 2
100
10
30
iteraii, i
chiar la o vitez de un miliard iteraii pe secund (mult peste puterea unui calculator actual) va
termina n 10
13
ani.
Nu se tie nc dac exist sau nu o alt modalitate de trecere de la o baz la alta, folosind
tabelele simplex, prin care algoritmul s devin n timp polinomial. Au fost ns gsii algoritmi
care nu folosesc tabelele simplex, primul fiind algoritmul de punct interior al lui Karmakar, despre
care s-a demonstrat c lucreaz n timp polinomial.
n ceea ce privete erorile de rotunjire, inevitabile cnd se fac calculele pe un calculator,
algoritmul se comport ntr-adevr foarte ru, orice eroare propagndu-se imediat la tot tabelul cu
efecte foarte mari. Acest lucru poate fi ns depit aplicnd o variant a algoritmului, numit
varianta revizuit a algoritmului simplex.
Toate punctele slabe ale algoritmului, amintite mai sus, nu au nmormntat ns algoritmul
simplex, deoarece folosirea acestuia aduce informaii mult mai ample dect gsirea soluiei propriu-
zise, este mult mai maleabil n cazul modificrilor ulterioare ale datelor problemei (vezi analiza
senzitivitii soluiei la datele problemei), se preteaz mult mai bine la interpretri economice, este
uor de scris un program de calculator asociat, este implementat pe foarte multe calculatoare i n
plus, aa cum aminteam mai sus, nc nu a aprut o problem practic n faa cruia s clacheze.
Noii algoritmi rmn doar ca alternative teoretice sau pentru cazurile n care algoritmul simplex este
lent, dar ei nu-l pot nlocui complet.
Fundamentarea matematic a algoritmului simplex
32
Bazele cercetrii operaionale
Algoritmul simplex pleac de la presupunerea c dispunem deja de o soluie admisibil de
baz x
B
, corespunztoare unei baze B. De asemenea, presupunem c am rezolvat sistemul A x = b
folosind aceast baz, rezultnd astfel variabilele principale n funcie de cele secundare:
x
B
= B
-1
b B
-1
S x
S
nlocuind variabilele, cu formula gsit, n funcia obiectiv, obinem:
f(x) =
T
B
c (B
-1
b B
-1
S x
S
) +
T
S
c x
S
=
T
B
c B
-1
b (
T
B
c B
-1
S
T
S
c ) x
S
=
= f(x
B
) (
T
B
c B
-1
S
T
S
c ) x
S
= f(x
B
) (z
T
S
c ) x
S
= f(x
B
) x
S

unde:
f(x
B
) =
T
B
c B
-1
b este valoarea funciei obiectiv n soluia de baz

T
B
c B
-1
S = z este un vector n-m componente z = (z
m+1
, z
m+2
,...,z
n
).
= z
T
S
c
este un vector n-m componente = (
m+1
,
m+2
,...,
n
)

Obinem urmtoarea form a problemei:
( ) ( ) ( )

'

+
+
n 1,..., j , 0 x
m 1,..., i x a x
x min sau max
j
n
1 m j
i j ij i
n
1 m j
j j
B
x
x f f
Din motive de organizare i concentrare a datelor problemei, Danzig le-a trecut pe acestea
ntr-un tabel ca cel de mai jos, numit tabel simplex.
c
1
c
2
... c
m
c
m+1
... c
n
c
B
x
B
x
B
x
1
x
2
... x
m
x
m+1
... x
n
c
1
c
2

c
m
x
1
x
2

x
m
B
-1
b I
m
B
-1
S
f(x
B
) 0 z
m+1
... z
n
0
m+1
...
n
Fiecrei soluii de baz i corespunde un tabel simplex i reciproc, deci, de fiecare dat cnd
vom vorbi de un tabel simplex, vom spune i care este baza asociat.
Din forma funciei obiectiv se vede c:
ntr-o problem de maxim:
x
B
este soluie optim
( )

+

n
1 m j
j j
B
x x f
( )
B
x f oricare ar fi x
S
0

+

n
1 m j
j j
x
0 oricare ar fi x
S
0
j
0, j = 1,...,n (toi
j
sunt pozitivi)
ntr-o problem de minim:
33
Programarea liniar
x
B
este soluie optim
( )

+

n
1 m j
j j
B
x x f
( )
B
x f oricare ar fi x
S
0

+

n
1 m j
j j
x
0 oricare ar fi x
S
0
j
0, j = 1,...,n (toi
j
negativi)
Pentru a evita complicarea expunerii vom presupune n continuare c problema este de
maxim, pentru cazul de minim raionamentul fiind analog.
Rezultatul obinut reprezint criteriul de recunoatere a optimalitii soluiei sau, mai simplu,
criteriul de optim.
Dac soluia nu este optim atunci exist evident o alt soluie de baz admisibil mai bun.
Se poate demonstra c dac x i y sunt dou soluii admisibile de baz cu f(x) f(y) i numrul de
variabile principale prin care difer cele dou este k, cu 1 k m, atunci exist un ir de soluii
admisibile de baz: {x
1
= x, x
2
, ..., x
k
= y} astfel nct:
1. f(x
i
) f(x
i+1
) oricare ar fi 1 i < k
2. x
i
difer de x
i+1
printr-o singur variabil, oricare ar fi 1
i < k
Din cele de mai sus rezult c e suficient s cutm o soluie de baz admisibil mai bun
doar printre cele care difer de cea actual printr-o singur variabil.
Trebuie deci s gsim acea variabil principal care iese din baz i acea variabil secundar
care intr n baz. Rezultatul schimbrii trebuie s fie:
1. o soluie de baz (deci coloanele corespunztoare noii variabile s formeze un minor
principal);
2. o soluie admisibil (adic s aib toate componentele pozitive);
3. o soluie mai bun;
4. cea mai bun posibil dintre soluiile mai bune.
Presupunem c nlocuim variabila principal x
i
(1 i m) cu variabila secundar x
j
(m+1
j m). Aceasta este echivalent cu a scoate din ecuaia i (singura n care apare x
i
) variabila x
j
, n
funcie de variabila x
i
i de celelalte variabile secundare. Este evident c acest lucru (care este
echivalent cu faptul c noua soluie trebuie s fie de baz) este posibil doar dac coeficientul lui x
j
din aceast ecuaie este diferit de 0 (a
ij
0). n acest caz avem succesiv:
x
i
+

n
j k
1 m k
k ik
x a
+ a
ij
x
j
= x
i
x
j
+

n
j k
1 m k
k
ij
ik
x
a
a
+
ij
a
1
x
i
=
ij
a
1
x
i

x
j
=
ij
a
1
x
i

n
j k
1 m k
k
ij
ik
x
a
a

ij
a
1
x
i
nlocuind variabila x
j
n celelalte ecuaii obinem:
x
s
+

n
j k
1 m k
k sk
x a
+ a
sj
(
ij
a
1
x
i

n
j k
1 m k
k
ij
ik
x
a
a

ij
a
1
x
i
) = x
s

x
s
+

,
_


n
j k
1 m k
k
ij
ik
sj sk
x
a
a
a a

ij
sj
a
a
x
i
= x
s

ij
sj
a
a
x
i
pentru s = 1,...,m i s i
34
Bazele cercetrii operaionale
Conform formulelor de mai sus rezult c noua soluie de baz este admisibil dac:
x
s

ij
sj
a
a
x
i
0 oricare ar fi s =1,...,m diferit de i
sj
s
a
x

ij
i
a
x
oricare ar fi s =1,...,m, s i
i n urma schimbrii noua soluie de baz va fi:
j
x
=
ij
a
1
x
i
i
s
x
= x
s

ij
sj
a
a
x
i
pentru s i
n concluzie, dac ne hotrm s introducem n baz variabila j, singura variabil care o
poate nlocui (pentru ca noua soluie s fie admisibil de baz) nu poate fi dect aceea care
corespunde acelui a
ij
strict pozitiv din coloana j din matricea B
-1
S, pentru care se obine valoarea
minim a rapoartelor dintre componentele soluiei de baz actuale i componentele coloanei j.
Pentru evidenierea acestora, ele se noteaz cu
s
i avem:

i
=

,
_

>

sj
s
0 a
m s 1
a
min
ij
x
s

Condiia de mai sus este numit criteriul de ieire din baz.


Mai nainte am vzut ce efect are schimbarea unei variabile din baz asupra sistemului. Este
important ns s vedem efectul ei i asupra funciei obiectiv. Valoarea funciei obiectiv n noua
soluie de baz va fi:
f(
B
x ) =
( )
j j
B
x x f
=
( )
i
ij
j
B
a
1
x x f
Pentru ca aceast soluie s fie cel puin la fel de bun trebuie ca:
f(
B
x ) f(x
B
)
( )
i
ij
j
B
a
1
x x f
f(x
B
)
0
a
1
i
ij
j
x

0 a
0
ij
i

x

j
0
n concluzie, dac vrem s obinem o soluie strict mai bun vom alege o variabil x
j
corespunztoare unui
j
< 0. Noua soluie va exista efectiv doar dac pe coloana j din matricea B
-
1
S exist o component a
ij
strict pozitiv i va fi efectiv strict mai bun doar dac componenta
corespunztoare x
i
din soluia de baz este diferit de 0, mbuntirea fiind egal cu i
ij
j
a
1
x
.
Situaia n care toate componentele coloanei j din matricea B
-1
S sunt mai mici sau egale cu
0 este lmurit de urmtoarea teorem:
Teorem: Dac pe coloana j din matricea B
-1
S, corespunztoare unei variabile x
j
cu
j
< 0,
toate componentele sunt mai mici sau egale cu zero atunci problema are optim infinit.
Demonstraie: Fie o soluie particular a sistemului, n care variabila secundar x
j
= > 0,
oarecare iar celelalte sunt 0. n acest caz, variabilele principale vor fi: y
i
= x
i
a
ij
i vor fi
toate pozitive, innd cont de faptul c toi a
ij
0 i, deci, soluia va fi admisibil. Pentru o astfel de
soluie, valoarea funciei obiectiv este:
f(y

) = f(x
B
)
j
. i avem:
( ) +

y f lim

deci imaginea funciei f este nemrginit i afirmaia este demonstrat.
Presupunem n continuare c exist o component a
ij
strict pozitiv. Deoarece dorim s
trecem la cea mai bun dintre bazele posibile, vom alege dintre toate variabilele cu
j
< 0, pe cea
pentru care se obine:
35
Programarea liniar

,
_


>

<
+
ij
i
0 a
m i 1
j
0
n j 1 m
a
min max
ij
j
x
Aceast condiie este criteriul de intrare n baz.
Deoarece calculul necesar gsirii acestuia este laborios, Danzig a preferat nlocuirea acestei
alegeri cu alegerea acelui j care corespunde celui mai negativ
j
(=
( )
j
0
n j 1 m
j
max
<
+
), variant care
este uor de aplicat, mbuntete soluia i prin care se obine, n marea majoritate a cazurilor,
acelai j.
n acest moment tim cum s gsim o soluie mai bun, dac ea exist i am putea calcula
din nou elementele necesare analizrii noii soluii, din tabelul simplex, folosind formulele fiecruia:
x
B
= B
-1
b
z =
T
B
c B
-1
A
= z c
Acest mod de lucru este efectiv folosit n anumite variante ale algoritmului simplex (vezi
forma revizuit) dar el presupune calcularea inversei matricei B, ceea ce necesit foarte mult timp.
Acest motiv era suficient de convingtor pentru ca Danzig s-i fi pus problema dac nu cumva
noul tabel simplex poate fi calculat pe baza fostului tabel simplex, fcnd mult mai puine calcule i
utiliznd formule uor de memorat i aplicat. Aceast ntrebare era natural de pus, dac inem cont
c noua soluie difer de fosta soluie printr-o singur variabil. Aceste formule au fost efectiv
gsite, ele putnd fi obinute urmrind efectul nlocuirii lui x
i
cu x
j
asupra sistemului:
noua soluie de baz
B
x
se obine din fosta soluie cu formulele deja gsite
mai sus:
j
x
=
ij
a
1
x
i
i
s
x
= x
s

ij
sj
a
a
x
i
pentru s i

noii coeficienii ai variabilelor n cele m ecuaii vor fi:
1. variabil principal x
s
va avea coeficientul 1 n ecuaia k i 0 n celelalte ecuaii;
2. o variabil secundar x
k
, diferit de x
i
, va avea coeficienii
ij
ik
sj sk
a
a
a a
n ecuaiile
s i i coeficientul
ij
ik
a
a
n ecuaia i.
3. noua variabil secundar x
i
va avea coeficienii
ij
sj
a
a
n ecuaiile s i i
coeficientul
ij
a
1
n ecuaia i.
4. noua valoare a funciei obiectiv va fi: f(
B
x ) =
( )
i
ij
j
B
a
1
x x f
5. noii
j
i obinem nlocuind n funcia obiectiv variabila x
j
n funcie de x
i
:
36
Bazele cercetrii operaionale
f(x) = f(
B
x )

+

n
j k
1 m k
k k
x

j
(

n
j k
1 m k
k
ij
ik
x
a
a

ij
a
1
x
i
+
ij
a
1
x
i
) =
=
( )
i
ij
j
B
a
1
x x f

,
_


n
j k
1 m k
k
ij
ik
j k
x
a
a

,
_

ij
j
a
x
i
=
= f(
B
x )

,
_


n
j k
1 m k
k
ij
ik
j k
x
a
a

,
_

ij
j
a
x
i

de unde rezult c
ij
ik
j k k
a
a

pentru k i i
ij
j
i
a


Dei par s fie foarte multe formule complicate, frumuseea algoritmului i meritul lui
Danzig const tocmai n faptul c toate respect o regul vizual uor de memorat, numit regula
dreptunghiului, aa cum se va vedea n algoritmul simplex.
ALGORITMUL SIMPLEX
Reamintim c presupunem c problema este la forma standard de maxim i c dispunem de
o soluie de baz admisibil.
Pasul 1. Se construiete tabelul simplex corespunztor bazei de care dispunem n ordinea
urmtoare:
1. pe linia a doua se trec toate variabilele ntr-o ordine oarecare;
2. pe prima linie se trec coeficienii funciei obiectiv, fiecare deasupra
variabilei corespunztoare;
3. se construiete matricea A, fiecare coloan fiind format din
coeficienii unei variabile din toate ecuaiile (ordinea n care se parcurg ecuaiile
trebuie s fie aceeai pentru toate variabilele), avnd grij ca, coloanele s fie trecute
n ordinea n care au fost trecute variabilele pe linia 2;
4. se construiete baza B, ordinea coloanelor fiind cea n care apar ele n
matricea A;
5. se calculeaz B
-1
;
6. se calculeaz B
-1
A i se trece n partea central a tabelului;
7. se trec variabilele principale n a doua coloan, n aa fel nct, la
intersecia liniei i coloanei corespunztoare acestei variabile, s se afle valoarea 1.
8. se trec n prima coloan coeficienii corespunztori variabilelor
principale din funcia obiectiv, fiecare n dreptul variabilei corespunztoare;
9. se calculeaz soluia de baz cu formula B
-1
b, avnd grij ca ordinea
n care au fost trecui termenii liberi n vectorul b s fie aceeai cu ordinea n care au
fost parcurse ecuaiile la formarea matricii A;
10. se trec n a treia coloan valorile variabilelor principale din soluia de
baz, fiecare n dreptul variabilei corespunztoare;
11. se calculeaz f(x
B
) nmulind dou cte dou componentele coloanei 1
cu cele din coloana 3 aflate pe aceeai linie i adunnd toate produsele ntre ele
(adic facem produsul scalar dintre c
B
i x
B
);
12. se calculeaz pe rnd fiecare z
j
j = 1,...,n un z
j
obinndu-se nmulind
scalar c
B
cu coloana j din B
-1
A aflat n centrul tabelului (aceast linie se calculeaz
i se trece doar n primul tabel, scopul ei fiind calcularea lui );
13. se calculeaz pe rnd fiecare
j
j = 1,...,n scznd din linia lui z linia
37
Programarea liniar
lui c (
j
= z
j
- c
j
)
Pasul 2. Se analizeaz valorile
j
corespunztoare variabilelor secundare (e uor de vzut c
ntotdeauna, cei corespunztori variabilelor principale sunt toi 0, deci neinteresani).
dac toi sunt mai mari sau egali cu 0 atunci soluia actual este cea
optim. Dac exist
j
= 0 n afara bazei, atunci pot aprea dou cazuri:
1) toate elementele din coloana a
j
din B
-1
A sunt mai mici sau
egale cu 0. Atunci toate soluiile de forma x
B
- a
j
sunt soluii optime,
unde > 0 oarecare;
2) exist o component a
ij
a coloanei a
j
strict pozitiv. Atunci
introducnd variabila x
j
n baz n locul variabilei principal x
i
obinem alt
soluie de baz optim.
Dac apar numai cazuri de tipul 2), obinem toate soluiile de baz optime, mulimea
tuturor soluiilor optime fiind format din toate combinaiile convexe ale acestora.
Dac apare i cazul 1) atunci mulimea soluiilor optime este nemrginit fiind
format din combinaiile convexe ale soluiilor de forma x
B
- a
j
unde x
B
sunt
toate soluiile optime de baz.
dac exist
j
< 0 atunci l alegem pe cel mai negativ:
k
=
j
0
n j 1 m
j
min
<
+
. Variabila x
j
va fi cea care intr n noua baz. Dac minimul este
multiplu atunci alegem, la ntmplare, unul dintre acetia (cei minimi).
Pasul 3. Se analizeaz elementele coloanei a
j
din B
-1
A, corespunztoare variabilei alese la pasul 2.
Dac toate sunt mai mici sau egale cu 0 atunci problema are optim
infinit i algoritmul ia sfrit;
Dac exist componente strict pozitive, pentru acestea se calculeaz
rapoartele
s
=
sj
s
a
x
. Variabila x
i
corespunztoare raportului minim este cea care
va iei din baz. Dac acest minim este multiplu sunt posibile dou cazuri:
1) minimul este strict pozitiv. n acest caz se alege unul dintre
acetia la ntmplare;
2) minimul este 0. Atunci x
i
corespunztori sunt 0, deci soluia
este degenerat i noua soluie este la fel de bun. Aceast situaie poate
duce la ciclarea algoritmului i alegerea la ntmplare nu mai este
suficient, fiind nevoie de o regul de alegere suplimentar care s evite
ciclarea. O metod de alegere se bazeaz pe faptul c, aa cum vom
vedea, ntotdeauna prima baz este matricea unitate i n dreptul ei, n
toate tabelele simplex, se va afla inversa bazei corespunztor fiecruia. n
acest caz, pentru poziiile n care s-a obinut minimul mprim prima
coloan a lui B
-1
la coloana a
j
i alegem minimul dintre aceste rapoarte.
Dac minimul dintre acetia este tot multiplu continum procedeul, pentru
poziiile ce dau noul minim, cu coloana a doua din B
-1
i aa mai departe,
pn minimul rmne unic. Nu este posibil s se epuizeze toate coloanele
lui B
-1
i minimul s rmn multiplu, deoarece, n acest caz, am avea:
j i
j i
j i
j i
2
k 2
1
k 1
a
b
a
b

, pentru toi indicii j


k
ai coloanelor lui B
-1
, i
1
i i
2
fiind doi
din indicii care dau acelai minim pn la sfrit sau altfel scris
j i
j i
j i
j i
2
1
k 2
k 1
a
a
b
b

pentru orice j
k
liniile i
1
i i
2
din B
-1
sunt proporionale, fapt
38
Bazele cercetrii operaionale
ce contrazice faptul c B
-1
este inversabil.
Pasul 4. Se calculeaz componentele tabelului simplex corespunztor noii baze pe baza tabelului
actual i folosind urmtoarele reguli:
1. se ncadreaz elementul a
ij
, aflat la intersecia coloanei variabilei care
intr n baz cu linia variabilei care iese din baz, care a fost numit de Danzig
pivot, ntr-un dreptunghi
2. coloana pivotului va avea 1 n dreptul pivotului i 0 n rest (inclusiv

j
);
3. linia pivotului este linia actual mprit la pivot (inclusiv n soluia
de baz);
4. restul elementelor se calculeaz cu regula dreptunghiului (inclusiv
soluia de baz, i f(x
B
)). Regula dreptunghiului se bazeaz pe observaia c n
toate formulele prin care se calculeaz acestea nu apare dect valoarea lor actual,
pivotul i cele dou elemente care ar completa dreptunghiul ce are poziia de
calculat i pivotul pe diagonal. Regula dreptunghiului se enun literar astfel:
"noua valoare = produsul dintre elementele de pe diagonala pivotului minus
produsul dintre cele aflate pe cealalt diagonal totul mprit la pivot". (pentru
scurtarea timpului de lucru se poate observa c elementele unei linii care are 0 pe
coloana pivotului rmn aceleai i de asemenea elementele unei coloane care are
0 pe linia pivotului)
Operaia de calculare a noului tabel prin regulile de mai sus poart denumirea de
pivotare.
Pasul 5. Se reia algoritmul de la pasul 2.
Exemplu: Fie problema de programare liniar:
( )

'


+ + + + +
+ + + + +
+ + + + +
+ + + + +
1, .. ., 6 i , 0 x
1 1 x 2 x x 2 x 2 x 3x
15 x 2 x 3 x x 3 x 2 2x
8 x x 3 x x x 2 x
x 5 x 3 x 4 x x 2 x 3 m ax
i
6 5 4 3 2 1
6 5 4 3 2 1
6 5 4 3 2 1
6 5 4 3 2 1
f
pentru care tim c baza format din coloanele a
1
, a
2
, a
3
este admisibil. Pentru rezolvare vom aduce
problema la forma standard de maxim introducnd variabilele de abatere x
7
, x
8
, x
9
obinnd:
( )

'


+ + + + + +
+ + + + + +
+ + + + + +
+ + + + +
1 , . . . , 9 i , 0 x
1 1 x x 2 x x 2 x 2 x 3 x
1 5 x x 2 x 3 x x 3 x 2 2 x
8 x x x 3 x x x 2 x
x 5 x 3 x 4 x x 2 x 3 m a x
i
9 6 5 4 3 2 1
8 6 5 4 3 2 1
7 6 5 4 3 2 1
6 5 4 3 2 1
f
Vom aeza n tabelul simplex variabilele n ordinea indicilor i vom avea:
39
Programarea liniar
c =

,
_

0
0
0
5
3
4
1
2
3
, A =

,
_

1 0 0 2 1 2 2 1 3
0 1 0 2 3 1 3 2 2
0 0 1 1 3 1 1 2 1
, B =

,
_

2 1 3
3 2 2
1 2 1
, c
B
=

,
_

1
2
3
vom calcula matricea B
-1
=

,
_

7
2
7
5
7
4
7
1
7
1
7
5
7
4
7
3
7
1
i pe baza acesteia soluia de baz x
B
= B
-1
b =

,
_

3
2
1
i matricea B
-1
A =

,
_




7
2
7
5
7
4
7
2
7
1
7
3
1 0 0
7
1
7
1
7
5
7
1
7
11
7
2
0 1 0
7
4
7
3
7
1
7
3
7
2
7
6
0 0 1
care se trec n tabelul
simplex:
3 2 1 4 3 5 0 0 0
c
B
x
B
x
B
x
1
x
2
x
3
x
4
x
5
x
6
x
7
x
8
x
9
3
2
1
x
1
x
2
x
3
1
2
3
7
2
7
5
7
4
7
2
7
1
7
3
1 0 0
7
1
7
1
7
5
7
1
7
11
7
2
0 1 0
7
4
7
3
7
1
7
3
7
2
7
6
0 0 1



i n final se vor calcula valoarea funciei obiectiv n aceast soluie, z
j
i
j
:
3 2 1 4 3 5 0 0 0
c
B
x
B
x
B
x
1
x
2
x
3
x
4
x
5
x
6
x
7
x
8
x
9
3
2
1
x
1
x
2
x
3
1
2
3
7
2
7
5
7
4
7
2
7
1
7
3
1 0 0
7
1
7
1
7
5
7
1
7
11
7
2
0 1 0
7
4
7
3
7
1
7
3
7
2
7
6
0 0 1



10
7
8
7
6
7
9
7
13
7
17
7
19
1 2 3
7
8
7
6
7
9
7
22
7
4
7
9
0 0 0
40
Bazele cercetrii operaionale
Din tabel se observ c exist
j
< 0, acetia fiind
4
,
5
,
6
,
8
iar minimul lor este

6
.
Observaie Dac vom cuta acel
j
care d cea mai bun mbuntire vom avea de gsit
acel
j
dintre cei negativi pentru care se obine

,
_


>

<

ij
i
0 a
3 i 1
j
0
9 j 4
a
min max
ij
j
x
i deci de calculat:
i4
i
0 a
3 i 1
4
a
min
i4
x
>


=

,
_

7
2
7
6
2
,
1
min
7
9
=
2
3
i5
i
0 a
3 i 1
5
a
min
i5
x
>


=

,
_

7
1
7
11
3
,
2
min
7
4
=
11
8
i6
i
0 a
3 i 1
6
a
min
i6
x
>


=

,
_

7
2
7
1
7
3
3
,
2
,
1
min
7
22
=
3
22
i8
i
0 a
3 i 1
8
a
min
i8
x
>


=

,
_

7
5
3
min
7
6
=
5
18
i n final max (
2
3
,
11
8
,
3
22
,
5
18
) =
3
22
i corespunde tot lui
6
.
n concluzie, soluia actual nu este optim i soluia cea mai bun dintre cele posibile ca
succesoare va avea variabila x
6
printre cele principale.
Analiznd coloana a
6
observm c exist componente strict pozitive (de fapt, n acest caz
sunt chiar toate) i calculm pentru acestea rapoartele
i
obinnd:

1
=
7
3
1
=
3
7
,
2
=
7
1
2
= 14,
3
=
7
2
3
=
2
21

deci minimul corespunde variabilei x
1
i aceasta este cea care va iei din baz. n cest moment
cunoatem noua baz i vom construi tabelul simplex pe baza regulilor de calcul de la pasul 4:
1. pivotul este a
16
=
7
3
4. de exemplu, pentru elementul de pe poziia a
34
avem dreptunghiul:
i noua valoare de pe aceast poziie va fi:
7
3
7
2
7
6
7
3
7
3

,
_


= 1
n final, tabelul corespunztor noii baze va fi:
3 2 1 4 3 5 0 0 0
c
B
x
B
x
B
x
1
x
2
x
3
x
4
x
5
x
6
x
7
x
8
x
9
41
7
6
7
3

7
3
7
2
Programarea liniar
5
2
1
x
6
x
2
x
3
3
7
3
5
3
7
3
2
1
3
2
0
3
1
1 1 0
3
2
3
1
0
3
2
0
3
5
0 0 1
3
1
3
4
1
3
1
1
3
2
2 0 0
3
7



3
52
3
16
4
3
7
0
3
8
5 0 0
3
22

Continund algoritmul vom gsi tabelele:
3 2 1 4 3 5 0 0 0
c
B
x
B
x
B
x
1
x
2
x
3
x
4
x
5
x
6
x
7
x
8
x
9
5
2
0
x
6
x
2
x
8
3
14
3
5
3
7
3
2
1
3
2
0
3
1
1 1 0
3
2
3
1
0
3
2
0
3
5
0 0 1
3
1
3
2
0
3
1
1
3
1
1 1 0
3
5



3
80
3
8
0
3
1
0
3
4
1 4 0
3
14

3 2 1 4 3 5 0 0 0
c
B
x
B
x
B
x
1
x
2
x
3
x
4
x
5
x
6
x
7
x
8
x
9
5
3
0
x
6
x
5
x
8
5
1
2
5
3
1
5
4
0 0 1 1
5
1
5
3
5
1
0
5
2
0 1 0 0
5
3
5
1
5
3
0
5
1
1 0 1 1
5
1
5
8

28
5
2
0
5
1
0 0 1 4
5
4
5
22
Ultimul tabel conine soluia optim, deoarece toi
j
0. Deoarece nu mai exist nici un

j
= 0 n afara celor din baz rezult c soluia optim este unic.
Determinarea unei soluii de baz admisibile de start
Presupunem nc odat c problema este la forma standard.
Algoritmul simplex necesit, pentru pornire, o soluie admisibil de baz. Gsirea acesteia
pur i simplu prin ncercri nu este deloc o sarcin uoar, gndindu-ne c aceasta presupune
gsirea unui minor principal, inversarea acestuia i calcularea soluiei, abia n acest moment putnd
vedea dac aceasta are toate componentele pozitive, aceast cutare putnd dura foarte mult.
Rezolvarea problemei pleac de la observaia c singura baz pentru care calculul de mai sus
se poate face imediat este matricea unitate, caz n care soluia de baz corespunztoare este chiar
vectorul termenilor liberi. Aceasta presupune ca problema s aib toi termenii liberi mai mari sau
egali cu 0 i n matricea A s existe toate coloanele matricii unitate.
42
Bazele cercetrii operaionale
Dac toi termenii liberi pot fi fcui mai mari sau egali cu 0 foarte simplu, prin nmulirea
eventual cu 1 a restriciei respective, existena tuturor coloanelor matricii unitate este evident c
este foarte puin probabil i mai greu de obinut.
n acest sens plecm de la observaia c existena unui vector din coloana unitate printre
coloanele matricii A este echivalent cu existena unei variabile care apare doar n ecuaia
corespunztoare lui 1 din acel vector, cu coeficientul 1. Acest lucru poate fi obinut n dou
moduri:
a) ncepnd de la prima ecuaie, cutm o variabil care are coeficientul de
acelai semn cu termenul liber, o scoatem din aceast ecuaie n funcie de celelalte
variabile, o nlocuim n celelalte i repetm procedeul pornind de la a doua ecuaie. Pot
aprea trei cazuri:
1) la un moment dat obinem o ecuaie n care toi coeficienii
variabilelor au semn contrar termenului liber, mcar unul dintre toi fiind diferit de
0. n acest caz ecuaia nu are evident soluie admisibil(pozitiv) i deci problema
nu are soluie;
2) toi coeficienii variabilelor i termenul liber sunt 0. n acest caz
rezult c aceast ecuaie rezult din cele anterioare i ea va fi eliminat, trecndu-
se la urmtoarea;
3) se epuizeaz toate ecuaiile. n acest moment, variabilele care au fost
scoase din fiecare ecuaie formeaz baza dorit.
Procedeul de mai sus poate prea atractiv, dar presupune introducerea unui algoritm
diferit de simplex, cu efect asupra omogenitii calculelor i a vitezei de lucru. De
asemenea, prin efectuarea calculelor de mai sus, datele problemei nu mai au semnificaia
economic iniial, ne mai putndu-se face interpretri economice.
b) Pentru toi vectorii coloan introducem n ecuaiile corespunztoare cte o
variabil cu coeficientul 1. Vom obine evident un nou sistem de restricii i rmne de
vzut ce legtur este ntre soluiile acestuia i cel iniial. Cele dou sisteme au forma:
A x = b i A x + y = b
Este evident c o soluie a primului sistem este soluie i a celui de-al doilea (lum y = 0)
iar o soluie a celui de-al doilea este soluie i pentru primul doar dac y = 0. Scopul
nostru va fi deci, ca pornind de la soluia iniial a celei de-a doua probleme s ajungem
la o soluie a acesteia n care y = 0. innd cont c n soluiile de baz, variabilele
secundare sunt toate egale cu 0, vom ncerca s scoatem din baz variabilele y. Scopul
algoritmului simplex este ns maximizarea funciei obiectiv, nu scoaterea a uneia sau
alteia din variabile din baz. Pentru a echivala cele dou scopuri putem proceda n dou
feluri:
1) Alegem o nou funcie obiectiv care s-i ating extremul printre
soluiile pozitive chiar pentru y = 0 i n momentul cnd am obinut soluia
respectiv pornim cu aceasta ca soluie iniial algoritmul simplex pentru fosta
problem.
2) Adugm la fosta funcie obiectiv noile variabile cu nite coeficieni
de asemenea natur alei nct aportul variabilelor y la valoarea funciei s fie
contrar scopului dorit (foarte mari pozitivi ntr-o problem de minim i foarte mari
negativi ntr-o problem de maxim).
Vom detalia n continuare cele dou metode:
Algoritmul simplex n dou faze
Dat problema de programare liniar la forma standard de maxim:
43
Programarea liniar
( )

'



0 x
b x A
x c max
T
f
n care am aranjat deja ca toi termenii liberi s fie pozitivi (b 0).
Faza 1 Construim problema:
( )

'

0 y x,
b y x A
y min g
pe care o rezolvm cu algoritmul simplex pornind rezolvarea de la baza matrice unitate, putnd
ajunge la dou situaii:
1) minimul funciei g este strict pozitiv. Aceasta este echivalent cu faptul c
egalitatea Ax + y = b se poate obine doar pentru y > 0 sau altfel spus Ax > b pentru
orice x 0, deci sistemul Ax = b nu are soluii admisibile i n concluzie problema
iniial nu are soluie.
2) minimul funciei g este 0. n acest caz, soluia optim obinut are y = 0,
deci verific Ax = b fiind n concluzie o soluie admisibil de baz a primei probleme.
Faza 2 ncepnd de la soluia gsit la faza 1 se rezolv problema iniial cu algoritmul simplex.
Dezavantajul metodei const n faptul c tabelul simplex final de la faza 1 trebuie modificat
pentru a obine tabelul simplex iniial de la faza 2 (vectorii x, c, c
B
, z, , f(x
B
), se elimin coloanele
corespunztoare lui y) i n plus nu vom mai avea n tabelele simplex ale problemei iniiale inversa
bazei (care se gsea n dreptul coloanelor matricii unitate din prima faz) necesar n anumite
variante ale algoritmului simplex.
Metoda bazei artificiale (metoda penalizrii)
Dat problema de programare liniar la forma standard de maxim:
( )

'



0 x
b x A
x c max
T
f
n care am aranjat deja ca toi termenii liberi s fie pozitivi (b 0).
Construim problema:
( )

'

+

0 y x,
b y x A
My x c max
T
g
n care M este o constant presupus foarte mare (mai mare dect orice constant care ar putea
apare n rezolvarea problemei). Rezolvm problema cu algoritmul simplex pornind rezolvarea de la
baza matrice unitate, putnd ajunge la trei situaii:
1) problema are optim infinit. n acest caz, problema iniial are optim infinit.
44
Bazele cercetrii operaionale
2) problema are optim finit i n soluia de baz avem cel puin o variabil din
vectorul y. n acest caz problema iniial nu are soluii admisibile.
3) problema are optim finit i n soluia de baz nu avem nici o variabil din
vectorul y. n acest caz problema iniial are optim finit, soluia optim i maximul
funciei fiind aceleai cu cele ale problemei modificate.
n final vom remarca faptul c variabilele y nu corespund unor mrimi economice ca
celelalte, ele fiind introduse doar ca un artificiu de calcul pentru a putea porni algoritmul simplex.
Din acest motiv ele se numesc variabile artificiale.
45
Programarea liniar
Exemplu Fie problema de programare liniar:
( )

'

+
+
+
0 x , x
2 x 4 x
10 x x 3
x 3 x 2 max
2 1
2 1
2 1
2 1
f
Forma standard a problemei va fi:
( )

'

+
+ +
+
0 x , x , x , x
2 x x 4 x
10 x x x 3
x 3 x 2 max
4 3 2 1
4 2 1
3 2 1
2 1
f
Avem deja termenii liberi i o coloan a matricii unitate
,
_

0
1
corespunztoare variabilei x
3
.
Pentru a obine i a doua coloan
,
_

1
0
vom introduce variabila x
5
cu coeficientul 1 n a doua ecuaie
i n final vom avea de rezolvat problema:
Algoritmul simplex n dou faze Metoda bazei artificiale
( )

'

+ +
+ +

0 x , x , x , x , x
2 x x x 4 x
1 0 x x x 3
x m i n
5 4 3 2 1
5 4 2 1
3 2 1
5
g ( )

'

+ +
+ +
+
0 x , x , x , x , x
2 x x x 4 x
10 x x x 3
Mx x 3 x 2 max
5 4 3 2 1
5 4 2 1
3 2 1
5 2 1
f
Aplicnd algoritmul simplex n dou faze vom obine n prima faz succesiunea de tabele:
0 0 0 0 1
c
B
x
B
x
B
x
1
x
2
x
3
x
4
x
5
0 x
3
10 3 1 1 0 0
1 x
5
2 1 4 0 -1 1
2 1 4 0 -1 1
1 4 0 -1 0
0 0 0 0 1
c
B
x
B
x
B
x
1
x
2
x
3
x
4
x
5
0 x
3
2
19
4
11
0 1
4
1
4
1

0 x
2
2
1
4
1
1 0
4
1

4
1
0 0 0 0 0 -1
Am obinut optimul egal cu 0 n soluia de baz (x
3
,x
2
) care va fi soluia iniial pentru
algoritmul simplex aplicat problemei iniiale n a doua faz. Eliminm din tabel coloana lui x
5
,
nlocuim valorile coeficienilor funciei obiectiv i deci i valoarea acesteia, valorile i obinem
tabelul:
46
Bazele cercetrii operaionale
2 3 0 0
c
B
x
B
x
B
x
1
x
2
x
3
x
4
0 x
3
2
19
4
11
0 1
4
1
3 x
2
2
1
4
1
1 0
4
1

2
3
4
5

0 0
4
3


2 3 0 0
c
B
x
B
x
B
x
1
x
2
x
3
x
4
0 x
3
4 0 -11 1 3
2 x
1
2 1 4 0 -1
4 0 5 0 -2
2 3 0 0
c
B
x
B
x
B
x
1
x
2
x
3
x
4
0 x
4
3
4
0
3
11

3
1
1
2 x
1
3
10
1
3
1
3
1
0
3
20
0
3
7

3
2
0
2 3 0 0
c
B
x
B
x
B
x
1
x
2
x
3
x
4
0 x
4
38 11 0 4 1
3 x
2
10 3 1 1 0
30 7 0 3 0
Soluia optim a primei probleme este deci x
1
= 0 i x
2
= 10 care d un maxim al funciei
egal cu 30. Dac aplicm a doua metod vom obine succesiv tabele:
2 3 0 0 -M
c
B
x
B
x
B
x
1
x
2
x
3
x
4
x
5
0 x
3
10 3 1 1 0 0
-M x
5
2 1 4 0 -1 1
-2M -M -4M 0 M -M
-M-2 -4M-3 0 M 0
2 3 0 0 -M
c
B
x
B
x
B
x
1
x
2
x
3
x
4
x
5
0 x
3
2
19
4
11
0 1
4
1
4
1

3 x
2
2
1
4
1
1 0
4
1

4
1
2
3
4
5

0 0 4
3

M+
4
3

47
Programarea liniar
2 3 0 0 -M
c
B
x
B
x
B
x
1
x
2
x
3
x
4
x
5
0 x
3
4 0 -11 1 3 -3
2 x
1
2 1 4 0 -1 1
4 0 5 0 -2 2+M
2 3 0 0 -M
c
B
x
B
x
B
x
1
x
2
x
3
x
4
x
5
0 x
4
3
4
0
3
11

3
1
1 -1
2 x
1
3
10
1
3
1
3
1
0 0
3
20
0
3
7

3
2
0 M
2 3 0 0 -M
c
B
x
B
x
B
x
1
x
2
x
3
x
4
x
5
0 x
4
38 11 0 4 1 -1
3 x
2
10 3 1 1 0 0
30 7 0 3 0 M
Rezultatul final este evident acelai.
VARIANTE ALE ALGORITMULUI SIMPLEX
1. Algoritmul simplex dual
Pentru expunerea acestui algoritm trebuie introduse noiunile de baz dual admisibil i
soluie dual admisibil de baz. Prin definiie numim:
soluie de baz dual admisibil =
soluie de baz pentru care toi
j

0
baz dual admisibil = baz corespunztoare unei soluii de
baz dual admisibile
Ca i n cazul algoritmului simplex, pentru a putea rezolva problema cu algoritmul simplex
dual trebuie s dispunem deja de o baz iniial dual admisibil. Aceast soluie poate exista ca
urmare a unor calcule anterioare (vezi capitolul cu reoptimizarea) sau, ca i n cazul algoritmului
simplex, poate fi aplicat o procedur prin care s gsim aceast baz. Prezentarea acesteia este mai
complicat dect cea de la algoritmul simplex astfel nct:
dac dispunem de o baz dual admisibil vom rezolva problema cu algoritmul simplex
dual
dac nu dispunem de o baz dual admisibil vom rezolva problema cu algoritmul
simplex.
Pentru a evita orice confuzie, vom numi n continuare algoritmul simplex obinuit algoritm
simplex primal i o baz admisibil baz primal admisibil.
Se observ c o soluie dual admisibil nu este n general primal admisibil i reciproc, iar o
soluie care este simultan primal i dual admisibil este o soluie optim i reciproc.
Presupunem c am adus problema la forma standard de maxim i dispunem de o baz dual
admisibil i dispunem deja de de o baz dual admisibil. Algoritmul simplex dual const n
48
Bazele cercetrii operaionale
urmtorii pai:
Pasul 1. Se construiete tabelul simplex asociat acestei baze, la fel ca i la algoritmul simplex
primal;
Pasul 2. Se analizeaz componentele soluiei:
Dac toate componentele sunt mai mari sau egale cu 0 atunci
soluia este i primal admisibil, deci optim.
Dac exist componente strict negative, variabila corespunztoare
celei mai negative (x
i
= k
m k 1
x min

) este cea care iese din baz. Dac minimul este
multiplu se ia una la ntmplare.
Pasul 3. Se analizeaz linia l
i
corespunztoare variabilei x
i
aleas la pasul 2:
Dac toate componentele a
ij
j = 1,...,n sunt mai mari sau egale cu 0,
atunci am avea o ecuaie cu toi coeficienii necunoscutelor pozitivi i termenul
liber strict negativ, deci problema nu are soluii primal admisibile.
Dac exist componente strict negative, atunci pentru acestea se
gsete acel indice pentru care se obine
ij
j
0 a
a
min
ij

<
(prin

am notat modulul
numrului ). Dac minimul este multiplu alegem unul dintre acetia la
ntmplare. Variabila corespunztoare acestuia este cea care intr n baz.
Pasul 4. Se construiete tabelul corespunztor noii baze aplicnd aceleai reguli ca la algoritmul
simplex primal;
Pasul 5. Se reia algoritmul de la pasul 2
2. Forma secundar
Este evident c modul de organizare al datelor n tabelul simplex nu este unicul mod de a
organiza datele ntr-un tabel. Forma secundar este tocmai o astfel de alternativ. Presupunem i n
acest caz c problema este la forma standard de maxim, c problema este la forma standard i c
dispunem de o soluie iniial de baz care este primal sau dual admisibil.
Pasul 1. Datele problemei vor fi organizate ntr-un tabel de forma:
c
S
c x f x
S
f(x
B
)

S
c
B
x
B
x
B
= B
-
1
b
B
-1
S
c
S
x
S
0 I
n-m
Se observ c singura diferena este c la coloana variabilelor bazei din stnga se adaug
i cele secundare, pe orizontal se las doar variabilele secundare iar n loc de matricea
unitate n dreptul variabilelor principale vom avea matricea unitate n dreptul celor
secundare (dar cu minus), fiind calculat la fel, neglijndu-se cei din dreptul
variabilelor principale, care oricum erau 0.
Pasul 2. + Pasul 3. Se gsesc variabila care iese din baz i cea care intr n baz cu aceleai
reguli ca la algoritmul simplex primal sau, dup caz, ca la cel dual.
49
Programarea liniar
Pasul 4. Se construiete tabelul asociat noii baze aplicnd regulile:
1) Pivotul este acelai ca la tabelul simplex;
2) Linia pivotului are 1 n dreptul pivotului i 0 n rest;
3) Coloana pivotului se mparte la pivotul cu semn schimbat
4) Celelalte elemente se calculeaz cu regula dreptunghiului
Pasul 5. Se reia algoritmul de la pasul 2.
Exemplu Fie problema de programare liniar rezolvat mai sus:
( )

'

+
+
+
0 x , x
2 x 4 x
10 x x 3
x 3 x 2 max
2 1
2 1
2 1
2 1
f
Forma standard a problemei va fi:
( )

'

+
+ +
+
0 x , x , x , x
2 x x 4 x
10 x x x 3
x 3 x 2 max
4 3 2 1
4 2 1
3 2 1
2 1
f
iar dup introducerea variabilelor artificiale obinem:
( )

'

+ +
+ +
+
0 x , x , x , x , x
2 x x x 4 x
10 x x x 3
Mx x 3 x 2 max
5 4 3 2 1
5 4 2 1
3 2 1
5 2 1
f
Tabelul corespunztor va fi:
2 3 0
c
B
x
B
x
B
x
1
x
2
x
4
-2M -M-2 -4M-3 M
2 x
1
0 -1 0 0
3 x
2
0 0 -1 0
0 x
3
10 3 1 0
0 x
4
0 0 0 -1
-M x
5
2 1 4 -1
Aplicm simplex primal i obinem cel mai negativ
j
corespunztor lui x
2
i
i
minim
corespunztor lui x
5
. n acest moment avem o soluie de baz a problemei iniiale i putem elimina
variabila x
5
. Obinem:
2 -M 0 2 0
c
B
x
B
x
B
x
1
x
5
x
4
c
B
x
B
x
B
x
1
x
4
2
3
4
5

M+ -
2
3
4
5

-
2 x
1
0 -1 0 0 2 x
1
0 -1 0
3 x
2
-

3 x
2
-
0 x
3
2
19

4
11
- 0 x
3
2
19

4
11

50
Bazele cercetrii operaionale
0 x
4
0 0 0 -1 0 x
4
0 0 -1
-M x
5
0 0 -1 0
i n continuare:
51
Programarea liniar
3 0 3 0
c
B
x
B
x
B
x
2
x
4
c
B
x
B
x
B
x
2
x
3
4 5 -2
3
20
3
7

3
2
2 x
1
2 4 -1 2 x
1
3
10
3
1
3
1

3 x
2
0 -1 0

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

3
1
2 0
c
B
x
B
x
B
x
1
x
3
30 7 3

2 x
1
0 -1 0
3 x
2
10 3 1
0 x
3
0 0 -1
0 x
4
38 11 4
Din rezolvarea de mai sus se observ c aceast metod este mai eficient doar dac
numrul variabilelor secundare este mai mic dect numrul variabilelor principale. Totui, motivul
principal pentru care a fost introdus aceast variant, este existena unor probleme n care, pe
parcursul rezolvrii, se adaug foarte multe restricii (de exemplu rezolvarea problemelor n numere
ntregi), pentru o restricie n plus tabelul simplex mrindu-se cu o linie i o coloan (cum se va
vedea la capitolul de reoptimizare) iar tabelul corespunztor formei secundare doar cu o linie.
3. Forma revizuit a algoritmului simplex
O problem mare (de exemplu cu 1000 variabile i 100 restricii) necesit n algoritmul
simplex introducerea, memorarea i lucrul cu un tabel cu 100.000 componente, adic un numr
imens de date. Din acest motiv, i remarcnd faptul c n algoritmul simplex doar o parte din
acestea contribuie efectiv la luarea deciziilor, s-a construit un algoritm care s in cont de
observaiile de mai sus, numit "forma revizuit a algoritmului simplex", n care se lucreaz cu
minimul necesar din datele tabelului simplex. Astfel, pentru testarea soluiei actuale i trecerea
eventual la o nou baz avem nevoie doar de urmtoarele elemente:
(1) inversa bazei curente B
-1
(2) componentele vectorului pentru a face testul de optim i a gsi variabila
care intr n baz (dac soluia nu e optim)
(3) coloana a
k
din B
-1
A corespunztoare celui mai negativ
j
(dac exist strict
negativi) pentru a face testul de optim infinit
(4) soluia curent pentru a gsi variabila care iese din baz (dac mai e cazul)
Aceste elemente se aeaz ntr-un tabel de forma:
c
B
x
B
x
B
= B
-1
b B
-1
52
Bazele cercetrii operaionale
f(x
B
)
=
T
B
c B
-1
numit tabelul simplex redus.
Operaiile ce se efectueaz n cadrul algoritmului simplex revizuit sunt (presupunem c
problema este la forma standard de maxim i deinem o soluie admisibil de baz i inversa bazei
corespunztoare):
Pasul 1. Se calculeaz
j
corespunztori variabilelor secundare cu formula cunoscut:

j
=
T
B
c B
-1
P
j
- c
j
= P
j
- c
j
unde P
j
este coloana corespunztoare variabilei x
j
din matricea iniial.
Pasul 2. Se analizeaz
j
calculai:
dac toi sunt mai mari sau egali cu 0 soluia curent este optim. STOP
dac exist
j
strict negativi se alege minimul dintre acetia
k
, variabila x
k
va intra n baz i se trece la pasul 3.
Pasul 3. Se calculeaz a
k
= B
-1
P
k
care se ataeaz ca nou coloan la tabel:
c
B
x
B
x
B
= B
-1
b B
-1
a
k
= B
-1
P
k
f(x
B
)
=
T
B
c B
-1

k
Pasul 4. Se analizeaz componentele coloanei a
k
:
dac toate sunt mai mici sau egale cu 0 problema are optim infinit. STOP
dac exist a
ik
strict pozitivi se alege cel pentru care se obine:
a
rk
=
ik
i
0 a
m i 1
a
min
ik
x
>

i variabila x
r
va iei din baz apoi se trece la pasul 5.
Pasul 5. Se pivoteaz ntregul tabel simplex i se elimin ultima coloan.
Pasul 6. Se reia algoritmul de la pasul 2.
Exemplu Fie problema de programare liniar rezolvat mai sus:
( )

'

+
+
+
0 x , x
2 x 4 x
10 x x 3
x 3 x 2 max
2 1
2 1
2 1
2 1
f
53
Programarea liniar
Forma standard a problemei va fi:
( )

'

+
+ +
+
0 x , x , x , x
2 x x 4 x
10 x x x 3
x 3 x 2 max
4 3 2 1
4 2 1
3 2 1
2 1
f
iar dup introducerea variabilelor artificiale obinem:
( )

'

+ +
+ +
+
0 x , x , x , x , x
2 x x x 4 x
10 x x x 3
Mx x 3 x 2 max
5 4 3 2 1
5 4 2 1
3 2 1
5 2 1
f
Iteraia 1. Prima baz este B = I
2
= B
-1
corespunztoare variabilelor x
3
i x
5
de unde rezult x
B
=

,
_

2
10
i = (0,-M) I
2
= (0,-M). Primul tabel redus va fi:
0
-M
x
3
x
5
10
2
1
0
0
1
-2M 0 -M
Se calculeaz
S
= S c
S
= (0,-M)
,
_

1 4 1
0 1 3

( ) 0 3 2
=
( ) M 3 M 4 2 M
de unde rezult c cel mai negativ este
2
i vom calcula coloana a
2
=
I
2

,
_

4
1
=
,
_

4
1
care se adaug la tabelul anterior rezultnd:
0
-M
x
3
x
5
10
2
1
0
0
1
1
4
-2M 0 -M -4M-3

i
minim este cel corespunztor lui x
5
i deci variabila x
2
va intra n locul variabilei x
5
.
Dup pivotare i eliminarea ultimei coloane obinem:
0
3
x
3
x
2
2
19

1
0
-

2
3
0
Deoarece variabila artificial x
5
a ieit din baz ea va fi eliminat din problem.
Iteraia 2.
S
= S c
S
= (0,)
,
_

1 1
0 3

( ) 0 2
= (
4
3
4
5
)
cel mai negativ este
1
i vom calcula coloana a
1
=

,
_


4
1
4
1
0
1

,
_

1
3
=

,
_

4
1
4
1 1
care se
adaug la tabelul anterior rezultnd:
0
3
x
3
x
2
2
19

1
0
-

4
11

54
Bazele cercetrii operaionale
2
3
0
4
5

i
minim este cel corespunztor lui x
2
i deci variabila x
1
va intra n locul variabilei x
2
.
Dup pivotare i eliminarea ultimei coloane obinem:
0
2
x
3
x
1
4
2
1
0
-3
1
4 0 2
Iteraia 3.
S
= S c
S
= (0,2)
,
_

1 4
0 1

( ) 0 3
= (
2 8
)
cel mai negativ este
4
i vom calcula coloana a
4
=
,
_


1 0
3 1

,
_

1
0
=
,
_

1
3
care se
adaug la tabelul anterior rezultnd:
0
2
x
3
x
1
4
2
1
0
-3
1
3
-1
4 0 2 -2

i
minim este cel corespunztor lui x
3
i deci variabila x
4
va intra n locul variabilei x
3
.
Dup pivotare i eliminarea ultimei coloane obinem:
0
2
x
4
x
1
3
4
3
10
3
1
3
1
-1
0
3
2 0
3
2
0
Iteraia 4.
S
= S c
S
= (
3
2
,0)
,
_

0 4
1 1

( ) 0 3
= ( 0
3
7
)
cel mai negativ este
2
i vom calcula coloana a
2
=

,
_


0
1
3
1
3
1

,
_

4
1
=

,
_


3
1
3
1 1
care se
adaug la tabelul anterior rezultnd:
0
2
x
4
x
1
3
4
3
10
3
1
3
1
-1
0
3
1 1

3
1
3
2 0
3
2
0
3
7

i
minim este cel corespunztor lui x
1
i deci variabila x
2
va intra n locul variabilei x
1
.
Dup pivotare i eliminarea ultimei coloane obinem:
55
Programarea liniar
0
3
x
4
x
2
38
10
4
1
-1
0
30 3 0
Iteraia 5.
S
= S c
S
= (3,0)
,
_

0 1
1 3

( ) 0 2
= (
3 7
) >0 deci soluia este optim (i
unic) STOP
Chiar dac la prima vedere calculele par mai mprtiate i deci mai lente, pentru probleme
mari, pe calculator se economisete foarte mult memorie i se mrete foarte mult viteza de calcul.
Totui, marele avantaj al acestei metode este acela c, la fiecare iteraie, se folosesc datele
problemei iniiale, ceea ce face ca erorile inerente de rotunjire s nu se propage, rmnnd n limite
acceptabile.
56