Documente Academic
Documente Profesional
Documente Cultură
Obiective
- Modalităţile de analiză cu ajutorul instrumentului Solver
- Utilizarea Solver pentru rezolvarea problemelor de minimizare, maximizare,
programare liniară
- Generarea rapoartelor de analiză
5.2. Solver
Instrumentul Solver nu face parte din instalarea standard şi din acest motiv înainte de
a putea fi utilizat acesta trebuie instalat. Operaţia de instalare implică parcurgerea etapelor:
1. Din meniul Tools se alege comanda Add-Ins ceea ce determină apariţia casetei de
dialog cu acelaşi nume.
2. Se acţionează opţiunea Solver Add-in.
3. Se acţionează butonul [OK] iar ca efect Solver va apărea în meniul Tools.
Cu ajutorul Solver-ului se pot rezolva probleme de programare liniară şi neliniară precum
probleme de maximizare/minimizare, probleme de transport, probleme de amestec, probleme
de minimizare a costurilor etc.
Pentru utilizarea instrumentului Solver sunt necesare următoarele:
1. Se construieşte foaia de calcul şi se stabilesc celulele care conţin variabilele de intrare
şi rezultatul.
2. Se selectează din meniul Tools comanda Solver ceea ce determină apariţia casetei de
dialog Solver Parameters (figura 5.1).
2 / 15 - SISD - Laborator 05
În caseta text Set Target Cell se specifică celula care conţine formula (această celulă
obligatoriu trebuie să conţină o formulă) cu rezultatul care trebuie analizat (funcţia obiectiv).
În secţiunea Equal To se alege ce se urmăreşte pentru funcţia obiectiv: Max dacă
trebuie maximizată, Min dacă trebuie minimizată iar dacă funcţia obiectiv trebuie să atingă o
anumită valoare se selectează opţiunea Value of, iar în caseta text alăturată se introduce
valoarea respectivă.
În caseta text By Changing Cells se vor specifica celulele sau domeniul de celule pe
care Solver-ul le va modifica pentru a obţine valoarea optimă. În mod concret se precizează
celulele care pot fi ajustate până restricţiile din problemă sunt satisfăcute şi până când celula
din caseta Set Target Cell îşi atinge ţinta. Celulele ajustabile trebuie să se afle în relaţie
directă sau indirectă cu celula ţintă.
Selectarea butonului [Guess] determină găsirea (ghicirea) tuturor celulelor fără
formule la care se referă formula din caseta Set Target Cell şi plasează referinţele în caseta By
Changing Cells.
Caseta Subject to the Constraints va conţine sau afişează restricţiile curente ale
problemei. Pentru a adăuga o restricţie se acţionează butonul [Add] iar pe ecran apare caseta
de dialog Add Constraint (figura 5.2) în care se pot introduce restricţiile problemei.
Rezumat
Această lucrare prezintă modul de lucru cu instrumentul de analiză Solver.
4 / 15 - SISD - Laborator 05
Aplicaţii
Problema 1
Date
Date (Cheltuieli unitare de transport - Tab. 5.1)
(Tab. 5.2)
La început aceste celule se vor completa cu date aleatoare (de exemplu, toate variabilele sunt
egale cu 10), care iniţializează procesul de calcul. În urma rezolvării problemei în aceste
celule se vor obţine valorile lor corespunzătoare optimului funcţiei obiectiv.
În celulele B3, B4, B5 se va calcula producţia totală realizată în fiecare fabrică astfel:
în B3 se va introduce formula =SUM(C3:E3) şi aceasta se copiază în celulele B4 şi B5.
În celulele C6, D6, şi E6 se va calcula producţia depozitată în fiecare depozit astfel:
în celula C6 se va introduce formula =SUM(C3:C5) şi apoi aceasta se va copia în celulele
D6 şi E6.
Celulele B10, B11, B12 vor conţine capacităţile de producţie la fabricile A, B şi C,
adică valorile 20, 30 şi 40.
Celulele C13, D13, E13 vor conţine cererile de distribuţie de la cele trei depozite,
adică valorile 20, 40 şi 30.
În domeniul C10:E12 se vor introduce cheltuielile de transport pe unitatea de produs
de la fiecare fabrică la fiecare depozit (în conformitate cu datele din tabelul 5.1).
În celulele C15, D15, E15 se calculează cheltuielile de transport la fiecare depozit. În
celula C15 se introduce formula =C3*C10+C4*C11+C5*C12 (numărul de produse
transportate de la fabrica A la depozitul S * cheltuielile de transport + numărul de produse
transportate de la fabrica B la depozitul S * cu cheltuielile de transport + numărul de produse
transportate de la fabrica C la depozitul S * cheltuielile de transport). Această formulă se
copiază în celulele D15 şi E15.
În celula B15 se vor calcula cheltuielile cu transportul şi în consecinţă în această
celulă se va introduce formula =SUM(C15:E15). Se poate observa că această formulă este în
conformitate cu expresia funcţiei obiectiv (în celulele C15, D15 şi E15 s-au calculat
cheltuielile pentru transportul producţiei de la cele 3 fabrici la depozitele S, P şi R, respectiv).
Restricţiile pentru problema prezentată sunt:
1. B3 <= B10 (producţia din fabrica A să nu depăşească capacitatea de producţie);
2. B4 <= B11 (producţia din fabrica B să nu depăşească capacitatea de producţie);
3. B5 <= B12 (producţia din fabrica C să nu depăşească capacitatea de producţie);
4. C6 >= C13 (să nu existe rupere de stoc la depozitul S);
5. D6 >= D13 (să nu existe rupere de stoc la depozitul P);
6. E6 >= E13 (să nu existe rupere de stoc la depozitul R);
7. C3:E5 >= 0 (toate variabilele trebuie să fie numere pozitive).
7 / 15 - SISD - Laborator 05
După ce foaia de calcul a fost astfel configurată, din meniul Tools se selectează
comanda Solver. Obiectivul problemei este minimizarea cheltuielilor totale de transport iar
această valoare este calculată în celula B15. În consecinţă, în Set Target Cell se introduce
B15. Funcţia trebuie minimizată, şi pentru acest lucru se va alege opţiunea Min.
Celulele care conţin variabilele de intrare sunt în domeniul C3:E5, deci în zona By
Changing Cells se specifică domeniul C3:E5.
În caseta Subject to the Constraints se introduc restricţiile problemei:
» se acţionează butonul [Add];
» în caseta Add constraints, în zona Cell Reference se specifică celula B3;
» din lista cu operatori se selectează <=;
» în caseta Constraint se specifică celula B10;
» se acţionează butonul [Add] ;
» în mod similar se introduc şi celelalte restricţii prezentate anterior.
c1
c
C 2 M n ,1 R este vectorul coloană al coeficienţilor funcţiei obiectiv;
...
c
n
a 11 a 12 ... a 1m
a a 22 ... a 2m
A 21 M n , m R este matricea ce conţine (pe coloane)
... ... ... ...
a a n2 ... a nm
n1
coeficienţii restricţiilor;
B b1 b2 ... b m M1, m R este vectorul linie al membrilor drepţi ai restricţiilor
10 1 0 0 1 0 0
14 1 0 0 0 1 0
8 1 0 0 0 0 1
12 0 1 0 1 0 0
C 10 M9 ,1 R ; A 0 1 0 0 1 0 M9 , 6 R ;
12 0 1 0 0 0 1
8 0 0 1 1 0 0
12 0 0 1 0 1 0
10 0 0 1 0 0 1
B - 20 - 30 - 40 20 40 30 M1, 6 R
Pentru ca toate restricţiile să fie de tipul "" , se poate observa că primele trei au fost înmulţite
cu 1 .
Se demonstrează că rezolvarea problemei de optimizare (programare liniară) este
echivalentă cu rezolvarea problemei duale, care se formulează astfel:
max g B Y
A Y C
Y O
În continuare se va verifica această afirmaţie pentru cazul problemei rezolvate mai sus.
9 / 15 - SISD - Laborator 05
Pentru început, se vor verifica din punctul de vedere al consistenţei funcţia obiectiv şi
constrângerile noii probleme:
B1,6 Y6,1 g1,1 , deci noile necunoscute sunt un vector coloană cu 6 linii;
Problema 2
Tab. 5.4
Conţinutul în principii nutritive Cantităţile minime
Principiul nutritiv
A1 A2 prescrise (kg)
P1 0,1 0 0,4
P2 0 0,1 0,6
P3 0,1 0,2 2
P4 0,2 0,1 1,7
Cost unitar (per kg) 2,4 0,8
20
17
15 (d4)
10 (d3)
M
(d2) N
6
5 P
(d1)
x
O 4 5 17 10 15 20
2
Fig. 5.5: Reprezentările grafice ale restricţiilor problemei 2
11 / 15 - SISD - Laborator 05
Se ştie că orice curbă sau suprafaţă împarte spaţiul respectiv în două regiuni:
Regiunea pozitivă, în care expresia (curbei sau suprafeţei) devine pozitivă;
Regiunea negativă, în care expresia (curbei sau suprafeţei) devine negativă;
În cazul de faţă este vorba de patru drepte, care împart (fiecare din ele) planul în două regiuni:
d1 : x 4
d 2 : y 6
d 3 : 0,1 x 0,2 y 2
d 4 : 0,2 x 0,1 y 1,7
Pentru a afla regiunea de interes, se alege un punct arbitrar (de exemplu originea) şi se
înlocuiesc în ecuaţia dreptei (curbei sau suprafeţei) coordonatele sale. Acest punct poate fi sau
nu în regiunea de interes. De exemplu, în cazul dreptei (d1), regiunea pozitivă este cea din
partea sa dreaptă (ce corespunde punctelor x 4 ), fapt care era evident fără alte comentarii.
Se poate observa că pentru toate dreptele din figura 5.5, regiunile pozitive sunt cele care nu
conţin originea. Rezultă că regiunea în care toate cele 4 restricţii sunt pozitive este domeniul
haşurat, delimitat de punctele …, M, N, P, …
Coordonatele acestora sunt următoarele:
d1 x 4
M4 ; 9
d 4 2 x y 17
d 3 x 2 y 20 14 23
N ;
d 4 2 x y 17 3 3
d 3 x 2 y 20
P8 ; 6
d 2 y 6
Este evident că punctele de pe conturul …MNP… sunt cele care maximizează la limită
restricţiile, deci sunt susceptibile de a minimiza funcţia obiectiv. Rezultă că pentru a afla
soluţia problemei, se înlocuiesc în funcţia obiectiv coordonatele punctelor M, N, P şi se reţine
ca soluţie punctul pentru care se obţine valoarea cea mai mică:
M 4 ; 9 C4 , 9 2,4 4 0,8 9 16,8 lei
14 23 14 23 14 23
N ; C , 2,4 0,8 17,3 lei
3 3 3 3 3 3
P8 ; 6 C8 , 6 2,4 8 0,8 6 24 lei
Rezultă că soluţia optimă este cumpărarea a 4 kg din substanţa A1 şi a 9 kg din substanţa A2,
pentru care se va plăti suma de 16,8 lei.
12 / 15 - SISD - Laborator 05
Metoda II (Solver)
Rezolvarea cu ajutorul Solver-ului este asemănătoare cu cea prezentată la problema 1.
Astfel, datele se introduc intr-o foaie de calcul (figura 5.6):
În celula H12 se calculează funcţia obiectiv (preţul plătit pentru achiziţionarea hranei),
cu formula =B10*B12+C10*C12 sau cu formula =SUMPRODUCT(B10:B12,C10:C12).
Restricţiile acestei problemei sunt (în conformitate cu tabelul 5.4):
1. E5 >= G5 (conţinutul hranei în principiul nutritiv P1 trebuie să fie cel puţin G5);
2. E6 >= G6 (conţinutul hranei în principiul nutritiv P2 trebuie să fie cel puţin G6);
3. E7 >= G7 (conţinutul hranei în principiul nutritiv P3 trebuie să fie cel puţin G7);
4. E8 >= G8 (conţinutul hranei în principiul nutritiv P4 trebuie să fie cel puţin G8);
5. C3:E5 >= 0 (toate variabilele trebuie să fie numere pozitive).
După ce foaia de calcul a fost astfel configurată, din meniul Tools se selectează
comanda Solver. Obiectivul problemei este minimizarea cheltuielilor totale de transport iar
această valoare este calculată în celula H12. În consecinţă, în Set Target Cell se introduce
H12. Funcţia trebuie minimizată, şi pentru acest lucru se va alege opţiunea Min.
Celulele care conţin variabilele de intrare sunt în domeniul B12:C12, deci în zona By
Changing Cells se specifică domeniul B12:C12.
În caseta Subject to the Constrains se introduc restricţiile problemei:
» se acţionează butonul [Add];
» în caseta Add constraints, în zona Cell Reference se specifică celula E5;
» din lista cu operatori se selectează >=;
» în caseta Constraint se specifică celula G5;
» se acţionează butonul [Add] ;
» în mod similar se introduc şi celelalte restricţii prezentate anterior.