Sunteți pe pagina 1din 9

TEMA 14: APLICAŢII DE PROGRAMARE LINIARĂ 109

TEMA 14: APLICAŢII DE PROGRAMARE LINIARĂ

Obiective:
 Definirea programului Solver din Excel
 Definirea şi rezolvarea principalelor aplicaţii de programare liniară

Conţinut:
14.1 Programul Solver din Excel 110
14.2 O aplicaţie de alocare de resurse 114
14.3 O aplicaţie de transport 115
14.4 O aplicaţie de programare binară 116
14.5 O aplicaţie de programare liniară în numere întregi 116
14.6 O aplicaţie de programare liniară multiobiectiv 117
14.7 Concepte cheie 117
110 MODULUL 6: MODELE DE OPTIMIZARE

14.1 Programul Solver din Excel


Programul de calcul tabelar Excel din Microsoft Office conţine un program de
completare sau ajutător (add-in) denumit Solver (Rezolvitor), care permite rezoşvarea unor
probleme de optimizare, atât liniare, cât şi neliniare. După instalare, programul Solver se
lansează din opţiunea Tools (Instrumente) în Excel 2003, respectiv din opţiunea Data (Date)
şi grupul Analysis (Analiză) în Excel 2007/2010.
Rezolvarea cu Solver a unei probleme de programare liniară implică următorii paşi:
1. Definirea problemei de programare liniară într-o foaie de calcul tabelar;
2. Definirea funcţiei obiectiv;
3. Definirea variabilelor de decizie;
4. Definirea restricţiilor;
5. Rezolvarea problemei de programare liniară.
1. Definirea problemei de programare liniară într-o foaie de calcul tabelar (Figura
14.1):

Figura 14.1: Foaia de calcul cu problema iniţială de programare liniară

2. Definirea funcţiei obiectiv (Figura 14.2):


Pentru definirea funcţiei obiectiv, deschidem dialogul Solver şi completăm următoarele
informaţii:
 Set Target Cell: celula B6 cu expresia funcţiei obiectiv;
 Equal To: selectăm butonul Max.
TEMA 14: APLICAŢII DE PROGRAMARE LINIARĂ 111

Figura 14.2: Parametrii Solver pentru problema de programare liniară

3. Definirea variabilelor de decizie:


În continuare, pentru definirea variabilelor de decizie, în dialogul Solver completăm
următoarele informaţii (Figura 14.2):
 By Changing Cell: celulele B3şi B4 cu valorile iniţiale ale variabilelor de
decizie.

4. Definirea restricţiilor:
Pentru definirea restricţiilor, în în dialogul Solver completăm următoarele informaţii
(Figura 14.2):
 Subject to the Constraints: selectăm butonul Add;
 Add Constraint: se deschide dialogul din Figura 14.3, pentru adăugarea
restricţiilor. După fiecare restricţie introdusă se apasă butonul OK.

Figura 14.3: Dialogul Solver pentru adăugarea restricţiilor

5. Rezolvarea problemei de programare liniară:


După completarea tutror restricţiilor, se apasă butonul Solve, care deschide dialogul
Solver results din Figura 14.4, în care se selectează butonul Keep Solver Solutions şi se
selectează rapoartele dorite, respectiv (Figura 14.6):
 Answer, raportul cu rezultatele optime ale problemei de programare liniară;
 Sensitivity, raportul cu rezultatele analizei de senzitivitate ale problemei de
programare liniară;
112 MODULUL 6: MODELE DE OPTIMIZARE

 Limits, raportul cu limitele de variaţie ale variabilelor problemei de programare


liniară.

Figura 14.4: Dialogul Solver pentru selectarea rezultatelor


Valorile optime ale variabilelor de decizie şi ale funcţiei obiectiv sunt afişate în foaia de
calcul în care a fost definită problema de programare liniară (Figura 14.5).

Figura 14.5: Foaia de calcul cu rezultatele problemei de programare liniară

Rapoartele generate de Solver sunt prezentate în Figura 14.6 (a)/(b)/(c).


TEMA 14: APLICAŢII DE PROGRAMARE LINIARĂ 113

Figura 14.6(a): Foaia de calcul cu raportul rezultatelor din Solver

Figura 14.6(b): Foaia de calcul cu raportul analizei de senzitivitate din Solver


114 MODULUL 6: MODELE DE OPTIMIZARE

Figura 14.6(c): Foaia de calcul cu raportul analizei limitelor din Solver

14.2 O aplicaţie de alocare de resurse


Elementele problemei de programare liniară de utilizare a resurselor limitate din
secţiunea 11.4.1 de forma:
 n

 max  f   cjxj
 j 1

 n
 aij x j  bi , 1  i  m , (14.1)
 j 1
 x  0, 1  j  n
 j


pot fi sintetizate în tabelul următor:

Produse P1 P2 ... Pn Limitări


Resurse Variabile x1 x2 ... xn resurse
R1 g1(x1, x2,..., xn) a11 a12 ... a1n b1
R2 g2(x1, x2,..., xn) a21 a22 ... a2n b2
Restricţii
... ... ... ... ... ... ...
Rm gm(x1, x2,..., xn) am1 am2 ... amn bm
Funcţia
Profit f(x1, x2,..., xn) c1 c2 ... cn max
obiectiv
TEMA 14: APLICAŢII DE PROGRAMARE LINIARĂ 115

Forma tabelară de mai sus, ne va ajuta să rezolvăm problema de programare liniară cu


Solver prin referire la zonele de date corespunzătoare, ceea ce simplifică foarte mult definirea
elementelor în Solver.
Notând acum cu x  ( x1 , x2 ,..., xn ) vectorul variabilelor de producţie, cu
b  (b1 , b2 ,..., bm ) vectorul resurselor disponibile, cu c  (c1 , c2 ,..., cn ) vectorul profiturilor
 
unitare şi cu A  aij i1,m; j 1,n matricea consumurilor tehnologice, rezultă problema de
programare liniară: sub formă matriceală:
max  f  cx

Ax  b , (14.2)
x  0

Forma matriceală de mai sus, ne va ajuta să rezolvăm problema de programare liniară
cu Solver prin definirea variabilelor corespunzătoare a matricelor respective.

14.3 O aplicaţie de transport


În aplicaţiile de transport, se pune problema distribuţiei şi transportului unor bunuri sau
produse din mai multe puncte de livrare (sau surse de furnizare, notate Fi, i  1, m ) către mai
multe puncte de cerere (sau destinaţii de consum, notate Cj, j  1, n ). La fiecare sursă există o
capacitate de furnizare (notată si, i  1, m ), iar la fiecare destinaţie există o cerere de consum
(notată di, j  1, n ). Sunt cunoscute, de asemenea, costurile unitare de transport de la fiecare
sursă la fiecare destinaţie. Obiectivele problemei de transport este de a planifica cantităţile ce
trebuie transportate, astfel încât restricţiile privind capacitatea de furnizare şi cererea de
consum să fie satisfacute, iar costurile de transport să fie minime.
Să analizăm acum forma generală a problemei de programare liniară pentru o aplicaţie
de transport cu m surse de furnizare şi n destinaţii de consum.
Considerăm următoarele variabile:
 xij  numărul de unităţi de produs transportate de la sursa Fi la destinaţia Cj;
 cij  costurile unitare de transport de la sursa Fi la destinaţia Cj;
 si  capacitatea de furnizare de la sursa Fi;
 d j  cererea de consum de la destinaţia Cj.
Atunci modelul de programare liniară pentru aplicaţia de transport este:
 m n

min  f   cij xij


 i 1 j 1

n
 xij  si , 1  i  m
 j 1 , (14.3)
m
 xij  d j , 1  j  n
 i 1
 x  0, 1  i  m, 1  j  n
 ij
Vom organiza datele tabelar, pentru a facilita calculele în Excel, cât şi pentru aplicarea
programului Solver. Tabelul costurilor unitare de transport este următorul:
116 MODULUL 6: MODELE DE OPTIMIZARE

Costuri unitare de Destinaţii de consum


transport C1 C2 ... Cn
F1 c11 c12 ... c1n
Surse de F2 c21 c22 ... c2n
furnizare ... ... ... ... ...
Fm cm1 cm2 ... cmn
Tabelul cantităţilor de transportat este următorul:
Cantităţi de Destinaţii de consum Capacitatea
transportat C1 C2 ... Cn de livrare
F1 x11 x12 ... x1n s1
Surse de F2 x21 x22 ... x2n s2
furnizare ... ... ... ... ... ...
Fm xm1 xm2 ... xmn sm
Cererea de consum d1 d2 ... dn

14.4 O aplicaţie de programare binară


Vom analiza în continuare o problemă de programare binară, care utilizează variabilele
binare 0 şi 1. În general, în problemele de programare binară, valoarea 0 este atribuită atunci
când o anumită condiţie nu este îndeplinită, iar valoarea 1 este atribuită atunci când condiţia
este îndeplinită.
Dialogul pentru definirea variabilelor binare este prezentat în Figura 14.7.

Figura 14.7: Dialogul pentru definirea variabilelor binare

14.5 O aplicaţie de programare liniară în numere întregi


Modelele de programare liniară în numere întregi se caracterizează prin faptul că unele
variabile sau toate variabilele din model trebuie să fie numere întregi. Un caz particular de
programare în numere întregi îl constituie modelul binar discutat în aplicaţia anterioară.
Punem condiţia ca variabilele să fie numere întregi (Figura 14.8).
TEMA 14: APLICAŢII DE PROGRAMARE LINIARĂ 117

Figura 14.8: Dialogul pentru definirea variabilelor întregi

14.6 O aplicaţie de programare liniară multiobiectiv


Problemele de programare liniară clasice caută determinarea celei mai bune soluţii
(soluţia optimă) pentru o singură funcţie obiectiv. În multe situaţii practice însă, managerii
urmăresc realizarea mai multor obiective. Aceasta implică găsirea unor soluţii care să
satisfacă cât mai bine obiectivele, să fie cât mai apropape de aceste obiective, chiar dacă nu se
obţine optimul. Acest tip de modele fac obiectul programării cu mai multe obiective.
Problemele de programare liniară multiobiectiv (în engleză multi-objective linear
programming sau linear goal programming) urmăresc minimzarea deviaţiilor (sau abaterilor)
faţă de obiective, în condiţiile satisfacerii restricţiilor impuse. În acest scop se definesc
variabile de deviaţie ale funcţiei obiectiv şi se urmăreste minimizarea acestor variabile.

14.7 Concepte cheie


 Programul Solver  Programare binară
 Problemă de transport  Programare în numere întregi
 Surse de furnizare  Programare multiobiectiv
 Destinaţii de consum  Variabile de deviaţie

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