Sunteți pe pagina 1din 7

Lucrarea nr.

1
Metode de rezolvare a problemelor de programare liniară:
Metoda grafică; Metoda variabilelor de ecart

În cadrul acestei lucrări, vor fi prezentate cele mai utilizate metode de rezolvare a
problemelor de programare liniară. Astfel, vom aborda întâi, în principal cu scop
didactic (pentru o mai bună înţelegere a celorlalte metode), metoda grafică. În
continuare, vom prezenta metoda variabilelor de ecart, metodă care este o consecinţă
directă a teoremelor enunţate în Seminarul nr. 2.
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 încercări pentru obţinerea soluţiei optime. Cea mai
răspândită dintre aceste metode este metoda simplex, abordată în Lucrarea nr. 2.
Există multe alte metode de rezolvare a problemelor de programare liniară, unele
cu caracter general, cum ar fi utilizarea programelor duale (vezi Seminarul nr. 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 (caz particular al
problemelor de programare liniară ce constituie obiectul lucrărilor 3 și 4). Există, de
asemenea, unele extinderi ale programării liniare, cum ar fi 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.

1. Metoda grafică
În cazul n = 2 (problemă de programare liniară cu numai două variabile), se poate
utiliza metoda grafică de rezolvare, care presupune reprezentarea grafică a restricţiilor
şi a condiţiilor de nenegativitate, în planul de coordonate x1 şi x2. Rezultatul unei astfel
de reprezentări este un poligon convex care poate fi, în anumite cazuri, nemărginit sau
redus la un punct sau chiar la o mulţime vidă.
Definiţie: Un poligon închis se numeşte convex dacă, o dată cu două puncte, conţine
şi segmentul care le uneşte (dacă punctele A şi B aparţin poligonului, atunci orice
punct de pe segmentul AB aparţine, de asemenea, poligonului).
 Observaţie. Definiţia de mai sus se poate extinde la un poliedru convex (în spaţiul
n-dimensional) sau la o mulţime convexă în general. Poligonul convex obţinut prin
aplicrea metodei grafice este, de atfel, o reprezentare grafică a mulţimii soluţiilor
admisibile, A, definită în Seminarul nr. 2, care este o mulţime convexă.
În continuare, se reprezintă grafic şi funcţia obiectiv, F, ca o familie de drepte
paralele, iar soluţia optimală (care, intuitiv, se găseşte „undeva” pe frontiera poligonului
convex) va corespunde de regulă unui vârf al poligonului convex şi anume cel pentru
care distanţa de la dreapta corespunzătoare a familiei F la origine este maximă. Este

1
Bazele Ingineriei Sistemelor de Producție

însă posibil ca, în cazul în care o latură a poligonului convex este paralelă cu familia de
drepte corespunzătoare funcţiei F, să se obţină o infinitate de soluţii (o combinaţie
convexă de soluţii de bază) corespunzătoare mulţimii punctelor segmentului de dreaptă
ce defineşte acea latură a poligonului, definită de două soluţii de bază (vârfuri).
În cazul problemei cu n > 2 variabile (x1, ..., xn), planul x1 – x2 devine un spaţiu n-
dimensional, iar poligonul devine un poliedru convex, obţinut din intersecţia
hiperplanelor reprezentând restricţile. În acest caz, problema nu mai poate fi efectiv
rezolvată prin aplicarea metodei grafice, care însă a constituit sursa întregii teorii a
programării liniare.
 Exemplul 1 (problemă de alocare a resurselor limitate). Se consideră un banc de
lucru al unui atelier de reparaţii, care execută două categorii de reparaţii. Resursele
disponibile (luate în considerare) sunt materialele şi forţa de muncă. Se notează cu x1 şi
x2 volumul (în bucăţi) al celor două categorii de reparaţii. Resursele necesare sunt
indicate în tabelul de mai jos:
Categorii de reparaţii x1 x2 Total disponibil resurse
*
Resurse materiale [kg/buc.] 3 5 15 kg
Forţa de muncă **
[ore/buc.] 6 2 24 ore
Preţ unitar de reparaţie [€/buc] 200 300 -
* consum unitar de materiale; ** consum unitar de manoperă.

Să se determine cantitatea optimă de produse reparate, x1 şi x2, astfel încât preţul


(valoarea) producţiei realizate să fie maximă.
Formularea modelului de optimizare (al problemei de programare liniară):
1) funcţia obiectiv (valoarea producţiei): F = 200 x1 + 300 x2 = maxim
 3x1  5 x 2  15 
2) sistemul de restricţii:  
6 x1  2 x2  24
3) condiţiile de nenegativitate: x1 ≥ 0 , x2 ≥ 0 .
Rezolvarea prin metoda grafică este ilustrată în figura 1 de mai jos:
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
Figura 1

2
Lucrarea nr. 1 – Programarea Liniară: Metode de rezolvare

 Observaţie. Coordonatele vârfurilor poligonului convex OABC (punctele O, A,


B, C), împreună cu cele ale laturilor poligonului şi întregul domeniu OABC, reprezintă
soluţiile posibile ale sistemului de restricţii (alcătuiesc mulţimea soluţiilor admisibile).
Dacă reprezentăm grafic şi familia de drepte F  200 x1  300 x2  d 
 , corespun-
 c1 c2 
zătoare funcţiei obiectiv, F, observăm că valoarea maximă a funcţiei F se atinge în acel
vârf al poligonului pentru care distanţa de la dreapta corespunzătoare a familiei F la
origine este maximă. Astfel, rezultă că soluţia optimală a problemei este cea
corespunzătoare vârfului B (în figura 1 sunt reprezentate două drepte ale familiei F, una
pentru d = 600 şi cealaltă, care trece prin B, pentru d = 975).
Soluţia optimală este deci: x1opt = 3,75 buc. , x2opt = 0,75 buc. ,
iar valoarea optimă (maximă) a funcţiei obiectiv va fi: Fmax = 975 €.

 Exemplul 2 (problemă cu domeniul OABC nemărginit). Să se rezolve următoarea


problemă de programare liniară:
 3x1  4 x 2  12 (d1 ) x1 , x 2  0

 2 x1  x 2  2 (d 2 )
 x  2x  2 F  3x1  4 x 2  max .
 1 2 (d 3 )
Rezolvarea cu metoda grafică, ilustrată în figura 3-2, arată că domeniul soluţiilor
posibile este nemărginit, deci valoarea maximă a funcţiei obiectiv, F, se atinge la +. În
acest caz, problema prezintă un optim infinit, practic nu există o soluţie optimă. Se poate
considera o soluţie variabilă, ca în figura 2, definită de dreapta d1 şi depinzând de
parametrul a, care, pentru a  +, conduce la valoarea maximă a lui F (+).

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

Figura 2

3
Bazele Ingineriei Sistemelor de Producție

2. Metoda variabilelor de ecart


După cum s-a arătat, principala consecinţă a teoremelor enunţate în Seminarul nr.
2 este aceea că va fi suficient să căutăm soluţia optimă printre soluţiile de bază –
vârfurile poliedrului soluţiilor admisibile (în număr de Cnn m ), de unde rezultă cea mai
simplă metodă de rezolvare (a descrierii totale sau a variabilelor de ecart). Această
metodă presupune parcurgerea a două etape:
10. determinarea soluţiilor de bază ale sistemului de m ecuaţii ale formei standard
(corespunzător celor m restricţii) cu n + m necunoscute (cele n variabile iniţiale şi cele
m variabile de ecart);
20. calculul valorii funcţiei F pentru fiecare soluţie de bază şi compararea acestor
valori în vederea determinării soluţiei optimale.
 Observaţie. Etapa 10 de mai sus presupune rezolvarea unui sistem format din m
ecuaţii cu m + n variabile. Un astfel de sistem are un număr infinit de soluţii. Pentru a
obţine o soluţie a sistemului, se aleg valori pentru n dintre variabile şi se obţin apoi
celelalte (rezolvând un sistem de m ecuaţii cu m necunoscute). Un procedeu simplu de a
alege valori iniţiale pentru câte n necunoscute constă în a le anula (a le lua egale cu
zero). În acest fel, se obţin cel mult Cnn m soluţii cu m variabile nenule, între care se află
şi soluţiile de bază ale problemei.
 Exemplul 3. Să se rezolve problema de programare liniară enunţată în exemplul 1,
utilizând metoda variabilelor de ecart.
Rezolvare. În formularea modelului de optimizare (vezi rezolvarea din paragraful
precedent), se introduc variabilele de ecart xn+i (n = 2, i = 1, 2) obţinând, din sistemul de
restricţii al problemei, următorul sistem de ecuaţii (la care am adăugat condiţiile de
nenegativitate):
 3x1  5 x2  x3  15
 x1  0 , x2  0 , x3  0 , x4  0
6 x1  2 x2  x4  24
S-a obţinut un sistem cu m = 2 ecuaţii şi m + n = 4 necunoscute (n = 2). Numărul
maxim de soluţii cu m = 2 variabile nenule este, în acest caz, Cnnm  C42  6 .
Cele 6 soluţii obţinute sunt prezentate în tabelul de mai jos, împreună cu valorile
corespunzătoare ale funcţiei F şi cu precizarea tipului de soluţie (pentru soluţiile de
bază, s-a indicat şi vârful corespunzător al poligonului OABC din figura 1).
Soluţia x1 x2 x3 x4 F Comentarii
1 0 0 15 24 0 Soluţie de bază (pct. O)
2 0 3 0 18 900 Soluţie de bază (pct. A)
3 0 12 - 45 0 - Soluţie imposibilă (x3 < 0)
4 5 0 0 -6 - Soluţie imposibilă (x4 < 0)
5 4 0 13 0 800 Soluţie de bază (pct. C)
Soluţie OPTIMALĂ
6 3,75 0,75 0 0 975
(pct. B, F = max)

 Observăm că cele patru soluţii posibile obţinute prin această metodă de


rezolvare (1, 2, 5 şi 6) au proprietatea de a coincide cu vârfurile poligonului convex

4
Lucrarea nr. 1 – Programarea Liniară: Metode de rezolvare

OABC obţinut la rezolvarea prin metoda grafică. Aceste soluţii reprezintă deci soluţiile
de bază ale problemei. Dintre soluţiile de bază, una singură este soluţia finală
(optimală), cea care face ca funcţia obiectiv F să atingă valoarea maximă. Această
soluţie este soluţia 6 (corespunzătoare punctului B): x1opt = 3,75 buc.; x2opt = 0,75 buc.
Valoarea maximă a funcţiei obiectiv, corespunzătoare soluţiei optimale, este:
Fmax = 200 x1opt + 300 x2opt + 0x3 + 0x4 = 975 €.

Aplicaţie
Un mic atelier produce două tipuri de piese de automobil. Atelierul cumpără piese
turnate pe care le strunjeşte, le găureşte şi le şlefuieşte. Se cunosc următoarele date:
 Costul pieselor turnate: A – 2 lei/buc.; B – 3 lei/buc.
 Preţurile de vânzare (de piaţă) ale produselor: A – 5 lei/buc.; B – 6 lei/buc.
 Cheltuielile necesare pentru o oră de utilizare a celor trei maşini:
- pentru strung: 20 lei/oră;
- pentru maşina de găurit: 14 lei/oră;
- pentru maşina de şlefuit: 17,5 lei/oră.
 Capacităţile de prelucrare ale celor trei maşini, indicate în tabelul de mai jos.
Capacităţi [buc./oră] Piesa A Piesa B
a strungului 25 40
a maşinii de găurit 28 35
a maşinii de şlefuit 35 25

Să se determine valoarea producţiei (a celor două piese, A şi B) astfel încât


profitul obţinut să fie maxim.
Definirea funcţiei-obiectiv: În acest scop, se calculează profilul adus de fiecare
piesă, conform tabelului următor (valorile sunt exprimate în lei/buc.).
Operaţia Piesa A Piesa B
Strunjire 20/25 = 0,8 20/40 = 0,5
Găurire 14/28 = 0,5 14/35 = 0,4
Şlefuire 17,5/35 = 0,5 17,5/25 = 0,7
Achiziţie 2,0 3,0
Total cheltuieli 3,8 4,6
Preţ vânzare 5,0 6,0
Profit/piesă 1,2 1,4

Dacă se produc, în medie, x piese de tip A şi y piese de tip B pe oră, profitul pe


oră va fi (acesta reprezintă şi funcţia – obiectiv a problemei):
F = 1,2 x + 1,4 y = maxim .

5
Bazele Ingineriei Sistemelor de Producție

Determinarea restricţiilor se face pe baza capacităţii de producţie orare:


D1 (strunjire) x/25 + y/40  1  40 x + 25 y  1000
D2 (găurire) x/28 + y/35  1  35 x + 28 y  980
D3 (şlefuire) x/35 + y/25  1  25 x + 35 y  875
Se adaugă condiţiile de ne-negativitate: x  0 , y  0 .
Rezolvarea prin metoda grafică este ilustrată în figura 3. Dreptele Di, i=1,2,3 ,
corespund celor trei restricţii ale problemei. Dacă am reprezenta şi familia de drepte
reprezentând funcţia F (pentru a nu încărca fig. 3, acestea nu au mai fost incluse pe
grafic), se obţine ca soluţie optimală cea corespunzătoare punctului B, şi anume:
xopt = 17 buc./oră , yopt = 13 buc./oră .

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
Figura 3

Rezolvarea cu metoda variabilelor de ecart:


În formularea modelului de optimizare, se introduc variabilele de ecart xn+i (n = 2,
i = 1, ..., m ; m = 3, n + m = 5) obţinând, din sistemul de restricţii al problemei, următorul
sistem de ecuaţii (la care am adăugat condiţiile de nenegativitate şi în care s-au folosit
notaţiile: x1 = u; x2 = v; x3 = w):
40 x  25 y  u  1000
 x, y  0
 35 x  28 y  v  980
 25 x  35 y  w  875 u , v, w  0

S-a obţinut astfel un sistem cu m = 3 ecuaţii şi m + n = 5 necunoscute. Numărul
maxim de soluţii de bază obţinute este, în acest caz:
2
5  4
C C  n
nm
2
 10 .
1 2
5

Soluţiile de bază obţinute sunt prezentate în tabelul de mai jos. Dintre cele 10
soluţii, 6 (menţionate ca imposibile în tabel) nu sunt admisibile, deoarece prezintă şi
valori negative ale variabilelor de bază: soluţiile 2, 3, 6, 7, 8 şi 10. Celelalte 4 soluţii
sunt soluţiile de bază admisibile (şi anume 1, 4, 5 şi 9), care corespund vârfurilor
poligonului convex OABC obţinut anterior prin metoda grafică (a se vedea fig. 3).

6
Lucrarea nr. 1 – Programarea Liniară: Metode de rezolvare

Soluţia x y u v w F Comentarii

1 0 0 1000 980 875 0 Sol. bază (pct. O)


2 0 40 0 - 140 - 525 - Sol. impos.(v, w < 0)
3 0 35 125 0 - 350 - Sol. impos.(w < 0)
4 0 25 375 280 0 35 Sol. bază (pct. A)
5 25 0 0 105 250 30 Sol. bază (pct. C)
6 28 0 - 120 0 175 - Sol. impos.(u < 0)
7 35 0 - 400 - 245 0 - Sol. impos.(u, v < 0)
8 100/7 120/7 0 0 - 125 - Sol. impos.(w < 0)
9 16,94 12,90 0 25,9 0 38,39 Sol. optimă (pct. B)
10 56/3 35/3 - 115/3 0 0 - Sol. impos.(u < 0)

Dintre soluţiile de bază admisibile, una singură este soluţia finală (optimă), cea
care face ca funcţia obiectiv F să-şi atingă valoarea sa maximă. Această soluţie este
soluţia 9, corespunzătoare punctului B din figura 3, deci rezultă:
xopt = 17 buc./oră ,
yopt = 13 buc./oră ,
Fmax = 38,4 lei/oră .

Problemă propusă: Să se rezolve, utilizând succesiv metoda grafică şi metoda


variabilelor de ecart (comparându-se apoi rezultatele obţinute), problema de programare
liniară caracterizată de următorul model matematic:
12 x1  4 x2  48
 
6 x1  10 x2  30
x1 ≥ 0 , x2 ≥ 0 .
F = 200x1 + 100x2 = max.

Bibliografie
1. Dumitrescu, A., Bazele Ingineriei Sistemelor, Editura Universităţii din
Ploieşti, 2005.
2. Dumitrescu, I., ş.a., Aplicaţii inginereşti ale calculatoarelor, Vol. 2 –
Optimizări, Editura Didactică şi Pedagogică, Bucureşti, 1976.
3. Oprişan, Gh., Simion, E., Elemente de cercetări operaţionale şi criptologie,
Editura Politehnica Press, Bucureşti, 2002.