Documente Academic
Documente Profesional
Documente Cultură
Bisp Id Ui 3 PDF
Bisp Id Ui 3 PDF
PROGRAMAREA LINIARĂ
2
Bazele Ingineriei Sistemelor de Producţie 3. Programarea Liniară
∑a
j =1
ij x j ≤ bi , i = 1, 2, …, m
xj ≥ 0 , j = 1, 2, …, n (3.4)
n
F = ∑ c j x j = maxim ,
j =1
∑a
j =1
ij x j ≥ bi , i = 1, 2, …, m
xj ≥ 0 , j = 1, 2, …, n (3.5)
n
F = ∑ c j x j = minim .
j =1
3
Conf. dr. ing. Andrei Dumitrescu
4
Bazele Ingineriei Sistemelor de Producţie 3. Programarea Liniară
5
Conf. dr. ing. Andrei Dumitrescu
6
Bazele Ingineriei Sistemelor de Producţie 3. Programarea Liniară
7
Conf. dr. ing. Andrei Dumitrescu
de soluţii indică faptul că s-au formulat prea multe restricţii, astfel că practic
ele nu pot fi îndeplinite simultan în totalitate).
Observaţia B: Problema de programare liniară poate avea soluţii, dar nici
una dintre ele să fie admisibilă, caz în care A = Ø. În situaţia în care A ≠ Ø, este
posibil ca funcţia F să fie nemărginită pe A, adică să existe un şir de soluţii
admisibile de-a lungul căruia funcţia obiectiv să tindă spre +/- ∞ (o valoare
optimală infinită).
Observaţia C: O consecinţă a definiţiilor 6 şi 7 de mai sus este că, în
condiţiile în care restricţiile (3.9) sunt liniar independente, fiecare dintre
soluţiile de bază ale problemei este nedegenerată, deci prezintă m componente
xj nenule şi n componente xj nule, 1 ≤ j ≤ n + m.
Teorema 1: Un sistem de ecuaţii / inecuaţii liniare, de tipul (3.9)
determină o mulţime convexă care este fie vidă, fie poliedrică şi nemărginită
(cu un număr finit de vârfuri însă), fie un poliedru convex. Această mulţime
este mulţimea soluţiilor admisibile, A.
Teorema 2: Dacă mulţimea (poliedrul) convexă a soluţiilor admisibile nu
este o mulţime vidă, fiecare vârf al poliedrului (mulţimii A) determină o soluţie
de bază şi reciproc (o soluţie admisibilă este un vârf al poliedrului soluţiilor
dacă şi numai dacă este o soluţie de bază).
Teorema 3: A) Dacă mulţimea soluţiilor admisibile, A, este nevidă şi
mărginită, problema (programul liniar) are un optim finit.
B) Dacă mulţimea soluţiilor admisibile, A, este nevidă şi nemărginită,
funcţia - obiectiv poate avea valoarea optimală infinită ( ± ∞ ) sau finită.
C) Dacă mulţimea soluţiilor admisibile, A, este vidă, programul liniar
nu are soluţii (este incompatibil, deoarece sistemul restricţiilor este
contradictoriu).
Teorema 4 (fundamentală): Dacă un program liniar are un optim finit,
atunci funcţia obiectiv, F, îşi atinge optimul (maximul sau minimul) într-o
soluţie de bază (vârf al poliedrului) sau eventual într-o combinaţie convexă de
soluţii de bază (pe o „faţă” a poliedrului). Practic, soluţia optimă se află în unul
dintre vârfurile poliedrului convex al soluţiilor admisibile, A.
Observaţia D: De cele mai multe ori, soluţia optimală este unică. În acest
caz, conform teoremei fundamentale enunţate mai sus, soluţia optimală
corespunde unei soluţii de bază. Dacă soluţia optimală nu este unică, ea poate
corespunde unei combinaţii liniare de soluţii de bază
Principala consecinţă a teoremelor enunţate mai sus şi în special a celei
fundamentale este că va fi deci suficient să căutăm soluţia optimă a problemei
de programare liniară printre elementele mulţimii finite a soluţiilor de bază -
vârfurile poliedrului soluţiilor admisibile (în număr de C nn+ m ), şi nu în mulţimea
A, în general infinită. De aici rezultă cea mai simplă metodă de rezolvare (a
descrierii totale sau a variabilelor de ecart), descrisă în subsecţiunea 3.2.2.
În cazul n = 2 (problemă cu două variabile), se poate utiliza şi metoda
grafică de rezolvare, prezentată în aceeaşi subsecţiune 3.2.2, în principal cu
scop didactic (pentru o mai bună înţelegere a celorlalte metode).
Aceste prime două metode de rezolvare nu pot fi aplicate cu succes în
cazurile uzuale, datorită numărului mare de restricţii m şi de variabile n
întâlnite în practică. De aceea, metodele uzuale de rezolvare a problemelor de
programare liniară au ca scop simplificarea algoritmului metodei variabilelor
de ecart, prin folosirea unor metode iterative cu reducerea numărului de
8
Bazele Ingineriei Sistemelor de Producţie 3. Programarea Liniară
încercări pentru obţinerea soluţiilor optime. Cea mai răspândită dintre aceste
metode este metoda simplex (descrisă în subsecţiunea 3.3.1), care este
fundamentată teoretic pe forma explicită a unui program liniar (în raport cu o
bază dată) şi pe o serie de teoreme mai complexe, pe care (din acest motiv) nu
le vom mai prezenta.
Există multe alte metode de rezolvare a problemelor de programare
liniară, unele cu caracter general, cum ar fi utilizarea programelor duale (vezi
subsecţiunea 3.3.2) şi altele adaptate unor probleme de structură specială, cum
ar fi procedeul pas cu pas sau metoda fluxului într-o reţea pentru problemele
de transport (a se vedea secţiunea 4.1). Există, de asemenea, unele extinderi ale
programării liniare, cum este programarea liniară parametrică sau cea în
numere întregi. S-au dezvoltat, de asemenea, metode şi algoritmi pentru
analiza sensibilităţii şi postoptimizare, care studiază stabilitatea soluţiei optime
în cazul (frecvent întâlnit în practică) în care constantele problemei (aij, bi, cj)
înregistrează unele variaţii.
9
Conf. dr. ing. Andrei Dumitrescu
10
Bazele Ingineriei Sistemelor de Producţie 3. Programarea Liniară
O (0, 0)
40 A (0, 25)
B (17, 13) → D1∩D3
30 C (25, 0)
A
20
B
10
C
O 10 20 30 40 x
D1 D2 D3
Fig. 3.1. Rezolvarea grafică a Aplicaţiei 3.1
11
Conf. dr. ing. Andrei Dumitrescu
xi ≥ 0, i = 1, ...,5
12
Bazele Ingineriei Sistemelor de Producţie 3. Programarea Liniară
x2
d2 d1 A (0, 2)
soluţie variabilă B (4/5, 18/5)→d1∩d2
4 4
3 B x1 = + a C (2, 0)
5 5
18 3
2 A x2 = + a
5 5
d3
C
-4 -1 O 2 x1
-1
13
Conf. dr. ing. Andrei Dumitrescu
sunt reprezentate două drepte ale familiei F, una pentru d = 100 şi cealaltă
pentru d = 975, care trece prin B). Soluţia optimală este deci:
x1opt = 3,75 buc. , x2opt = 0,75 buc. , Fmax = 975 €.
x2 x1 = 0 AA(0;
(0; 3)
3)
B (3,75; 0,75)
BC(3,75;
(4; 0) 0,75)
(la x2 = 12)
C (4; 0)
6x1 + 2x2 = 24
A F = max. [d=975]
3
2 3x1 + 5x2 = 15
- F [d=100] B x2 = 0
O C
3 4 5 x1
14
Bazele Ingineriei Sistemelor de Producţie 3. Programarea Liniară
Tabelul 3.5.
Soluţia x1 x2 x3 x4 F Comentarii
1 0 0 15 24 0 Soluţie de bază (pct. O)
15
Conf. dr. ing. Andrei Dumitrescu
16
Bazele Ingineriei Sistemelor de Producţie 3. Programarea Liniară
F= F – ∑c
j∈J
j ⋅ xj , (3.16)
40. se aplică testul pentru optim infinit ce stabileşte dacă problema are
un optim infinit: dacă aik ≤ 0, oricare ar fi i ∈ I, atunci problema are
un optim infinit; în caz contrar (există cel puţin un i ∈ I, pentru care
aik > 0), se trece la pasul următor;
0
5 . se aplică criteriul de ieşire din bază: se determină r ∈ I (variabila xr
fiind cea care „iese” din bază), prin aplicarea relaţiei de mai jos:
17
Conf. dr. ing. Andrei Dumitrescu
br ⎧b ⎫
= min ⎨ i ⎬ ; (3.17)
ark i∈I ; aik > 0
⎩ aik ⎭
60. se realizează schimbarea bazei, adică se construieşte forma explicită
a programului liniar în raport cu noua bază şi se revine la pasul 20.
Observaţie: Testul de optimalitate (pasul 20) formulat mai sus se referă la
o problemă de maximizare. Pentru o problemă de minimizare, s-a obţinut
soluţia optimă dacă c j ≤ 0, oricare ar fi j ∈ J. În plus, criteriul de intrare în bază
(pasul 30) se modifică pentru o problemă de minimizare astfel: ck = max (c j ) .
j∈J
18
Bazele Ingineriei Sistemelor de Producţie 3. Programarea Liniară
f = 2 x1 + 3x2 + 5 x3 = maxim
Forma standard a problemei se obţine din cea canonică din enunţul de
mai sus, prin introducerea variabilelor de ecart (funcţia - obiectiv f este
aceeaşi):
⎧ x1 + x2 + x3 + x4 = 7
⎪ x + 2 x + 2 x + x = 13
⎪ 1 2 3 5
⎨
⎪ 3 x1 − x2 + x3 + x6 = 5
⎪⎩ xi ≥ 0, 1 ≤ i ≤ 6
19
Conf. dr. ing. Andrei Dumitrescu
Se alege apoi noua variabilă care să intre în bază, astfel încât f să crească
cel mai rapid. Această variabilă este x3, ce are coeficientul pozitiv cel mai mare
în expresia funcţiei obiectiv f.
Se alege variabila din baza iniţială care să „iasă” din bază. Această
variabilă este cea pentru care raportul dintre termenul liber şi coeficienţii noii
variabile de bază, x3, este pozitiv şi minim. Aceşti coeficienţi sunt:
• pentru x4 → 7/1 = 7;
• pentru x5 → 13/2 = 6,5;
• pentru x6 → 5/1 = 5.
Rezultă deci că x6 este variabila care „iese” din „bază”. Noua bază este
x3, x4, x5, iar noile variabile din afara bazei sunt x1, x2, x6.
Etapa 20, iteraţia 2: Se exprimă noua bază şi f în funcţie de noile variabile
din afara bazei. Din a treia ecuaţie (*), se exprimă x3 şi se înlocuieşte apoi în
celelalte ecuaţii. Rezultă astfel următorul sistem, ce reprezintă forma explicită
în raport cu noua bază:
⎧ x3 + 3 x1 − x2 + x6 = 5 ⎧ x3 = 5
⎪ x − 2 x + 2 x − x = 2 pentru ⎪ x4 = 2
⎪ ⎪
(∗∗)⎨ 4 1 2 6
⇒⎨
⎪ x5 − 5 x1 + 4 x2 − 2 x6 = 3 x12 =0 ⎪ x5 = 3
x =0
⎪⎩ f = 25 − 13 x1 + 8 x2 − 5 x6 x3 =0 ⎪⎩ f = 25 (> 0)
Noua variabilă care intră în bază este acum x2, unica ce are un coeficient
pozitiv în expresia lui f. Valorile coeficienţii variabilelor de bază ce trebuie
determinaţi pentru a stabili variabila ce „iese” din bază sunt:
• pentru x3 → 5/-1 = - 5 (<0);
• pentru x4 → 2/2 = 1;
• pentru x5 → 3/4 = 0,75.
Rezultă deci că variabila care „iese” din bază este x5.
Etapa 20, iteraţia 3: Noua bază, care este acum x2, x3, x4, se exprima
(alături de f) în funcţie de noile variabile din afara bazei, x1, x5, x6, obţinând
forma explicită în raport cu baza de la această iteraţie:
⎧ 5 1 1 3 ⎧ 3
⎪ x2 − 4 x1 + 4 x5 − 2 x6 = 4 ⎪ x2 = 4 = 0,75
⎪ 7 1 1 23 pentru ⎪ 23
⎪ x3 + x1 + x5 + x6 = ⎪ x3 = = 5,75
(∗ ∗ ∗) ⎨ 4 4 2 ⇒
4 x1 =0 ⎨ 4
⎪ 1 1 1 x5 =0 ⎪ 1
⎪ x4 + x1 − x5 = x6 =0 ⎪
x4 = = 0,5
⎪ f = 312− 3x −2 2 x −2x ⎪ f = 31 2 (> 25)
⎩ 1 5 6 ⎩
Etapa 30: Observăm că toţi coeficienţii funcţiei obiectiv f, obţinută după
iteraţia 3 din etapa precedentă, sunt acum negativi, deci nu mai este posibil,
schimbând baza, să mărim valoarea lui f. Rezultă că soluţia obţinută mai sus
(după iteraţia 3) este soluţia OPTIMALĂ:
x1opt = 0 ; x2opt = 0,75 ; x3opt = 3,75 .
Valoarea maximă a funcţiei obiectiv rezultă deci: fmax = 31.
Tabelul simplex corespunzător aplicaţiei studiate, care conţine toate cele
trei iteraţii ale rezolvării, este tabelul 3.6, prezentat pe pagina următoare.
După cum se poate observa, coloanele (x1, ... , x6) din tabelul 3.6 conţin
coeficienţii sistemului corespunzător iteraţiei respective – (*) pentru iteraţia 1,
20
Bazele Ingineriei Sistemelor de Producţie 3. Programarea Liniară
(**) pentru iteraţia 2 şi (***) pentru iteraţia 3. Linia de sub cele trei variabile
de bază conţine valoarea funcţiei obiectiv la iteraţia respectivă şi coeficienţii cu
semn schimbat ai lui f din forma explicită corespunzătoare iteraţiei.
Tabelul 3.6.
Iteraţia CO VB VVB x1 x2 x3 x4 x5 x6
0 x4 7 1 1 1 1 0 0
1 0 x5 13 1 2 2 0 1 0
(*) 0 x6 5 3 -1 1 0 0 1
0 -2 -3 -5 0 0 0
5 x3 5 3 -1 1 0 0 1
2 0 x4 2 -2 2 0 1 0 -1
(**) 0 x5 3 -5 4 0 0 1 -2
25 13 -8 0 0 0 5
31 3 0 0 0 2 1
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
f = − x1 + 3x2 − 2 x3 = maxim
21
Conf. dr. ing. Andrei Dumitrescu
Forma standard a problemei, obţinută din cea canonică de mai sus, prin
introducerea variabilelor de ecart, este următoarea (funcţia - obiectiv f fiind
aceeaşi, nu a mai fost scrisă din nou):
⎧ 3x1 − x2 + 2 x3 + x4 = 7
⎪ − 2 x + 4 x + x = 12
⎪ 1 2 5
⎨
⎪− 4 x1 + 3x2 + 8 x3 + x6 = 10
⎪⎩ xi ≥ 0, 1 ≤ i ≤ 6
0 x4 7 3 -1 2 1 0 0
0 x5 12 -2 4 0 0 1 0
1
0 x6 10 -4 3 8 0 0 1
0 1 -3 2 0 0 0
3 x2 3 -1/2 1 0 0 1/4 0
0 x4 10 5/2 0 2 1 1/4 0
2
0 x6 1 -5/2 0 8 0 -3/4 1
9 -1/2 0 2 0 3/4 0
La iteraţia 2, variabila care „intră” în bază este x1, singura care prezintă
coeficient negativ în linia funcţiei-obiectiv. Variabila ce „iese” din baza iniţială
este x4, deoarece prin împărţirea coloanei VVB la coloana variabilei x1, se
obţine o valoare pozitivă doar pentru variabila x4.
22
Bazele Ingineriei Sistemelor de Producţie 3. Programarea Liniară
⎪∑ aij x j ≥ bi , 1 ≤ i ≤ m ⎪∑ aij y j ≤ c j , 1 ≤ j ≤ n
⎪⎩ j =1 ⎩ i =1
În relaţiile (3.18), programul primal este un program de minimizare, (P),
şi are funcţia obiectiv F, iar programul dual al său este unul de maximizare,
(D), ce prezintă funcţia obiectiv G.
Prezentăm, în continuare, principalele reguli pentru construirea
programului dual, reguli ilustrate şi de relaţiile de mai sus:
10. Dacă programul primal (P) este o problemă de maximizare
(minimizare), programul dual (D) va fi o problemă de minimizare
(maximizare).
20. Fiecărei restricţii din (P) îi corespunde în (D) o variabilă. Ca
urmare, numărul variabilelor duale yi este egal cu numărul restricţiilor
programului primal m (în afara condiţiilor de ne-negativitate); fiecare variabilă
duală yi poate fi deci pusă în corespondenţă cu restricţia primală i.
30. Fiecărei variabile din (P) îi corespunde o restricţie în (D). Ca
urmare, numărul n al restricţiilor din programul dual este egal cu numărul
variabilelor primale xj; fiecare variabilă primală xj poate fi deci pusă în
corespondenţă cu restricţia duală j.
40. Termenii liberi bi din (P) devin coeficienţi ai funcţiei obiectiv în
(D), iar coeficienţii funcţiei obiectiv cj din (P) devin termeni liberi în (D).
Matricea coeficienţilor sistemului de restricţii din (D) este transpusa matricei
coeficienţilor sistemului de restricţii din (P).
50. Dualul programului dual este programul primal.
Utilizarea programelor duale, construite conform regulilor de mai sus, la
rezolvarea problemelor de programare liniară se bazează pe următoarea:
Teoremă fundamentală: Se consideră un program primal (P) şi dualul
său (D). Atunci:
23
Conf. dr. ing. Andrei Dumitrescu
A) Dacă (P) are o soluţie optimă finită, atunci (D) are o soluţie
optimă finită, iar minF = maxG (valorile optime ale funcţiilor obiectiv ale
celor două programe sunt egale).
B) Dacă (P) − respectiv (D) − are soluţie optimă infinită, atunci (D)
− respectiv (P) − nu are soluţie.
C) Dacă (P) − respectiv (D) − nu are soluţie, (D) − respectiv (P) − fie
nu are soluţie, fie are soluţie optimă infinită.
Consecinţă (pentru enunţul A): Dacă x = ( x j ) şi y = ( y i ) sunt un cuplu
de soluţii de bază, atunci există relaţia:
n m
F ( x ) = ∑ c j x j ≥ ∑ bi yi = G ( y ) . (3.19)
j =1 i =1
Dacă x şi y sunt soluţii optime, simbolul “≥” din relaţia de mai sus se
înlocuieşte cu simbolul “=”.
Concluzie: Oricărei probleme de programare liniară i se poate ataşa un
program dual. Rezolvând problema, se determină implicit şi soluţia
programului dual. De multe ori, rezolvarea problemei duale este mai simplă
sau mai rapidă.
Exemplu: Următoarele două programe sunt duale:
⎧ x1 ≤ 2 x1 , x2 ≥ 0 ⎧ y1 + y2 − y3 ≥ 1
⎪ → ⎪ 2
⎨ x1 + x2 ≤ 3 ⎨ y2 + y3 ≥ 1
⎪ − x + x ≤1 ← ⎪
⎩ y,y ,y ≥0
1 2 ⎩ 1 2 3
1
max f = x1 + x2 min g = 2 y1 + 3 y2 + y3
2
24
Bazele Ingineriei Sistemelor de Producţie 3. Programarea Liniară
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
f = 5 x1 + 10 x2 + 20 x3 = maxim
Bibliografie
1. Baciu, A., Pascu, A., Puşcaş, E., Aplicaţii ale cercetării operaţionale,
Editura Militară, Bucureşti, 1988.
2. Bărbatu, Gh., Ionescu, V., Cercetarea operaţională în întreprinderile
industriale, Editura Tehnică, Bucureşti, 1981.
3. Bebea, N., Metode pentru rezolvarea problemelor de optimizare,
Editura Didactică şi Pedagogică, Bucureşti, 1976.
4. Dumitrescu, A., Bazele ingineriei sistemelor, Editura Universităţii
din Ploieşti, 2005.
5. Dumitrescu, I., ş.a., Aplicaţii inginereşti ale calculatoarelor, Vol. 2 –
Optimizări, Editura Didactică şi Pedagogică, Bucureşti, 1976.
6. Kaufmann, A., Metode şi modele ale cercetării operaţionale, Editura
Ştiinţifică, Bucureşti, 1967.
7. Nica, V., Ciobanu, Gh., ş.a., Cercetări operaţionale, Vol. I, Ed.
Matrix Rom, Bucureşti, 1998.
8. Oprişan, Gh., Simion, E., Elemente de cercetări operaţionale şi
criptologie, Editura Politehnica Press, Bucureşti, 2002.
9. Rendi, Dorina-Marieta, Metode ale cercetării operaţionale:
programare liniară, teoria jocurilor, teoria grafurilor, Editura
Orizonturi Universitare, Timişoara, 2002.
10. Vrânceanu, Gh., Mititelu, Şt., Probleme de cercetare operaţională,
Editura Tehnică, Bucureşti, 1978.
25