Sunteți pe pagina 1din 16

2.

ELEMENTE DE PROGRAMARE LINIAR


Programarea liniar reprezinta fundamentele disciplinei cercetari operationale
numita si teoria optimizarii deciziilor. Problemele de programare liniar constau in
determinarea valorii optime a unei funcii liniare de mai multe variabile, cu o semnificaie
economica precis, tiind c variabilele trebuie s ndeplineasc anumite condiii, numite
restrictii.
Problemele de programare liniar pot fi considerate ca extensii ale problemelor de
extremum cu legaturi, dar metodele de rezolvare sunt diferite. Cele mai cunoscute probleme
practice care conduc la modele liniare sunt programarea produciei i a personalului,
alctuirea unui amestec sau stabilirea dietei cu cost minim, problema clasica a transporturilor.
Algoritmii simplex cu ajutorul carora se rezolva problemele de programare liniara
utilizeaza notiuni fundamentale din algebra liniara. De aceea, in prima parte reamintim aceste
notiuni si cateva rezultate importante care se folosesc apoi in programarea liniara.
2.1. Preliminarii de algebra liniara
Fie n > 1 un numr natural. Se noteaz cu R n mulimea sistemelor de n numere reale
de forma:
x1

x2
x = , xi R, i = 1, n
M

x
n

numite vectori sau vectori coloan n-dimensionali.


Se definesc operatiile:
x1 + y1
x1

x2 + y2
x2
x+ y =
si x =
, respective adunarea a doi vectori si nmulirea unui
M

x + y
n
n

x
3

vector cu un numr real, numit scalar.


Adunarea vectorilor este asociativa, comutativa, are un element neutru, notat 0 i care are
x1

x2
toate componentele zero, si vectorul x =
reprezinta opusul vectorului x din R n .

x
n

Alte proprieti ale lui R n legate de nmulirea cu scalari sunt :


- pentru orice R, x, y R n , ( x + y ) = x + y.
- pentru orice , R , avem : ( + ) x = x + x
- pentru orice + R , x R n , ( x) = ( ) x
- pentru orice x R n , 1.x = x evident.
In aceste conditii, R n are o structur de spaiu vectorial real.
Fie vectorii a1, a2 ,..., ak R n i scalarii 1, 2 ,..., k R.
Definiia 2.1. Se numete combinaie linar a vectorilor a1, a2 ,..., ak R n cu scalarii
1, 2 ,..., k R vectorul x = 1a1 + 2 a2 + ... + k ak .

Se spune c vectorul x R n este o combinaie liniar a vectorilor a1, a2 ,..., an , dac exist
scalarii 1, 2 ,..., k astfel nct s avem: x = 1a1 + 2 a2 + ... + k ak .
Definiia 2.2. Un sistem de vectori S = {v1, v2 ,..., vm } se numete liniar independent
dac din relaia 1v1 + 2v2 + ... + m vm = 0 , rezult 1 = 2 = ... = m = 0 unic soluie. Altfel,
daca mcar unul din scalarii 1, 2 ,..., m este diferit de zero, atunci sistemul S se numete
liniar dependent.
Pentru cazul spaiul vectorial R n exist o teorem ce caracterizeaz natura unui sistem
de vectori i pe care o dm mai jos. Fie S = { 1, 2 ,..., m } R n , unde :
a11
a12
a1m
a11 a12

a
a21
a2
a2 m
a
a1 =
, a2 =
, , am =
i A = 21 22

...
...
M
M
M

a
a
a
a
n1
n2
nm
n1 an 2
(astfel notat A = (aij )i =1,n ) matricea avnd drept coloane vectorii dai.

... a1m

... a2m
,
... ...

... anm

j =1, m

Reamintim c rangul unei matrici este un numr mai mic sau egal cu minimul dintre
numrul de linii i numrul de coloane, rangA min{m, n} , care reprezint ordinul maxim al
minorului nenul al matricii.
Propoziia 2.1. O condiie necesar i suficient ca sistemul de vectori S s fie liniar
independent este ca rangul matricei A s fie egal cu numrul vectorilor, adic rangA = m . n
caz contrar, sistemul S este liniar dependent.
a111 + a122 + ... + a1mm = 0

a + a + ... + a2mm = 0
.
Demonstraie. Fie 1a1 + 2 a2 + ... + m am = 0 , adica 21 1 22 2
...............................................
an11 + an 22 + ... + anmm = 0

Din teoria sistemelor liniare omogene se tie c o condiie necesar i suficient pentru ca
sistemul precedent s admit numai soluia banal este ca rangA = numrul necunoscutelor =
m. Cum m este i numrul vectorilor din S, prima parte a teoremei este demonstrat.
Dac rangA < m , sistemul admite si alte soluii dect cea banal i reciproc, deci exist mcar
un scalar i 0 printre scalarii 1, 2 ,..., m i rezult din definiia 2.2 c S este un sistem de
vectori liniar dependent.
Practic, pentru a afla natura unui sistem de m vectori din R n , se calculeaza
r = rangA; si apoi
i)
dac r = m sistemul de vectori este liniar independent;
ii)
dac r < m sistemul de vectori este liniar dependent.
Reamintim ca numrul maxim de vectori liniari independeni n R n este n .
Definiia 2.3. Se numete baza n R n orice sistem de n vectori liniar independeni.
Din definiie se vede c o baz este un sistem liniar independent maximal n raport cu
incluziunea. Din aceasta rezult c orice sistem care are n + 1 vectori este liniar dependent.
Exist o infinitate de baze n R n . Practic, pentru a decide dac sistemul de vectori
A = {a1, a2 ,..., an } este o baz, se calculeaza det A, unde A este matricea care are drept coloane
vectorii a1, a2 ,..., an ; Dac det A 0 , sistemul A formeaz o baz.

Propoziia 2.2. (Teorema bazei). Fie A = {a1, a2 ,..., an } o baz n R n i x un vector


oarecare din
Rn.
Atunci exist scalarii unici 1, 2 ,..., n R astfel nct
x = 1a1 + 2 a2 + ... + n an , adica x se poate exprima ca o combinaie liniar de vectori ai
bazei i aceast exprimare este unic.
1


Sub forma matriciala, sistemul se scrie Ax A = x, unde x A = 2 sunt coeficienii combinaiei
M


n

liniare. Ei se mai numesc coordonatele (componentele) vectorului x scris n baza A. De aici


rezulta ca x A = A1x .
Baza

canonic

din

R n este

baza

format

din

vectorii

unitari

1

0
e1 = ,
M

0

0
0


1
0
e2 = ,..., en = . , iar matricea asociat bazei se noteaza cu I , si se numeste matricea
M
M


0
1


x1

x
n
unitate de ordinul n . Orice vector din R , x = 2 se exprim x = x1e1 + x2e2 + ... + xnen .
M

x
n

O problema importanta, reluata la fiecare pas din algoritmul simplex, este


transformarea coordonatelor unui vector la schimbarea bazei. Fie dou baze ale spaiului
vectorial

R n : A = {a1, a2 ,..., an } i B = {b1, b2 ,..., bn } . Cu A i B vom nota matricile asociate

11 a22 L a1n
11 b22 L b1n

celor dou baze din R n , adic: A = a12 a23 L a2n , B = b12 b23 L b2n .
M
M
M
M
M
M
a

n1 an 2 L ann
bn1 bn 2 L bnn

1
1


2

n
Evident, det A 0, det B 0. Fie x R i x A = xB = 2 , coordonatele vectorului x n
M
M




n
n

cele dou baze. Vectorii din R n , b1, b2 ,..., bn pot fi exprimai n baza A astfel :
b1 = c11a1 + c12 a2 + ... + c1n an , b 2 = c21a1 + c22 a2 + ... + c2 n an ,..., bn = cn1a1 + cn 2 a2 + ... + cnn an ,
n

adica bi = cij a j , i = 1, n n care cij R sunt coordonatele de trecere ale vectorilor din baza A
j =1

n baza B i formeaz matricea C = (cij )i, j =1,n . Matriceal, se scrie B = A C T , unde observam

ca si matricea C este nesingular. Se demonstreaza ca x A = CT xB , ceea ce se mai poate scrie


sub forma x B = (C T ) 1 x A , numita formula de schimbare de baz n R n .
Din relatia C T = A1B , rezulta (C T ) 1 = B 1 A.
Dac baza A este baz canonic, atunci matricea A este matricea unitate, si atunci

obtinem xB = B 1x. , n care x reprezint coordonatele vectorului x n baza unitar.


Caz particular. In programarea liniara, intereseaza in mod deosebit calcularea
coordonatelor unui vector cnd se trece de la o baz la o nou baz care difer de prima
printr-un singur vector.
Fie A = {a1, a2 ,..., an } i B = {b1, b2 ,..., bn } dou baze din R n care difer printr-un singur
vector. Pentru simplificarea scrierii, consideram ca se schimba primul vector, dar
raionamentul este asemntor pentru oricare din ei.
Fie b R n , care se poate exprima n baza A, b = 1a1 + 2 a2 + ... + n an . Deoarece 1 0, (altfel

1
B nu ar fi baz), obtinem a1 = b 2 a2 ... n an .
1
1
1
Presupunem
ca
stim
coordonatele
lui
x
in
baza
A,
x = 1a1 + 2a2 + ... + n an , x A = (1, 2 ,..., n )T . Ne propunem sa determinan coordonatele
vectorului x in noua baza B, adica x = 1a1 + 2 a2 + ... + n an , xB = ( 1, 2 ,..., n )T . Avem

21
b 2 a2 ... n an ) + 2a2 + ... + n an = 1 b + 1 2
a2 + ... +
x = 1 (
1
1
1
1
1
1

1 =
1

2 = 1 221
1 n n1
an . Vom obtine
+
, adica coordonatele in noua baza.
1
1
L

1 n n1
n =
1

Rezultatele precedente se pot organiza sub forma unor tabele, n prima etap aflnduse date cunoscute, iar a doua date calculele :

Etapa I

Etapa II

Pentru exemplul nostru, 1 se numete pivot. Elementele de la etapa a doua se calculeaz


astfel :
- se mpart elementele de pe linia pivotului la pivot i se trec pe linia pivotului la etapa a II-a.
- se completeaza coloana pivotului cu zero ;
- restul elementelor se calculeaz cu regula dreptunghiului.
Pentru elementul de pe locul al doilea ( 2 ) se formeaz dreptunghiul care are ntr-un vrf
opus elementul corespunztor lui 2 din prima etap, adic

i se calculeaz diferena dintre produsul elementelor de pe diagonala pivotului i produsul


celorlalte elemente, apoi rezultatul se mparte la pivot i se trece raportul n locul lui 2 .
2.2. Formularea unei probleme de programare liniara (PPL)
Forma general a unei PPL este problema
[opt] f = c1x1 + c2 x2 + ... + cn xn funcia de eficien

a11x1 + a12 x2 + ... + a1n xn = b1

a21x1 + a2 2 x2 + ... + a2n xn = b2


restricii

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


am1x1 + am 2 x2 + ... + amn xn = bm


x1, x2 ,.., xn ( cu semne specificate)

Functia liniara f se numeste funcia obiectiv(funcie scop, de eficien), iar cele m restrictii
sunt de asemenea liniare. In general, condiiile impuse asupra variabilelor sunt condiiile de
negativitate.
Modelul clasic al unei PPL este dat de problema practica a optimizarii productiei unui
agent economic. Sistemul economic este definit prin mulimea de activiti {A1, A2, ... An}
care compun sistemul economic analizat, mulimea de resurse utilizate {R1, R2, ... Rm}
precum i prin relaiile tehnico-economice dintre acestea. Legtura dintre activiti i resurse
este determinat de tehnologia de fabricaie corespunztoare fiecrei activiti Aj (j=1,...,n) i
poate fi caracterizat numeric prin vectorul coloan a(j) de componente (a1j, a2j, ... amj).
Elementele {aij, i = 1,...,m; j = 1,...,n} se numesc coeficieni tehnici sau coeficieni de consum
specific i arat ce cantitate din resursa Ri se consum pentru producerea unei uniti din
produsul (serviciul) Pj (ca rezultat al activitii Aj). 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 Ri (i = 1,...,m) i fiecare coloan se refer la o activitate Aj (j = 1,...,n).
Notnd cu xj (j = 1,...,n) rezultatul activitii Aj ntr-o perioad dat i cu bi (i = 1,...,m)
cantitile disponibile din resursele Ri (i = 1,...,m), se pot scrie matematic urmtoarele
restricii tehnico-economice:

a 11 x 1 + a 12 x 2 + ... + a 1n x n b 1
a 21 x 1 + a 22 x 2 + ... + a 2n x n b 2
sau Ax b
LLLLLLLLLLLL
a m1 x 1 + a m2 x 2 + ... + a mn x n b m
a 11 a 12 L a 1n
x1
b1
a
x

a
L
a
22
2n ; x = 2 i b = b 2
unde A = 21
M O M
M
M
M
a m1 a m2 L a mn
xn
bn
Interpretarea restrictiilor: cantitatea consumat dintr-o resurs nu poate depi disponibilitatile
Exemplul 1.Optimizarea productiei. O ntreprindere are la dispoziie trei resurse
A, B, C din care poate fabrica 4 tipuri de produse P1, P2 , P3 , P4 . Managerul dorete s tie care
ar fi nivelul de producie al fiecrui produs, innd seama de limitarea resurselor existente i
de profitul produs. Se cunosc urmtoarele date: coeficienii tehnologici ai fiecrui produs,
disponibilul de resurse, profitul unitar. Datele sunt n tabelul de mai jos.
Produse

Consumuri unitare (t)


Disponibil (t)

Resurse
A
B
C
Profit/unit.
(n u.m)

P1
1
0
1

P2
2
1
0

P3
1
1
1

P4
1
1
0

20

10

30

20

1000
800
500

Modelului matematic al problemei are 4 variabile, reprezentate de nivelul de producie al


fiecrui produs (numrul de uniti, buci etc. din fiecare produs). Daca notam cu xi nivelul
produsului Pi , atunci functia obiectiv reprezint profitul total adus prin fabricarea produselor,
deci se va maximiza f ( x1, x2 , x3 , x4 ) = 20 x1 + 10 x2 + 30 x3 + 20 x4 (n uniti monetare).
Restrictiile modelului deriva limitarea resurselor, deci limitarea produciei, dar in conditiile
maximizarii profitului. Astfel, se obtine cate o restrictie pentru fiecare dintre resurse:
x1 + 2 x2 + x3 + x4 1000
x2 + x3 + x4 800
x1 + x3 500 .

Evident, variabilele de decizie x1, x2 , x3 , x4 trebuie s fie pozitive, deci x1, x2 , x3 , x4 0.


Concuzionand, modelul matematic aferent problemei enuntate consta intr-o PPL:
[max] f = 20 x1 + 10 x2 + 30 x3 + 20 x4 funcia de eficien
x1 + 2 x2 + x3 + x4 1000

x2 + x3 + x4 800
restricii

x1 + x3 500

x j 0 j = 1,4 condiiile de negativitate

Acest model poate fi scris si sub forma matriceala. Astfel, daca notam cu
X = ( x1, x2 , x3 , x4 )T R 4 vectorul nivelurilor de producie (vectorul necunoscutelor), cu A

matricea

coeficienilor

1 2 1 1

A = 0 1 1 1 ,
1 0 1 0

tehnologici,

cu

vectorul

resurselor,

b = (1000,800,500)T R3 i cu c coeficientii funciei de eficien, c = (20,10,30,20) R 4 ,

modelul precedent se scrie sub forma matriceal :


[max] f = cT X
AX b
X 0

Exemplul 2. Problema

amestecului.

Se face un amestec din uleiuri minerale

U1, U 2 , U 3 , U 4 , n vederea obinerii unui produs finit cu anumite caliti i n cantitate de cel
puin 800 l . Amestecul trebuie s conin substanele S1 i S 2 n cantitate de cel puin 18000
g respectiv 21000 g. Coninutul n substanele S1 i S 2 ale fiecrui tip de ulei i costurile

unitare sunt date mai jos :


Uleiuri
Coninutul n grame/l
Substane

S1
S2
Cost unitar
(mii lei/t)

U1
20
10

U2
10
20

U3
30
10
4,5

U4
20
30

Necesar (g)
18000
21000

Ce cantitate din fiecare ulei trebuie pus n amestec astfel incat costul total sa fie minim ?
Variabilele modelului sunt cantitile de uleiuri U1, U 2 , U 3 , U 4 , care trebuie puse n amestec,
notate cu x1, x2 , x3 , x4 . Funcia obiectiv este data de costul amestecului, care trebuie
minimizat: [min] f = 5 x1 + 4 x2 + 4,5 x3 + 3 x4
Restrictiile modelului sunt de doua tipuri: o restrictie impusa de cantitatea minima de
amestec, x1 + x2 + x3 + x4 800. , si alte doua restrictii referitoare la substanele minerale
necesare amestecului:
20 x1 + 10 x2 + 30 x3 + 20 x4 18000
10 x1 + 20 x2 + x103 + 30 x4 21000

Se adauga evident condiiile de negativitate x1, x2 , x3 , x4 0.


In concluzie, modelul matematic al problemei de amestec este :
[min] f = 5 x1 + 4 x2 + 4,5 x3 + 3 x4

x1 + x2 + x3 + x4 800.
20 x1 + 10 x2 + 30 x3 + 20 x4 18000
10 x1 + 20 x2 + x103 + 30 x4 21000
x1, x2 , x3 , x4 0.

Exemplul 3. Problema transporturilor. Problema clasica de transport const n


determinarea unui plan optim de transport al unui produs de la depozite la consumatori, astfel
nct cheltuielile aferente transportului s fie minime.

Un produs P , depozitatat n m centre de expediie Di n cantitile ai (i = 1, m) este solicitat


n centrele de consum C j n cantitile b j ( j = 1, n) . Cunoscand costurile unitare de transport
cij de la centrul Di la centrul de consum C j , se cere sa se determine cantitile de marfa
xij pe toate rutele (i, j ), i = 1, m , j = 1, n , care trebuie transportate, astfel nct costul total al

transportului s fie minim. Problema poate fi sintetic prezentata sub forma urmatorului tabel:
Cj
Di
D1
D2

M
Dm
b

C1
c11
x11
c21
x21

M
cm1
xm1
b1

C2
c12
x12
c22
x22

a1

Cn
c1n
x1n
c2n
x2n

...

cm2
xm2
b2

cmn
xmn
bn

an
T

a2

Problema de transport este echilibrat daca cererea din centrele de consum b j coincide cu
j =1

i =1

j =1

i =1

oferta din centrele de depozitare ai , adic: b j = ai = T .


Restrictiile modelului de transport deriva din transportul integral al disponibilului

din

produsul P ctre centrele de consum, xij = ai , i = 1, m ( m restricii ), si din satisfacerea


j =1

integral a necesarului fiecrui centru C j : xij = b j , j = 1, n ( n restricii ).


i =1

Modelul matematic al unei problemei clasice de transport devine:


m n

min f = cij xij


i =1 j =1

xij = ai , i = 1, m

j =1
m

x
i =1

ij

= b j , j = 1, n .

xij 0, i = 1, m , j = 1, n .

2.3. Forme ale unei probleme de programare liniara


Dupa cum am vazut deja, o problema de programare liniara consta in
optimizarea (minimizarea sau maximizarea) unei functii liniare supusa unor conditii liniare
(egalitati si/sau inegalitati). Forma general a oricrei probleme de programare liniar este:


max (min ) f = c 1 x 1 + c 2 x 2 + ... + c n x n

x
+
a

x
+
...
+
a

x
i = 1,..., n
i1 1
i2
2
in
n = bi

x 1 , x 2 ,..., x n 0

oarecare
unde cj (coeficienii funciei obiectiv), aij (coeficienii restriciilor) i bi (termenii liberi) sunt
constate reale.
Spunem ca o problema de programare liniara are forma standard (FS) daca toate
restrictiile sunt ecuatii si toate variabilele sunt supuse conditiei de nenegativitate:
min (max )c T x

Ax = b
x 0.

O restrictie a unei probleme de programare liniara este numita concordanta daca este o
inegalitate de tipul cand functia liniara trebuie minimizata sau o inegalitate de tipul cand
functia liniara trebuie maximizata.
Spunem ca o problema de programare liniara are forma canonica (FC) daca toate
restrictiile sale sunt concordante si toate variabilele sunt supuse conditiei de nenegativitate.
Cu alte cuvinte, o problema de programare liniara are forma canonica daca se scrie
min c T x
max c T x

Ax b sau Ax b
x o
x o.

Orice PPL poate fi adusa la forma standard sau la forma canonica, folosind
urmatoarele transformari elementare (echivalente):
a) Sensul unei inegalitati se schimba prin inmultire cu 1;
b) Transformarea inegalitatilor in ecuatii: o inegalitate de forma aTx b poate fi
scrisa ca o ecuatie aTx + y = b , introducand o variabila (numita variabila ecart,
variabila abatere sau variabila de compensare) y 0 , iar o inegalitate de forma
aTx b se transforma in ecuatia aTx y = b prin scaderea variabilei ecart y 0;
c) Transformarea ecuatiilor in inegalitati: o ecuatie de forma aTx = b este
echivalenta cu inegalitatile aTx b si aTx b;
d) O variabila supusa conditiei de nepozitivitate (x 0) se transforma intr-o variabila
nenegativa prin substitutia x = - x;
e) O variabila oarecare x (adica o variabila careia nu i se impun conditii asupra
semnului) se poate inlocui cu doua variabile nenegative x si x, folosind
substitutia x = x x;
f) Deoarece avem totdeauna inf f(x) = - sup ( - f(x)) o problema de minimizare se
transforma intr-o problema de maximizare si invers, schimbind semnul
coeficientilor din functia considerata.

2.4. Rezultate fundamentale in programarea liniara


In expunerile urmatoare ne vom referi la o PPL sub forma standard, si vom considera
de obicei problema de minimizare in forma standard, adica:
min c T x

Ax = b (*)
x 0.

O solutie a sistemului de ecuatii Ax = b care verifica in plus conditiile de


nenegativitate x 0 este numita program sau solutie admisibila (solutie realizabila, solutie
posibila etc.). Multimea programelor problemei (*) este P = {xRnAx = b, x 0}.
Un punct de minim global al functiei obiectiv z = cTx pe multimea problemelor P
este numit solutie optima a PPL (*).
In cele ce urmeaza vom presupune ca rang(A) = m < n, conditie care asigura
compatibilitatea sistemului de restrictii si existenta unui numar infinit de solutii ale acestuia.
Se numeste baza a problemei(*) orice baza a lui R m formata din vectori coloana ai
matricii A.
Se numete soluie de baz a sistemului de ecuaii Ax = b o soluie cu proprietatea:
componentelor sale nenule le corespund vectori coloan ai matricei A liniar independeni.
Rezult c o soluie de baz poate avea cel mult m componente diferite de zero. Convenim s
numim variabilele corespunztoare unei baze n R m variabile bazice.
Utilizand scrierea matriceala, sistemul Ax = b se pune sub forma echivalenta:
x
(BS) B = b BxB + SxS = b BxB = b SxS xB = B-1b B-1SxS , unde baza B
xS
este o matrice ptratic nesingulara de dimensiune m, iar restul coloanelor formeaza matricea
B1b
0
S, matrice cu m linii i n m coloane. xB = 0 este solutia de baza asociata bazei B.
M
0

Teorema fundamentala a programarii liniare


a)
Daca problema de programare liniara (*) are un program, atunci are un
program de baza;
b)
Daca problema de programare liniara (*) are un program optim, atunci are
un program de baza optim.
Teorema. Mulimea soluiilor admisibile (optime) este multime nchis i convex.
Dac este i mrginit atunci punctele extremale ale acesteia sunt chiar soluiile admisibile
(optime) de baz ale problemei.
Aceste rezultate dau o metoda de rezolvare a unei PPL. Aceasta consta in investigarea
tuturor solutiilor de baza (sunt cel mult C m
n soluii de baz, adic un numr finit), si apoi
selectarea solutiei care realizeaza optimul functiei obiectiv. Metoda descrisa ramane doar una
teoretica, datorita unui volum ridicat de calcule.
Se impune asadar o alta cale de rezolvare a unei PPL. Algoritmul simplex (Dantzig,
1951) pentru rezolvarea problemelor de programare liniara reprezinta o metoda iterativa care
exploreaza in mod sistematic multimea programelor unei PPL, prin trecerea de la un program
de baza la alt program de baza, care este cel putin la fel de bun ca cel precedent. Metoda
furnizeaza de asemenea criterii pentru punerea in evidenta a faptului ca problema are optim
infinit, precum si a cazului in care multimea programelor este vida

2.5. Algoritmul simplex


min c T x

Consideram PPL Ax = b
x 0.

(*) , unde unde A este o matrice cu m linii si n coloane

pentru care avem rang (A) = m < n.


Fie B o baza a problemei. Atunci sistemul de ecuatii Ax = b se poate scrie in forma
B
-1
x = B b B-1SxS. Notand B-1b = xB , B-1aj = y Bj , 1 j n, rezulta x B = x ' B y Bj x j .
jS

Solutia de baza corespunzatoare bazei B este data de x =x si x = 0. Evident ca aceasta


solutie de baza este un program daca avem indeplinita conditia B-1b 0.
Definitie. O baza B care verifica conditia B-1b 0 se numeste baza primal
admisibila.
Pe de alta parte, functia obiectiv z = cTx poate fi exprimata sub forma:
z = c BT x B + c ST x S = c BT B 1b (c BT B 1 S e ST )x S . Notam z ' B = c BT x B , z Bj = c BT y Bj ,1 j n , unde
zB reprezinta valoarea functiei obiectiv pentru solutia de baza xB = B-1b , xS = 0. Atunci,
relatia precedenta se scrie si sub forma z = z ' B (z Bj c j )x j .
jR

Prezentam in continuare enuntul algoritmului simplex primal:


Pasul 1. Se determina o baza primal admisibila B.
Pasul 2. Se calculeaza xB , zB , y Bj , 1 j n.
Pasul 3. Daca z Bj c j 0 pentru orice j S, atunci STOP: xB este program optim.
Altfel, se determina multimea S+ definita de {j/j S , z Bj c j > 0 } si se trece la pasul
urmator.
Pasul 4. Daca exista j S+ astfel incat y Bj 0 , atunci STOP: problema are optim
infinit. Altfel, determinam
max z Bj c j = z kB ck .

k S+

cu ajutorul criteriului de intrare in baza

Pasul 5. Determinam indicele r B+ cu ajutorul criteriului de iesire din baza


_
_
B
x' x' B
min Bi = Br .
y ik y rk
unde B+ = {i/i B , y ikB > 0 }.
Pasul 6. Se considera noua baza B obtinuta din B prin inlocuirea coloanei ar cu
coloana ak, si se reia algoritmul de la pasul al doilea, inlocuind B cu B.
Comentarii
1.
Calculele aferente fiecarei iteratii (fiecarei baze) se trec sub forma unor
tabele numite tabele simplex.
2.
Datorita simplificarii calculelor, si nu numai, se considera ca baza initiala
matricea unitate.
3.
Pasul 3 reprezinta testul de optimalitate.
4.
Pasul 4 arata testul de infinititudine a solutiei si, in caz ca aceasta conditie
nu este indeplinita, se determina noua variabila de baza, cu ajutorul
criteriului de intrare in baza.
5.
Pasul 5 reprezinta criteriul de iesire din baza.

6.
7.

Trecerea de la o baza la alta se face conform formulelor de schimbarea


bazei (caul particular al inlocuirii unui singur vector), conform cu 2.1.
In cazul unei PPL de maxim, apar urmatoarele modificari:
a)
Testul de optimalitate (pasul 3) devine: daca z Bj c j 0 pentru
orice j S, atunci STOP, xB este program optim. Altfel se
determina multimea S- = {j/j S , z Bj c j < 0 } si se trece la pasul
b)

urmator.
Pasul 4: daca exista j S astfel incat

y Bj 0 , atunci STOP:

problema are optim infinit. Altfel, determinam k S- cu ajutorul


criteriului de intrare in baza min z Bj c j = z kB c k .

Tabelul simplex asociat bazei B are in prima coloana variabilele de baza (vectorul
x ), in a doua coloana valorile variabilelor de baza (vectorul xB), iar in urmatoarele n
coloane vectorii y Bj ,1 j n . Pe o linie suplimentara se trec functia obiectiv z = cTx ,
B

valoarea sa in baza B (adica zB), precum si cantitatile z Bj c j ,1 j n, necesare in aplicarea


algoritmului simplex.
Practic, trecerea de la un tabel la altul se face dupa urmatoarele reguli:
- elementele situate pe linia pivotului se impart la pivot
- elementele situate pe coloana pivotului devin zero, cu exceptia pivotului care devine 1
- celelalte elemente ale tabelului simplex se transforma dupa regula dreptunghiului: daca ne
imaginam dreptunghiul a carui diagonala este determinata de elementul yijB care trebuie
transformat si pivotul y rkB , atunci noua valoare yijB ' se obtine impartind la pivot diferenta
dintre produsul yijB y rkB al elementelor situate pe diagonala considerata mai sus si produsul

y rjB y ikB al elementelor situate pe cealalta diagonala a dreptunghiului.


Exemplu

[max] f = 20 x1 + 10 x2 + 30 x3 + 20 x4
x1 + 2 x2 + x3 + x4 1000
x2 + x3 + x4 800
x1
+ x3
500
x1, x2 , x3 , x4 0

Se aduce problema la forma standard, adugnd trei variabile de compensare


x5 , x6 , x 7 . Problema devine:
[max] f = 20 x1 + 10 x2 + 30 x3 + 20 x4

=1000
x1 + 2 x2 + x3 + x4 + x5
=800
x2 + x3 + x4 +
+ x6
x1
+ x3
+ x7 =500
x j 0 , j = 1,7.

Observam ca variabilele x5 , x6 , x 7 . furnizeaza o baza initiala primal admisibila, deci se poate


aplica algoritmul simplex primal. O soluie iniial de baz este data de (0, 0, 0, 0, 1000, 800,
500). Prezentam succint mai jos calculele aferente aplicarii algoritmului.

CB

XB

0
0
0

a5
a6
a7

0
0
30

a5
a6
a3

0
20
30

a5
a4
a3

20
20
30

a1
a4
a3

1000
800
500
0
500
300
500
15000
200
300
500
21000
200
500
300
23000

5 4 3
a1 a2 a3
1 2 1
0 1 1
1 0 1
20 10 30
0 2 0
-1 1 0
1 0 1
-10 10 0
1 1 0
-1 1 0
1 0 1
10 10 0
1
1 0
0
2 0
0 1 1
0 20 0

0
0
0
a4 a5
a6
1
1
0
1
0
1
0
0
0
20 0
0
1
1
0
1
0
1
0
0
0
20
0
0
0
1
1
1
0
1
0
0
0
0
0 20
0
1 1
1
1
0
0 1
1
0 10 10

0
a7
0
0
1
0
1
1
1
-30
0
1
1
-10
0
1
1
-10

1000
800
500
500
300
200
500

Exercitii
Sa se aplice simplex primal pentru rezolvarea urmatoarelor PPL:
(max ) f = 3x 1 + 2x 2 + x 3 + 4x 4 + 3x 5 + 5x 6
x 1 + 2 x 2 + x 3 + x 4 + 3x 5 + x 6 8
2x 1 + 2 x 2 + 3x 3 + x 4 + 3x 5 + 2 x 6 15 ,
3x + x + 2 x + 2 x + x + 2 x 11
2
3
4
5
6
1
x i 0, i = 1,...,6

[min] f = 5 x1 + 4 x 2 + 3 x3
x1 + 2 x2 + 2 x3 10
2 x1 + x2
8
2 x2 x3 8
x1, x2 , x3 0 .

2.6. Determinarea unei baze initiale


min c T x

Consideram forma standard Ax = b .


x 0.

Dupa cum am vazut, algoritmul simplex necesit, pentru pornire, o soluie admisibil
de baz. Determinarea acesteia, atunci cand nu este matricea unitate, poate fi un proces de
lunga durata. De aceea, s-au dezvoltat mai multe metode care determina o solutie initiala de
baza pentru problema data. Una dintre aceste metode este metoda celor doua faze, pe care o
descriem succint in continuare.
Presupunem b 0 si, pentru simplificarea expunerii, consideram ca A nu contine
vectori coloana unitari.

Se construieste o noua PPL auxiliara:


min( x n +1 + ... + x n + m )

a
, unde xi + n ,1 i m, sunt numite variabile artificiale , xa fiind
Ax + x = b,
x 0, x a 0,

vectorul de componente xi + n ,1 i m .
Pentru aceasta problema, matricea unitate I asociata variabilelor artificiale xa este o
baza primal admisibila, careia ii corespunde programul x = 0 , xa = b. De asemenea,
observam ca functia obiectiv a problemei auxiliare este marginita inferior pe multimea
programelor acestei probleme (un minorant este evident zero) si deci problema are solutii
optime. Se impune asadar rezolvarea problemei auxiliare cu algoritmul simplex primal,
deoarece o baza primal admisibila initiala este disponibila.
Daca optimul problemei auxiliare este strict pozitiv, atunci problema initiala nu are
solutie. In cazul in care optimul problemei auxiliare este este zero, atunci se preia tabelul
optim ca tabel initial pentru problema data. Cu alte cuvinte, baza optima a problemei auxiliare
furnizeaza o baza primal admisibila initiala pentru problema data. Aceasta inseamna ca
metoda descrisa consta in doua etape: in faza I se construieste problema auxiliara si se rezolva
cu simplex primal, iar in faza a doua, se rezolva problema initiala (data) tot cu algoritmul
simplex primal, luind ca baza de pornire, baza optima a problemei auxiliare. Adaugam faptul
ca la trecerea de la o faza la cealalta, se inceraca eliminarea din baza optima a variabilelor
artificiale xa , printr-o iteratie simplex obisnuita.
Exemplu Sa se rezolve problema de programare liniar:
(max ) f = 2x 1 + 3x 2
3x 1 + x 2 10

x 1 + 4x 2 2
x 1 , x 2 0

Aducem mai intai problema la forma standard:


(max ) f = 2x 1 + 3x 2
3x 1 + x 2 + x 3 = 10

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

Observam ca termenii liberi sunt pozitivi i exista deja o coloan a matricii unitate 10

corespunztoare variabilei x3. Pentru a obine i a doua coloan 10 , vom aplica metoda

celor doua faze, care presupune introducerea unei variabile artificiale x5 cu coeficientul 1 n a
doua ecuaie i rezolvarea unei probleme auxiliare:

(min)g = x 5
3
x

1 + x 2 + x 3 = 10

x 1 + 4x 2 x 4 + x 5 = 2
x 1 , x 2 , x 3 , x 4 , x 5 0
Problema auxiliara se rezolva cu algoritmul simplex primal, luind ca variabile de baza
variabilele x3 si x5. Se obtin astfel n faza intai urmatoarele tabele simplex:

cB
0
1

xB
x3
x5

xB
10
2
2

cB

xB

x3

x2

xB
19
2
1
2
0

0
x1
3
1
1
1

0
x2
1
4
4
4

0
x3
1
0
0
0

0
x4
0
-1
-1
-1

1
X5
0
1
1
0

0
x1
11
4
1
4
0

0
x2

0
x3

0
x4
1
4
1

4
0

1
x5
1

4
1
4
-1

Constatam ca s-a obinut optimul egal cu 0, ceea ce impune trecerea la faza a doua, n care
soluia optima de baz (x3,x2) astfel obtinuta va fi soluie iniial pentru algoritmul simplex
aplicat problemei date. Practic, din tabelul optim al fazei intai, eliminm coloana variabilei
artificiale x5 si nlocuim valorile coeficienilor funciei obiectiv, ceea ce duce la recalcularea
liniei de jos a tabelului. Vom obtine astfel urmatorul tabel simplex:
2
3
0
0
cB
xB
xB
x1
x2
x3
x4
19
11
1
0
1
0
x3
2
4
4
1
1
1

1
0
3
x2
2
4
4
3
5
3

0
0
2
4
4
B

In continuare, se aplica simplex primal, algoritm


tabele:
2
cB
xB
xB
x1
0
x3
4
0
2
x1
2
1
4
0
B

cB

xB

x4

xB
4
3
10
3
20
3

x1

2
x1
0
1
0

ce conduce la urmatoarea succesiune de


3
x2
-11
4
5

0
x3
1
0
0

0
x4
3
-1
-2

3
x2
11

3
1
3
7

0
x3
1
3
1
3
2
3

0
x4
1
0
0

cB
0
3
B

xB
x4
x2
B

xB
38
10
30
B

2
x1
11
3
7

3
x2
0
1
0

0
x3
4
1
3

0
x4
1
0
0

Soluia optim a problemei date este deci x1 = 0 i x2 = 10 care d un maxim al


funciei egal cu 30.
Exercitii. Sa se aplice metoda celor doua faze pentru rezolvarea urmatoarelor PPL:
(max ) f = 2x 1 + x 2
3x 1 x 2 11
,

x 1 + 4x 2 2
x ,x 0
1 2

[min] f = 5 x1 + 4 x 2 + 3x3
x1 + 2 x2 + 2 x3 10
2 x1 + x2
5
2 x2 x3 = 3
x1, x2 , x3 0 .

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