Sunteți pe pagina 1din 23

Modele matematice şi optimizări

(anul universitar 2017-2018)

Tematica laboratoarelor
( urmează îndeaproape şi concordant problematica chestiunilor abordate la curs ) :

Laborator nr. 1. Utilizarea produselor program în studiul modelelor


asociate problemelor de optimizare.
• Componenta Solver din MS – Excel pentru problema de programare
liniară
• Produsul informatic QM pentru probleme de Cercetări operaţionale

Laborator nr. 2. Prezentarea şi analizarea unor modele matematice liniare


asociate problemelor de programare liniară.

Laborator nr. 3. Exemplificarea unor tehnici de modelare matematică


prezentate la curs.

Componenta Solver
2
3
4
5
6
7
8
9
10
11
Produsul informatic QM
Pachetul QM conţine 15 module, din care modulul A este dedicat problemelor de programare liniară,
iar modulul E problemei de transport. El permite utilizatorului o rezolvare corectă şi rapidă a problemelor
respective. Însă avantajul cel mai mare al utilizării QM este analiza economică pe care o poate realiza
utilizatorul pe baza rezultatelor furnizate de pachet.
Vom explica modul de utilizare al pachetului QM pe două exemple concrete.

Lansarea pachetului şi ieşirea din el

Activăm directorul în care se află pachetul QM şi lansăm la execuţie programul qm.com. Pe ecran
apare Meniul principal, din care selectăm modulul A pentru a rezolva o problemă de programate liniară (A.
Linear Programming) sau modulul E pentru a rezolva o problemă de transport (E. Transportation).
După selectarea modulului necesar, este afişat ecranul de lucru, format di trei ferestre. Fereastra de
jos conţine o listă de comenzi care pot fi lansate tastând tasta respectivă.
Terminarea normală a secţiunii de lucru cu QM se face tastând <ESC> de mai multe ori pentru a
ajunge în sistemul de operare.

Rezolvarea unei probleme de programare liniară

Fie problema
f = − x1 + x2 + 3 x3 − > max,
2 x1 − x2 + x3 <= 1, ⎫
4 x1 − 2 x2 + x3 >= −2,⎪⎪

3x1 + x3 <= 5, ⎪
x1 , x2 , x3 >= 0. ⎪⎭
Startăm QM şi selectăm modulul A. acest modul rezolvă probleme de programare liniară cu cel
mult 50 restricţii şi cel mult 50 variabile, utilizând algoritmul simplex primal. Pe ecran este afişat ecranul de
lucru.
Pentru introducerea datelor problemei lansăm comanda New, tastând litera N. Este afişat un alt
ecran cu trei ferestre. Vom completa câmpurile de date din primele două ferestre cu datele problemei în
felul următor.
În fereastra de sus, în câmpul “Problem Title:” introducem titlul problemei; în “Type of Problem
(Max=1/Min=2)” introducem cifra 1, deoarece avem o problemă de maximizare; în
“Tableau(All=1/Final=2/No=3)” introducem 1 pentru afişarea tablourilor simplex de la toate iteraţiile; în
“Number of Constraints” introducem 3, deoarece avem trei restricţii în problemă; în “Number of Variables”
introducem 2 – numărul de variabile. Trecerea de la un câmp la altul se face prin <ENTER>.
După completarea primei ferestre se trece la cea mijlocie unde sunt afişate alte câmpuri de date
pentru a fi completate. Aici introducem coeficienţii din funcţia scop, coeficienţii din restricţii, tipul restricţiilor
şi părţile drepte ale restricţiilor.
“Obj.”: coeficienţii pentru funcţia obiectiv: -1 1 3;
12
“C1”: coeficienţii din restricţia 1: 2 –1 1; tipul restricţiei 1: < (pentru <=); partea dreaptă a restricţiei
1: 1;
“C2”: datele din restricţia 2: 4 -2 1 > -2;
“C3”: datele din restricţia 3: 3 0 1 < 5.
După tastarea ultimei date apăsăm comanda Run.
QM ne va afişa următoarele rezultate:

Program: Liniar Programming


Problem Title : Pr. De programare liniară
***** Input Data *****
Max. Z= -1x1 + 1x2 + 3x3
Subject to
C1 2x1 – 1x2 + 1x3 <=1
C2 4x1 – 2x2 +1x3 >=-2
C3 3x1 + 1x3 <= 5

***** Program Output *****

13
Simplex Tableau 0
Cj -1.000 1.000 3.000 0.000
Cb Basis Bi x 1 x 2 x 3 s 1
0.000 s 1 1.000 2.000 -1.000 1.000 1.000
0.000 s 2 2.000 -4.000 2.000 -1.000 0.000
0.000 s 3 5.000 3.000 0.000 1.000 0.000
Zj 0.000 0.000 0.000 0.000 0.000
Cj-Zj -1.000 1.000 3.000 0.000

Cj 0.000 0.000
Cb Basis Bi s 2 s 3
0.000 s 1 1.000 0.000 0.000
0.000 s 2 2.000 1.000 0.000
0.000 s 3 5.000 0.000 1.000
Zj 0.000 0.000 0.000
Cj-Zj 0.000 0.000

Simplex Tableau 1

Cj -1.000 1.000 3.000 0.000


Cb Basis Bi x 1 x 2 x 3 s 1
3.000 x 3 1.000 2.000 -1.000 1.000 1.000
0.000 s 2 2.000 -2.000 1.000 0.000 1.000
0.000 s 3 4.000 1.000 1.000 0.000 -1.000
Zj 3.000 6.000 -3.000 3.000 3.000
Cj-Zj -7.000 4.000 0.000 -3.000

14
Cj 0.000 0.000
Cb Basis Bi s 2 s 3
3.000 x 3 1.000 0.000 0.000
0.000 s 2 3.000 1.000 0.000
0.000 s 3 4.000 0.000 1.000
Zj 3.000 0.000 0.000
Cj-Zj 0.000 0.000

Simplex Tableau 2
Cj -1.000 1.000 3.000 0.000
Cb Basis Bi x 1 x 2 x 3 s 1
3.000 x 3 4.000 0.000 0.000 1.000 2.000
1.000 x 2 3.000 -2.000 1.000 0.000 1.000
0.000 s 3 1.000 3.000 0.000 0.000 -2.000
Zj 15.000 -2.000 1.000 3.000 7.000
Cj-Zj 1.000 0.000 0.000 -7.000

Cj 0.000 0.000
Cb Basis Bi s 2 s 3
3.000 x 3 4.000 1.000 0.000
1.000 x 2 3.000 1.000 0.000
0.000 s 3 1.000 -1.000 1.000
Zj 15.000 4.000 0.000
Cj-Zj -4.000 0.000

15
Simplex Tableau 3
Cj -1.000 1.000 3.000 0.000
Cb Basis Bi x 1 x 2 x 3 s 1
3.000 x 3 4.000 0.000 0.000 1.000 2.000
1.000 x 2 3.667 0.000 1.000 0.000 -0.333
-1.000 x 1 0.333 1.000 0.000 0.000 -0.667
Zj 15.333 -1.000 1.000 3.000 6.333
Cj-Zj 0.000 0.000 0.000 -6.333

Cj 0.000 0.000
Cb Basis Bi s 2 s 3
3.000 x 3 4.000 1.000 0.000
1.000 x 2 3.667 0.333 0.667
-1.000 x 1 0.333 -0.333 0.333
Zj 15.333 3.667 0.333
Cj-Zj -3.667 -0.333

Final Optimal Solution


Z= 15.333

Variable Value Reduced Cost


X1 0.333 0.000
X2 3.667 0.000
X3 4.000 0.000
Constrain Slack/Surplus Shadow Price
C1 0.000 6.333
C2 0.000 3.667
C3 0.000 0.333

16
Objective Coefficient Ranges
Variables Lower Current Upper Allowable Allowable
Limit Values Limit Increase Decrease
x1 -2.000 -1.000 8.500 9.500 1.000
x2 0.000 1.000 20.000 19.000 0.500
x3 -0.000 3.000 No limit No limit 3.167

Right Hand Side Ranges


Constraints Lower Current Upper Allowable Allowable
Limit Values Limit Increase Decrease
C1 -1.000 1.000 1.500 0.500 2.000
C2 -3.000 -2.000 2.000 4.000 1.000
C3 4.000 5.000 No limit No limit 1.000

***** End of Output *****

În prima parte este prezentată problema de rezolvat. În continuare sunt afişate tablourile simplex
cerute. Aici s1,s2,s3 sunt variabile ecart cu coeficienţii 0 în funcţia scop. Eventual pot fi şi variabile
artificiale notate prin A1,A2,… cu coeficienţii (-M) (sau M) în funcţia scop.
Prima linie a tabloului simplex conţine coeficienţii din funcţia scop.
Linia a doua conţine denumirile coloanelor tabelului:
Cb: coeficienţii funcţiei scop pentru baza curentă;
Basis : baza curentă;
Bi: soluţia la iteraţia curentă;
x1,x2,…,s1,s,…,A1,A2,…: coeficienţii variabilei respective din restricţii;
Zj: produsul scalar dintre coloana Cb şi coloana sub care e afişat Zj; prima valoare este valoarea
funcţiei scop pentru soluţia curentă; sub coloanele s1,s2,…,A1,A2,… se află valorile variabilelor duale;
C j - Z j : diferenţele dintre Cj şi Zj, care reprezintă criterii pentru verificarea optimalităţii soluţiei.
La maximizare soluţia este optimă, dacă C j - Z j <= 0 pentru orice j.
( C j - Z j arată cum se va schimba funcţia obiectiv, dacă variabila xj, sj sau Aj nebazică ar intra în
bază; de asemenea ( C j - Z j ) arată valoarea restricţiei duale:( c j − ∑ aij ui )).
Tabelul următor “Final Optimal Solution” conţine valorile optimale pentru funcţia scop şi variabile.

Coloana “Reduced Cost” arată valorile restricţiilor ( aij ui − c j ) pentru problema duală egale cu
Z j − C j din problema primală.
În tabelul următor sunt indicate valorile variabilelor ecart, adică abaterea valorii părţii stângi a
restricţiei faţă de partea dreaptă (Slack/Surplus), şi preţurile umbră (Shadow Price), adică soluţia optimă a
problemei duale.
Tabelul “Objective Coefficient Ranges” arată sensibilitatea soluţiei la variaţia coeficienţilor funcţiei
scop. El are coloanele: Variables = Variabila ( x j ); Lower Limit = limita inferioară; Curent Value = valoarea

17
curentă ( c j ); Upper Limit = limita superioară; Allowable Increase = creşterea permisă; Allowable Decrease
= descreşterea permisă.
Pentru x1, de exemplu, informaţia din acest tabel se interpretează astfel: dacă toate celelalte
condiţii ale problemei rămân neschimbate, iar coeficientul c1 − 1 de pe lângă x1 din funcţia scop variază
în intervalul [-2;8.5] ( [Lower Limit; Upper limit] ), adică soluţia optimă a problemei primale rămâne
neschimbată, iar valoarea funcţiei scop se modifică cu valoarea ± x1Δc1 .
Tabelul “ Right Hand Side Ranges” arată sensibilitatea soluţiei la variaţia părţilor drepte ale
restricţiilor. El conţine coloanele: Constraints = restricţia; Lower Limit, Curent Value ( bi ), Upper Limi,
Allowabl Increase şi Allowable Decrease cu acelaşi sens ca şi în tabelul precedent.
Informaţia din tabel se interpretează astfel. De exemplu, pentru restricţia C3: dacă toate celelalte
condiţii ale problemei rămân neschimbate, iar partea dreaptă a restricţiei C3 b3 = 5 variază în intervalul
[4;+∞) ( [Lower Limit; Upper Limit]), adică se micşorează cu Δb3 ∈ [0;1] ( [0;Allowable Decrease] ) sau
creşte cu Δb3 ∈ [0;+∞] ( [0;Allowable Increase] ), atunci soluţia optimă a problemei duale rămâne
neschimbată, iar valoarea optimă a funcţiei scop a problemei duale se va schimba сu ± u3 Δb3 . Din
teorema dualităţii deducem imediat că şi valoarea optimă a funcţiei scop a problemei primale se va schimba
respectiv cu aceeaşi valoare.

Rezolvarea problemelor de transport

Pentru a rezolva o problemă de transport la calculator cu pachetul QM procedăm în felul următor.


Fie problema de transport de minimizare cu matricea

18
d1 d2 d3 d4 a
s1 2 1 3 2 90
s2 2 3 3 1 70
s3 3 3 2 1 50
b 80 60 40 30

Startăm QM şi selectăm modulul E, care rezolvă probleme de transport cu cel mult 40 destinaţii
(consumatori). Lansăm comanda New pentru a introduce datele problemei. Este afişat ecranul de
lucru cu trei ferestre. În fereastra de sus, în câmpul “Problem Title:” introducem titlul problemei; în
câmpul “Type of Problem (Max=1/Min=2)” introducem 2, deoarece avem o problemă de minimizare;
în “Initial (MW=1/MC=2/VAM=3)” indicăm metoda de determinare a soluţiei iniţiale:
1. metoda colţului Nord-Vest (NW);
2. metoda costului minim din tabel (MC);
3. metoda Vogel = metoda diferenţelor maxime (VAM).
În câmpul “Number of Sourses” introducem 3- numărul de furnizori; în câmpul “Number of
Destinations” introducem 4 – numărul de consumatori.
În fereastra a doua sursele sunt notate prin liniile S1,S2,…, iar destinaţiile prin coloanele D1,D2,… .
La intersecţia acestor linii şi coloane introducem costurile unitare de transport din matricea de transport. În
coloana “Sourses” introducem cantitatea de marfă pentru fiecare sursă; în linia “Des.” Introducem
cantitatea de marfă necesară fiecărui consumator.
Terminăm introducerea datelor cu “ESC” şi lansăm comanda Run pentru a rezolva problema. QM
ne va afişa următoarele rezultate:

Program: Transportation
Problem Title : Pr. De transport
***** Input Data *****
Minimization Problem :
1 2 3 4 Supply
1 2.0 1.0 3.0 2.0 90.0
2 2.0 3.0 3.0 1.0 70.0
3 3.0 3.0 2.0 1.0 50.0

Demand 80.0 60.0 40.0 30.0


***** Program Output *****
Initial Solution by Northwest Corner Method
1 2 3 4 Supply
1 80.0 10.0 0.0 0.0 90.0
2 0.0 50.0 20.0 0.0 70.0
3 0.0 0.0 20.0 30.0 50.0

Demand 80.0 60.0 40.0 30.0 210.0

Initial Solution : 450.0

Optimal Solution by MODI


1 2 3 4 Supply

19
1 30.0 60.0 0.0 0.0 90.0
2 50.0 0.0 0.0 20.0 70.0
3 0.0 0.0 40.0 10.0 50.0

Demand 80.0 60.0 40.0 30.0 210.0

Optimal Solution : 330.0

***** End of Output *****


Primul tabel conţine matricea de transport a problemei. (Supply = oferta; Demand = cererea).
Tabelul doi conţine soluţia iniţială determinată prin metoda selectată (NW), şi ultimul tabel conţine
soluţia optimă obţinută prin metoda MODI (algoritmul simplex MODIficat pentru probleme de transport).

20
Probleme pentru lucrarea nr.1.

21
Probleme pentru lucrarea nr.2.

I. Un plan de nutriţie cere consumarea a cel puţin 200 unităţi de proteine şi 180
unităţi de grăsimi...
Analizele chimice arată că o unitate din alimentul A conţine 6 unităţi de proteine şi 3 unităţi de
grasimi, iar o unitate din alimentul B conţine 3 unităţi de proteine şi 5 unităţi de grăsimi.
Consumul din cele două tipuri de alimente se face numai în unităţi întregi. Preţul de cumpărare
este de 2,5$ pentru o unitate din produsul A şi 2$ pentru o unitate din produsul B.
Câte unităţi din fiecare aliment trebuiesc consumate astfel încât să fie satisfăcute cerinţele
e proteine şi grăsimi iar costul să fie minim ? Creaţi şi redactaţi modelul problemei.

II. O fabrică de jucării produce 3 variante de roboţi de jucărie


Prima necesită 10 minute timp de fabricaţie şi ambalare şi 700g de plastic, a doua variantă
necesită 12 minute şi 1050g plastic iar cea de-a treia 15 minute şi 1400g plastic.
În urmatorul ciclu de producţie există 8 ore timp de fabricaţie şi ambalare disponibil pentru
aceste sortimente şi 70kg de plastic. Profitul obţinut în urma comercializării unui robot de primul
tip este de 1$, al doilea tip 5$, al treilea 6$. Există o comandă anterioară care trebuie onorată din
această producţie, constând în 10 roboţi din fiecare tip.
Formulaţi problema ca o problemă de programare liniară, pentru a determina cantităţile
din fiecare tip ce trebuie produse pentru a asigura maximizarea profitului.

III. O firmă de turism are o cerere de transport pentru 500 de persoane. Această firmă
dispune de trei tipuri de mijloace de transport cu următoarele caracteristici: ...

Mijloace transp.Tip 1: locuri: 30; consum (l/100Km): 12; nr.mijloace transp.disponibile: 6;


Mijloace transp.Tip 2: locuri: 50; consum (l/100Km): 18; nr.mijloace transp.disponibile: 5;
Mijloace transp.Tip 3: locuri: 45; consum (l/100Km): 17; nr.mijloace transp.disponibile: 4.

Creaţi / redactaţi modelul acestei probleme (variabile, funcţie obiectiv şi restricţii) şi


determinaţi soluţia optimă - câte mijloace de transport din fiecare tip sunt necesare pentru
transportul pasagerilor astfel încât costul transportului să fie minim.

22
Problema pentru lucrarea nr.3

Problema comis voiajorului : Un comis-voiajor trebuie sa viziteze un număr de n


oraşe codificate 1, 2, ...n. Iniţial acesta se afla in oraşul x. Comis-voiajorul doreşte
sa nu treacă de două ori prin acelaşi oraş şi in final sa revină in oraşul x.
Cunoscând toate legăturile directe existente intre oraşe, se cere să se determine
traseul minim de parcurgere a tuturor oraşelor pornind din oraşul x, astfel încât
traseul să se termine tot în x

23

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