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

TEMA 14: APLICAŢII DE PROGRAMARE LINIARĂ · PDF file14.3 O aplicaţie de transport 115 14.4 O aplicaţie de programare binară 116 ... Set Target Cell: celula B6 cu expresia funcţiei

Embed Size (px)

Citation preview

Page 1: TEMA 14: APLICAŢII DE PROGRAMARE LINIARĂ · PDF file14.3 O aplicaţie de transport 115 14.4 O aplicaţie de programare binară 116 ... Set Target Cell: celula B6 cu expresia funcţiei

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

Page 2: TEMA 14: APLICAŢII DE PROGRAMARE LINIARĂ · PDF file14.3 O aplicaţie de transport 115 14.4 O aplicaţie de programare binară 116 ... Set Target Cell: celula B6 cu expresia funcţiei

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.

Page 3: TEMA 14: APLICAŢII DE PROGRAMARE LINIARĂ · PDF file14.3 O aplicaţie de transport 115 14.4 O aplicaţie de programare binară 116 ... Set Target Cell: celula B6 cu expresia funcţiei

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ă;

Page 4: TEMA 14: APLICAŢII DE PROGRAMARE LINIARĂ · PDF file14.3 O aplicaţie de transport 115 14.4 O aplicaţie de programare binară 116 ... Set Target Cell: celula B6 cu expresia funcţiei

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).

Page 5: TEMA 14: APLICAŢII DE PROGRAMARE LINIARĂ · PDF file14.3 O aplicaţie de transport 115 14.4 O aplicaţie de programare binară 116 ... Set Target Cell: celula B6 cu expresia funcţiei

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

Page 6: TEMA 14: APLICAŢII DE PROGRAMARE LINIARĂ · PDF file14.3 O aplicaţie de transport 115 14.4 O aplicaţie de programare binară 116 ... Set Target Cell: celula B6 cu expresia funcţiei

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

Page 7: TEMA 14: APLICAŢII DE PROGRAMARE LINIARĂ · PDF file14.3 O aplicaţie de transport 115 14.4 O aplicaţie de programare binară 116 ... Set Target Cell: celula B6 cu expresia funcţiei

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:

Page 8: TEMA 14: APLICAŢII DE PROGRAMARE LINIARĂ · PDF file14.3 O aplicaţie de transport 115 14.4 O aplicaţie de programare binară 116 ... Set Target Cell: celula B6 cu expresia funcţiei

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).

Page 9: TEMA 14: APLICAŢII DE PROGRAMARE LINIARĂ · PDF file14.3 O aplicaţie de transport 115 14.4 O aplicaţie de programare binară 116 ... Set Target Cell: celula B6 cu expresia funcţiei

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