Upload
buiduong
View
286
Download
3
Embed Size (px)
Citation preview
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:
njx
mibxa
xcf
j
n
j
ijij
n
j
jj
1 ,0
1 ,
max
1
1
, (14.1)
pot fi sintetizate în tabelul următor:
Resurse
Produse P1 P2 ... Pn Limitări
resurse Variabile x1 x2 ... xn
Restricţii
R1 g1(x1, x2,..., xn) a11 a12 ... a1n b1
R2 g2(x1, x2,..., xn) a21 a22 ... a2n b2
... ... ... ... ... ... ...
Rm gm(x1, x2,..., xn) am1 am2 ... amn bm
Funcţia
obiectiv Profit f(x1, x2,..., xn) c1 c2 ... cn max
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 ),...,,( 21 nxxxx vectorul variabilelor de producţie, cu
),...,,( 21 mbbbb vectorul resurselor disponibile, cu ),...,,( 21 ncccc vectorul profiturilor
unitare şi cu njmiija
,1;,1
A matricea consumurilor tehnologice, rezultă problema de
programare liniară: sub formă matriceală:
0
max
x
bAx
cxf
, (14.2)
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, mi ,1 ) către mai
multe puncte de cerere (sau destinaţii de consum, notate Cj, nj ,1 ). La fiecare sursă există o
capacitate de furnizare (notată si, mi ,1 ), iar la fiecare destinaţie există o cerere de consum
(notată di, nj ,1 ). 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:
ijx numărul de unităţi de produs transportate de la sursa Fi la destinaţia Cj;
ijc costurile unitare de transport de la sursa Fi la destinaţia Cj;
is capacitatea de furnizare de la sursa Fi;
jd cererea de consum de la destinaţia Cj.
Atunci modelul de programare liniară pentru aplicaţia de transport este:
njmix
njdx
misx
xcf
ij
m
i
jij
n
j
iij
m
i
n
j
ijij
1 ,1 ,0
1 ,
1 ,
min
1
1
1 1
, (14.3)
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
transport
Destinaţii de consum
C1 C2 ... Cn
Surse de
furnizare
F1 c11 c12 ... c1n
F2 c21 c22 ... c2n
... ... ... ... ...
Fm cm1 cm2 ... cmn
Tabelul cantităţilor de transportat este următorul:
Cantităţi de
transportat
Destinaţii de consum Capacitatea
de livrare C1 C2 ... Cn
Surse de
furnizare
F1 x11 x12 ... x1n s1
F2 x21 x22 ... x2n s2
... ... ... ... ... ...
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
Problemă de transport
Surse de furnizare
Destinaţii de consum
Programare binară
Programare în numere întregi
Programare multiobiectiv
Variabile de deviaţie