Documente Academic
Documente Profesional
Documente Cultură
Mat Ec2 2008
Mat Ec2 2008
Programare liniar
Programarea liniar este un capitol important al cercetrilor operaionale, cu o
larg aplicare n practica de zi cu zi, dar mai ales n economie.Vom ilustra cteva
direcii de aplicare ale programrii liniare in activitatea productiv.
A. Problema utilizrii optime a unor resurse
Se urmrete producerea reperelor
R1,R2,Rn
n fabricarea crora se utilizeaz materiile prime (resursele)
E1,E2,.Em (resursele mai pot fi: disponibil de for de munc, disponibil de
capital, energie).
Resursele sunt disponibile n cantiti limitate; asfel din resursa Ej dispunem
de o cantitate maxim bj, cunoscut n prealabil.
Se mai cunosc:
- consumurile tehnologice: i = 1, n i j= 1, m aij 0 este cantitatea din
resursa Ej ce se consum pentru a fabrica o unitate din produsul Ri;
-beneficiile unitare: i= 1, n ci este suma obinut prin vnzarea unei uniti
de produs Ri;
-costurile unitare de achiziie pentru materiile prime: j= 1, m j este suma
necesar cumprrii unei uniti din materia prima Ej;
-capital total disponibil: S reprezinta suma total disponibil pentru
achiziionarea de resurse in vederea realizrii produciei.
Vom nota cu xi (i= 1, n ) cantitatea de produs ce va fi fabricat.
n aceste condiii:
-ncasrile totale rezultate din vnzarea produselor sunt date de:
n
f(x1,x2,xn) = c i x i
i 1
aij x i ,
j 1, m ;
i 1
aij x i
j = 1, m ;
i 1
23
Programare liniar
-cheltuielile totale pentru achiziionarea tuturor materiilor prime necesare realizrii
m
produciei vor fi
aij x i j
j 1 i 1
maxim f(x1,x2,xn) =
ci x i ;
i 1
n
aij x i b j j 1, m
i 1
x i 0
i 1, n
maxim f(x1,x2,xn) =
ci x i ;
i 1
n m
aij x i j S
i 1 j 1
n
c i x i S ; x i 0
i 1
i 1, n
Programare liniar
depaeasc marfa existent n acel depozit, iar cantitatea total de marf primit de
un beneficiar s nu fie sub necesarul acelui beneficiar.
n
cij x ij .
i 1 j 1
Modelele sunt :
x ij ai i 1, n
j 1
n m
n
minim c ij x ij ;
x ij b j j 1, m
i 1 j 1
i 1
i 1, n , j 1, m
x ij 0
ai b j
i 1
j 1
x ij ai i 1, n
n j 1
n m
minim c ij x ij ; x ij b j j 1, m
.
i 1 j 1
i 1
i 1, n , j 1, m
x ij 0
C.Problema de nutriie
Se tie din cercetrile nutriionitilor c un sistem de alimentaie, ntr-un
anumit interval de timp trebuie s conin anumite substane active, care se gsesc
n diverse tipuri de alimente. Notm cu Si substanele active necesare i= 1, m , cu Aj
alimentele care trebuie procurate j= 1, n i care conin aij cantitate din substana Si pe
unitatea de aliment Aj. Notm cu xj cantitatea din alimentul Aj, cu cj costul unitar al
alimentului Aj i cu bi necesarul din substana Si. Se pune problema: care sunt
cantitile de alimente xj, care pot fi procurate mai ieftin, fr abatere de la
alimentaia tiinific.
Modelul matematic este:
n
a x bi i 1, m
minim f(x1,x2,xn) = c i x i ; j 1 ij j
.
i 1
x i 0
i 1, n
n
Programare liniar
amestecuri cu condiia obinerii unui produs final cu anumite caracteristici tehnice
(putere caloric, temperatur de aprindere, grad de rafinare) care s fie inferioare
sau superioare unor anumite mrimi prestabilite. Se poate rezolva i problema
alctuirii celui mai ieftin amestec din diferite sortimente de crbune pentru nclzirea
cazanelor cu aburi, cu anumite caracteristici tehnice.
x1,x2,xn
f(x1,x2,..xn)=c1x1+c2x2+..+cnxn
b1
.
. , A =
b
n
a11
.
.
a
m1
. . a1n
. .
.
,X=
. .
.
. . amn
x1
.
. .
x
n
(1)
26
Matematici aplicate in economie
Programare liniar
[max] f =TCX;
AX b
X 0
(2)
[min] f =TCX ;
AX b
.
X 0
(3)
[min] f =TCX
AX b
.
X 0
(4)
Observaii.
1) Se poate trece de la o problem de maxim la una de minim folosind relaia:
max f = - min (-f ) si invers.
2) Dac problema de programare liniar nu are forma canonica, atunci se
adaug sau se scad varibilele de compensare, dup cum cere restricia respectiv.
x 1 2x 2 x 3 x 4 200
x 4 100
2 x1 x 2
xj 0
, j 1,4
27
Programare liniar
Se adaug o variabil de compensare la prima restricie i se scade o variabil din a
doua restricie. Forma standard este
x1 2 x 2 x 3 x 4 x 5 200
x j 0 , j 1,6
Programare liniar
corespunztoare unei baze care difer de precedenta printr-un singur vector.
Alegerea vectorului se face prin criteriul de intrare n baz. Vectorul, pe care acesta
l nlocuiete se alege conform criteriului de ieire din baz.
Criteriul de ieire din baz se deduce din condiia de admisibilitate a noii
soluii; criteriul de intrare n baz se obine din condiia ca noua soluie s
mbunteasc valoarea funciei de eficien.
Determinarea unei soluii iniiale de baz
Fie problema de programare liniar cu forma canonic:
a11 x1 a12 x 2 ... a1n x n b1
a x a x ... a x b
22 2
2n n
2
21 1
...........................................
a x a x ... a x b
m2 2
mn n
m
m1 1
x1 0, x 2 0,.....x n 0
max f=c1x1+c2x2++cnxn ;
max f=c1x1+c2x2++cnxn;
a x a x ... a x x
m2 2
mn n
n m bm
m1 1
x1 0, x 2 0,.....x n m 0
de
restricii
al
problemei
de
programare
liniar:
29
Programare liniar
soluia se modific prin modificarea unui vector din baza curent, aplicnd criteriul
de intrare n baz; acest nou vector care se alege prin criteriul de intrare n baz,
nlocuiete un vector din vechea baz, care se alege prin criteriul de ieire din baz.
Noua soluie se calculeaz utiliznd metoda Gauss-Jordan. Aceast soluie
se va testa la rndul ei, cu criteriul de optimalitate, etc. Algoritmul ia sfrit dup un
numr finit de pai.
Organizarea calculelor - tabelul simplex
Presupunem, fara a reduce generalitatea, c baza curent B este format din
primii m vectori ai matricei sistemului de restricii din forma standard, a1,a2,,am,
deci primele m componente ale soluiei x1,x2,,xm sunt diferite de 0.
Vom nota CB subvectorul lui C format cu componentele lui C corespunztoare bazei
B. Se observ c vectorii bazei se exprim n felul urmtor n baza B:
a1=1a1+0a2++0am;a2=0a1+1a2++0am;.,am =0a1+0a2++1am.
De asemenea, aa cum am vzut mai sus, toi vectorii a j care nu aparin
bazei se pot exprima prin:
a j 1j a1 2j a2 ...... mj am , j= m 1, m n .
c1 c2crcmcj
cm+n
CB
xB
a1 a2aramaj
am+n
c1
a1
x1
1 0..0.0.1j
1m+n
c2
a2
x2
0 1..0.0.2j
2m+n
cr
ar
xr
0 0..10..rj.
..
cm
am
xm
0 0..01..mj.
mm+n
f0
00.0.0 j
m+n
30
Matematici aplicate in economie
rm+n
Programare liniar
Reguli practice pentru aplicarea algoritmului simplex
1.Criteriul de optimalitate. Dac toate diferenele k=ck-fk (pentru problema
de maxim) sau k= fk-ck (pentru problema de minim) corespunztoare vectorilor care
nu sunt n baza curent B sunt negative sau egale cu 0, soluia XB este optim i
algoritmul se oprete.
max {
0} = j . Vectorul aj intr n
baz.
Criteriu de optim infinit. Dac toate componentele vectorului care intr n
baz
(la o anumit iteraie a simplexului) sunt negative sau nule, problema admite
optim infinit.
3.Criteriul de ieire din baz. Se aplic dup aplicarea criteriului de intrare
n baz. Se adaug o nou coloan n tabelul simplex, coloana , n care se scriu
rapoartele
xk
, pentru care kj 0. Se alege raportul minim:
j
k
x
x
min kj , kj 0 = rj care indic vectorul ar care iese din baz.
k
r
4.Stabilirea pivotului.
La intersecia liniei vectorului ar, care iese din baz, cu coloana vectorului aj, care
intr n baz, se afl pivotul rj 0, care se foloseste n metoda lui Gauss-Jordan
pentru obinerea noului tabel simplex.
31
Programare liniar
elementul pe care vrem s-l nlocuim din vechiul tabel; acest dreptunghi se
calculeaz ca un determinant de ordin 2, dar cu precizarea c diagonala care se ia
cu semnul + este mereu cea pe care se afl pivotul.Valoarea obtinuta se mparte la
pivot si astfel se calculeaza fiecare element din noul tablou simplex.
Se obine o nou soluie. Noua baz B1, va conine n locul lui ar vectorul aj, iar
coloana lui aj va deveni vector unitar, cu coordonata de ordin r egala cu 1 i celelalte
0.
2x2 - x3 8
x1, x2 ,x3 0.
+x5
2x2 - x3
=10
= 8
+x6 = 8
xj 0 , j= 1,6 .
Baza iniial este baza unitar, format cu vectorii coloan a4,a5,a6 din
matricea sistemului de restricii. Soluia iniial de baz se alege astfel: x1=x2=x3=0,
x4=10(din prima restricie), x5=8(din a doua restricie), x6=8(din a treia restricie).
Construim tabelul simplex iniial, n care apare soluia iniial de baz, matricea
sistemului de restricii, baza initiala:
c1= 5
c2= 4
c3= 3
c4= 0 c5 =0
c4 =0
CB
XB
a1
a2
a3
a4
a5
a6
a4
10
10/1
a5
(2)
8/2
a6
-1
1=5
2=4
3=3
4=0
5 =0
6 =0
k=ck-fk
Programare liniar
f1 =
CBT
1
a1 =(0, 0, 0) 2 =0 ; c1-f1= 5 0 =5
0
f2 =
CBT
2
a2 =(0, 0, 0) 1 =0; c2 f2 = 4 - 0=4
2
CBT
2
a3 =(0, 0, 0) 0 =0; c3 f3 = 3 - 0=3;f4=0; c4-f4=0; f5=0, c5-f5 =0; f6=0, c6-f6=0.
1
f3=
x5
. Pivotul iteraiei este 2. Noua baz va fi format din
51
c2= 4
c3= 3
c4= 0
c5 =0
c4 =0
CB
XB
a1
a2
a3
a4
a5
a6
a4
3/2
(2)
-1/2
a1
1/2
1/2
a6
-1
20
1 =0
3 =3
4 =0
k=ck-fk
2 =3/2
5 =-5/2
6 =0
Soluia indicat de acest tabel este XT=(4,0,0,6,0,8), iar valoarea funciei este
de 20. Aplicm iar criteriile de optimalitate pentru a studia aceast soluie .
Linia diferenelor arat c soluia nu este optim i intr n baz a3; coloana lui
arat iee din baz vectorul a4. Pivotul este 2.Noua baz va fi format din vectorii a3,
a1, a6. Iteraia corespunztoare este dat de tabelul de mai jos:
33
Programare liniar
c1= 5
c2= 4
c3= 3
c4= 0
c5 =0
c4 =0
CB
XB
a1
a2
a3
a4
a5
a6
a3
3/4
1/2
-1/4
a1
1/2
1/2
a6
11
11/4
1/2
-1/4
29
1 =0
2=-3/4
3 =0
4=-3/2
5 =-7/4
6 =0
k=ck-fk
x1 0, x 2 0,.....x n 0
a x a x ... a x x
m2 2
mn n
n m bm
m1 1
x j 0, j 1, n m
Dac procedm ca in cazul anterior, vom lua drept soluie iniial de baz, soluia:
x1=x2=.=xn=0, xn+1= -b1,xn+2= - b2,,xn+m= - bm,
ns acesta nu este i realizabil, pentru c ea nu satisface condiiile algoritmului
simplex.
Pentru a obine o soluie admisibil de baz, vom introduce n fiecare
egalitate o nou variabil pozitiva, care s nlesneasc alegerea soluiei iniiale.
Aceste m variabile pe care le introducem se numesc variabile artificiale, iar metoda
de lucru pe care o expunem se numete metoda variabilelor artificiale sau
metoda penalizrii .
34
Matematici aplicate in economie
Programare liniar
Se modific i funcia de eficien astfel :
-dac problema este de minim, atunci se adaug la funcia de eficien iniial,
variabilele artificiale cu coeficienii de penalizare M (M pozitiv, foarte mare);
a x a x ... a x x
m2 2
mn n
n m x n 2 m bm
m1 1
x j 0, j 1, n 2m
x1, x2 ,x3 0.
=300
- x5 = 75;
xj 0
j 1,5 .
35
Programare liniar
Vom aduga variabilele artificiale x6, x7, introducndu-le n restricii cu
coeficientul 1 i n funcia de eficien cu coeficientul de penalizare M:
min w = 4x1 + 3x2 + 5x3+Mx6+Mx7
2x1 + x2 - 5x3 x4+
x1 + x2 + x3
x6
- x5
=300
+ x7= 75
xI 0, l=1,7.
Soluia iniial de baz este x1=x2=x3=x4=x5=0, x6=300, x7=75.
Calculele aferente algoritmului simplex sunt redate n tabelul urmtor. Pentru calculul
liniei diferenelor i stabilirea criteriilor de optimalitate i de intrare n baz se
folosete j=fjcj. La prima iteraie, se calculeaza max {1=3M4, 2=2M-3}=1, a1
intr n baz.
c1= 4
c2= 3
c3= 5
c4= 0
c5= 0
c6= M
c7= M
a3
a4
a5
a6
a7
CB
XB
a1
a2
a6
300
-5
-1
150
a7
75
(1)
-1
75
3M-4
2M-3
-4M-5
-M
-M
k=fk- ck
M
a6
150
-1
-7
-1
(2)
75
a1
75
-1
-M+1
-7M-1
-M
2M-4
k=fk- ck
0
a5
75
-1/2
-7/2
- 1/2
a1
150
1/2
- 5/2
- 1/2
600
-1
- 15
-2
k=fk- ck
O variabil artificial care iese din baz, nu va mai intra n baz, fapt care justific
eliminarea din calcul a coloanelor a7 i a8 din tabelul de mai sus.
Soluia optim a problemei este: x1=150, x2=x3=x4=0, x5=75, min f =600.
Soluie optim multipl.Calcul soluiei optime generale
Dac o problem de programare liniar are mai multe soluii optime de baz, atunci
orice combinaie liniar convex a acestor soluii este de asemenea o soluie optim.
O soluie este multipl dac n iteraia optim j=0 pentru un vector aj care nu
aparine bazei, atunci este posibil s introducem n baz vectorul aj pentru a
determina alt soluie optim care va conduce la aceeai valoare a funciei de
eficien.
36
Matematici aplicate in economie
Programare liniar
Exemplu.
Se face un amestec de uleiuri minerale U1,U2,U3,U4, n vederea obtinerii unui
produs finit cu anumite caliti i n cantitate de cel puin 800 l. Amestecul trebuie s
conin substanele S1 i S2 n cantitate de cel puin 18000 g, respectiv 21000
g.Coninutul de substane S1 i S2 ale fiecrui tip de ulei i costurile unitare sunt date
in tabelul urmator:
Uleiuri (coninut n g/ l)
Substane
U1
U2
U3
U4
S1
20
10
30
20
18000
S2
10
20
10
30
21000
4,5
Necesar (g)
Cum trebuie fcut amestecul cu cost total minim? Ce cantitate din fiecare ulei trebuie
pus in acest amestec?
Soluie.
Fie xi, i 1,4 cantitile din uleiurile Ui care trebuie puse n amestec. Funcia de
eficien este costul total al amestecului. Ea trebuie minimizat:
min f = 5 x1+4x2+4,5 x3+3x4 (mii u.m.)
Restricia referitoare la cantitate este:
x1+x2+x3+x4 800.
Celelalte dou restricii se refer la substanele S1 i S2 necesare
amestecului:
20 x1+10x2+30x3+20x4 18000
10 x1+20x2+10x3+30x4 21000.
Condiiile de nenegativitate asupra variabilelor sunt:x1 ,x2 , x3, x4 0.
Deci, modelul matematic al problemei de amestec este :
min f = 5x1+4x2+4,5 x3+3x4
x1+x2+x3+x4 800; 20 x1+10x2+30x3+20x4 18000;10 x1+20x2+10x3+30x4 21000
x1 ,x2 , x3 , x4 0.
37
Programare liniar
min f =5 x1+4x2+4,5 x3+3x4
x1+x2+x3+x4 x5 = 800
2 x1+x2+3x3+2x4 x6 = 1800
x1+2x2+x3+3x4 x7 = 2100; xj 0, j 1,7
Pentru a reduce calculele, vom scdea din ecuaia cu termenul liber cel mai mare,
pe rnd fiecare dintre ecuaiile sistemului de restricii, adic din ecuaia a treia se
scade prima i apoi a doua i astfel se obine un sistem echivalent cu cel dat.
Matricea ataat acestui ultim sistem este :
0 1 0 2 1 0 1
A= 1 1 2 1 0 1 1
1 2 1 3 0 0 1
conine doi vectori unitari a5 i a6; nu este nevoie pentru determinarea soluiei iniial
de baz dect de o singur variabil artificial, x8 i va fi adugat la ultima restricie.
Problema de programare liniar devine :
min f =5 x1+4x2+4,5 x3+3x4+Mx8
x2
+2x4 +x5
- x1+x2 - 2x3+x4
x7
= 1300
+ x6 x7
= 300
x1+2x2+x3+3x4
4,5
CB
XB
a1
a2
a3
a4
a5
a6
a7
a8
a5
1300
-1
650
a6
300
-1
-2
(1)
-1
300
a8
2100
-1
700
M-5
2M-4
M-4,5
3M-3
-M
k=fk- ck
a5
700
-1
-2
a4
300
-1
-2
-1
a8
1200
-1
(7)
-3
1200/7
4M-8
-M-1
7M-0,5
-3M+3
2M-3
k=fkck
0
a5
100/7
-2/7
-3/7
-2/7
-1/7
a4
4500/7
1/7
5/7
1/7
-3/7
4,5
a3
1200/7
4/7
-1/7
-3/7
2/7
--
2700
-2
-2,5
-1,5
0*
k=fkck
38
Matematici aplicate in economie
700/4
Programare liniar
Soluia optim este XoT=(0,0,
4,5
CB
XB
a1
a2
a3
a4
a5
a6
a7
a5
100
-1/2
1/2
-1/2
a4
900
1/2
3/2
-1/2
a7
600
-1/2
7/2
-3/2
2700
-2
-2,5
-1,5
k =fk ck
1200
1800
+3(900 ) = 2700, adic valoarea
7
7
-2x4 =300
39
Programare liniar
Soluie. Aducem problema la forma standard, prin adugarea variabilelor de
compensare x5 i x6:
2x1 + x2
-2x4
= 300
2x2 +x3+ x4 +x5
= 600
x1 +2x2+ x3 + x4
- x6 = 120; xj 0, j= 1,6 .
2 1 0 2 0 0
Ea conine un singur vector unitar, vom aduga dou variabile artificiale, notate x7 i
x8 la restricia nti i a treia. Astfel, problema devine:
max f = 10x1 + 6x2 -2x3+ 4x4 -Mx7 Mx8
2x1 + x2
-2x4
+x7
= 300
2x2 +x3+ x4 +x5
= 600
x1 +2x2+ x3 + x4 -x6 +x8 = 120;
xj 0, j= 1,8 .
Acum baza iniial va fi format din vectorii unitari a5,a7, a8
10
-2
-M
-M
CB
XB
a1
a2
a3
a4
a5
a6
a7
a8
-M
a7
200
(2)
-2
100
a5
600
-M
a8
120
-1
120
10+3M
6+3M
-2+M
4-M
-M
cj-fj
10
a1
100
1/2
-1
a5
600
600
-M
a8
20
3 /2
(2)
-1
10
3/2M+1
-2+M
2M+14
-M
cj-fj
10
a1
110
5/4
1/2
- 1/2
a5
590
5/4
1/2
(1/ 2)
1180
a4
10
3/4
1/2
-1/2
1140
-19/2
-9
cj-fj
10
a1
700
5/2
a6
1180
5/2
a4
600
9400
-27
-16
-14
cj-fj
Programare liniar
Exemplu de problem care nu admite soluie
S se rezolve problema de programare liniar, utiliznd algoritmul simplex:
max f = 2x1 + x2 + 2x3
5x1 + x2 + x3 20
-x1 + x2 + x3 = 30 ;
x1, x2 ,x3 0.
=20
+x5 =30;
xj 0
j 1,5 .
c1=2
c2=1
c3=2
c4=0
c4= - M
CB
XB
a1
a2
a3
a4
a5
a4
20
(1)
20
-M
a5
30
-1
2-M
1+M
2+M
cj-fj
2
a3
20
-M
a5
10
-6
-1
-8-6M
-1
-2-M 0
cj-fj
Ultima iteraie a tabelului de mai sus indic optimalitatea soluiei datorit faptului c
toate diferenele sunt j = c j- fj sunt negative sau 0.
Totui variabila artificial x5 , a rmas n baz cu valoarea 10, x50; deci problema
initiala nu admite soluie.
Probleme propuse
1. O ntreprindere fabric trei tipuri de produse folosind gaz metan i ap.
Consumurile specifice, disponibilul de ap i gaz, precum i beneficiile nete unitare
sunt date n tabelul de mai jos:
Produse
Consumuri specifice
Resurse
P1
P2
P3
Ap
40.000 t
Gaz metan
10
50
30
500.000 mc
Beneficiu unitar
10
15
25
Disponibil
41
Programare liniar
a) Cum se organizeaz producia, dac se urmrete maximizarea
beneficiului total?
b) Dac i propune acelai scop, cu aceleai resurse, dar trebuie s
produc cel puin 3000 uniti din P1,cum trebuie organizat producia?
2. S se rezolve problemele:
a)
3x1 + x2 - 2 x3 = 2
3x1+2x2+5x3+4x4 8
x1+x2+2x3+x4 4
x1, x2 , x3 0
x1, x2 , x3 ,x4 0 .
b)
2x1 + x2 +3x3 4
c)
2x1 +4x2 40
6x1 +2x2 60
x1, x2,x3 0
x1, x2 0
max f = 4x1 + x2 +6 x3
x1
+ x3 x4 x5 = 3
x1 +x2 2x3
- 3x5 = -1
x1, x2, x3 0
e)
g)
max f = 10 x1 +15 x2
4x1 + x2 +5 x3 = 7
x1 +2x2 +3x3
=15
3x1 + x2 +4 x3 5
2 x1+ x2 + 5x3
=20
x1, x2 , x3 0
42
Matematici aplicate in economie
h)
min f = 6x1 + x2
x1 +2 x2 3
3x1 + x2 4
x1, x2 0
Programare liniar
5. S se determine valoarea maxim i minim a funciei
f = 9x4 -14x5 -8 x6
cu restriciile
x1
+ x4 x5 x6 = 2
x2
x3 + 2x3 + x5 x6 = 5
x1, x2, x3 ,x4, x5, x6 0
6. S se determine maximul funciei f = x1 + 2x2 +2x3 +x4 cu restriciile
x1 x 3 +
1
x4 = 1;
2
x2 + x3 x4 = 1;
x1, x2, x3 ,x4 0
7. S se determine minimul funciei f = x2 -2 x3 + 2 x5
in condiiile
x1 + 3x2 - x3 +
-2x2 + 4x3 +x4
2x5
=7
= 12
43