Documente Academic
Documente Profesional
Documente Cultură
Cuprins
Introducere........................................................................................................29
Obiectivele unităţii de studiu.............................................................................29
2.1. Dualitatea...................................................................................................29
2.2. Algoritmul simplex dual..............................................................................32
Test de autoevaluare........................................................................................34
Probleme propuse.............................................................................................34
Bibliografie.........................................................................................................34
Introducere
În a doua unitate de studiu se construieşte problema duală a unei
probleme de programare liniară şi se evidenţiază asemănările şi
deosebirile dintre ele, rezolvându-se în paralel atât problema primală,
cât şi duala acesteia. În partea a doua este prezentat şi exemplificat
algoritmul simplex dual.
Durata medie de parcurgere a unităţii de studiu este de 2 ore
Termeni cheie
Problema duală, problema primală, cuplu de probleme duale forma
simetrică, algoritmul simplex dual.
2.1. Dualitatea
29
Definiţie 2.1.1. Se numeşte duala acestei probleme următoarea problemă de
programare liniară: (2)
max g = y·b
(2)
Teorema 2.1.2. Dacă x 0 şi y 0 sunt soluţii posibile oarecare ale problemelor (1) şi (2)
atunci g(y 0 ) = y 0 b c x 0 = f (x 0).
yn+2 0
.... .... .... .... .... .... ....
yn+m 0 am1 am2 .... amn bm
Relaţii .... max g
Constante c1 c2 .... cn min f
Pentru rezolvarea cuplului de probleme forma simetrică se notează prin:
x = (x1, x2, .. , xn) t - vectorul variabilelor primale de structură
x = (xn+1, xn+2, .. , xn+m) t - vectorul variabilelor primale de compensare
y = (y1, y2, .. , yn) - vectorul variabilelor duale de compensare
y = (yn+1, yn+2, .. , yn+m) - vectorul variabilelor duale de structură.
În iteraţia optimă a tabelului simplex se află componentele soluţiilor
ambelor probleme, adică:
cB B P1 … Pn Pn+1 … Pn+m b
Componentele bazice
ale soluţiei optime a
problemei primale
fj fmin = gmax
cj- fj Variabile duale de Variabile duale de -
compensare structura
30
2) numărul de restricţii ale primalei indică numărul de variabile ale
problemei duale şi reciproc;
3) numărul de variabile ale primalei indică numărul de restricţii ale dualei
şi reciproc;
4) termenii liberi din primală devin coeficienţi ai funcţiei obiectiv din
duală şi reciproc;
5) coeficienţii funcţiei obiectiv din primală devin termeni liberi în duală
şi reciproc;
6) dacă primala are matricea coeficienţilor tehnologici A atunci duala va
avea ca matrice a coeficienţilor tehnologici transpusa matricei A;
7) dacă primala are restricţii:
a)inegalităţi concordante („max”+””; „min”+””);
b) inegalităţi neconcordante („max”+””; „min”+””);
c)egalităţi,
atunci acestora le corespund în duală respectiv:
a) variabile nenegative;
b) variabile nepozitive;
c) variabile de semne oarecare
şi reciproc,
8) dacă primala are:
a) variabile nenegative;
b) variabile nepozitive;
c) variabile oarecare,
atunci acestora le corespund în duală respectiv:
a) restricţii inegalităţi concordante;
b) restricţii inegalităţi neconcordante;
c) restricţii egalităţi.
Exemplul 2.1.6. Să se rezolve problemele duale simetrice:
max f = 3 x1 + 5 x2 + 2 x3 min g = 6 y4 + 5 y5 + 7 y6
Rezolvare:
Vom rezolva, pe rând, cele două probleme cu algoritmul simplex şi apoi
vom evidenţia, în fiecare tabel şi soluţia optimă a celeilalte probleme:
3 5 2 0 0 0 c
cB B
P1 P2 P3 P4 P5 P6 b
0 P4 3 2 1 1 0 0 6
0 P5 1 [2] 2 0 1 0 5
0 P6 2 -1 1 0 0 1 7
fj 0 0 0 0 0 0 0
cj – f j 3 5 2 0 0 0 -
0 P4 [2] 0 -1 1 -1 0 1
5 P2 1/ 2 1 1 0 1/ 2 0 5/2
0 P6 5/2 0 2 0 1/ 2 1 19/2
fj 5/2 5 5 0 5/2 0 25/2
cj – f j 1/ 2 0 -3 0 -5/2 0 -
3 P1 1 0 -1/ 2 1/ 2 -1/ 2 0 1/ 2
5 P2 0 1 5/4 -1/ 4 3/ 4 0 9/4
0 P6 0 0 13/4 -5/4 7/4 1 33/4
fj 3 5 19/4 1/ 4 9/4 0 51/4
cj – f j 0 0 -1/ 4 -1/ 4 -9/4 0 -
31
Astfel soluţia optimă este: x opt = (1/ 2, 9/4, 0, 0, 0, 33/4 ) t, fmax = 51/4.
Soluţia problemei duale este y opt = (0, 0, 11/4, 1/ 4, 9/4, 0 ), valori luate din
linia cj – fj dar cu semn schimbat iar g min = 51/4.
Ne putem convinge de acest fapt prin rezolvarea directă a problemei duale:
0 0 0 6 5 7 b
bB B
Q1 Q2 Q3 Q4 Q5 Q6 c
- - -1 0 0 [3] 1 2 3
- - 0 -1 0 2 2 -1 5
- - 0 0 -1 1 2 1 2
6 Q4 -1/ 3 0 0 1 1/3 2/3 1
- - 2/3 -1 0 0 4/3 -7/3 3
- - 1/3 0 -1 0 [5/3] 1/3 1
6 Q4 -2/5 0 1/5 1 0 3/5 4/5
- Q5 2/5 -1 [4/5] 0 0 -13/5 11/5
5 - 1/5 0 -3/5 0 1 1/5 3/5
6 Q4 -1/ 2 1/ 4 0 1 0 5/4 1/ 4
0 Q3 1/ 2 -5/4 1 0 0 -13/4 11/4
5 Q5 1/ 2 -3/4 0 0 1 -7/4 9/4
gi -1/ 2 -9/4 0 6 5 -5/4 51/4
bi – gi 1/ 2 9/4 0 0 0 33/4 -
Cum toate diferenţele bi – gi 0, avem soluţia optimă g min = 51/4 cu yopt =
(0, 0, 11/4, 1/ 4, 9/4, 0) respectiv pentru problema primală avem x opt = (1/ 2, 9/4, 0,
0, 0, 33/4 ) t, valori luate din linia bi – gi iar fmax = 51/4 = g min . Se vede, într-adevăr,
că s-au obţinut aceleaşi soluţii.
Există situaţii când prin înmulţirea unor restricţii cu (-1) apar în tabel
vectori ce pot fi consideraţi în bază, caz în care se adoptă o metodă puţin modificată
faţă de algoritmul simplex. De fapt este vorba de aplicarea algoritmului simplex, dar
asupra problemei duale. Etapele sunt aceleaşi, dar, dacă în coloana b există elemente
negative, atunci alegerea elementului pivot se va face respectând următoarele două
condiţii:
- pe linia elementului negativ din coloana b se alege element pivot negativ;
- dacă sunt mai multe elemente negative pe această linie atunci pivotul va
fi acela care furnizează cel mai mic raport, în valoare absolută, dar
considerat faţă de elementele corespunzătoare din linia c j – f j.
32
sub forma:
min f = 4 x1 + 5 x2 + 3 x3
3x1 2 x2 x3 6
x x 2 x 5
1 2 3
2 x1 x2 x3 8
x1 , x2 , x3 0
4 5 3 0 0 0 c
cB B
P1 P2 P3 P4 P5 P6 b
0 P4 -3 -2 -1 1 0 0 -6
0 P5 -1 1 -2 0 1 0 -5
0 P6 [-2] -1 1 0 0 1 -8
fj 0 0 0 0 0 0 0
cj – fj 4 5 3 0 0 0 -
0 P4 0 -1/ 2 -5/2 1 0 -3/2 6
5 P5 0 3/2 [-5/2] 0 1 -1/2 -1
0 P1 1 1/ 2 -1/ 2 0 0 -1/2 4
fj 4 2 -2 0 0 -2 16
cj – fj 0 3 5 0 0 2 -
0 P4 0 -2 0 1 -1 -1 7
3 P3 0 -3/5 1 0 -2/5 1/5 2/5
4 P1 1 1/5 0 0 -1/5 -2/5 21/5
fj 4 -1 3 0 -2 -1 18
cj – fj 0 6 0 0 2 1 -
Soluţia optimă va fi x opt = (21/5, 0, 2/5, 7, 0, 0) t şi f min = 18.
Test de autoevaluare
1. Rezolvaţi fiecare din problemele de mai jos atât direct cât şi prin duala sa
şi apoi apreciaţi care dintre soluţionări a fost mai rapidă (sau mai comodă).
33
2. Să se rezolve următoarele probleme aplicând algoritmul simplex dual:
Probleme propuse
1. Rezolvaţi fiecare din problemele de mai jos atât direct cât şi prin duala sa
şi apoi apreciaţi care dintre soluţionări a fost mai rapidă (sau mai comodă).
Bibliografie
1. Ionesu H., Dinescu C., Săvulescu B., Probleme ale cercetării
operaţionale, Editura Didactică şi Pedagogică, Bucureşti, 1972.
2. Butescu V., Baz D, Stremţan N., Matematici superioare, lito.
Universitatea „Dimitrie Cantemir”, Bucureşti, 1994.
3. Căbulea L., Cercetări operaţionale, Editura Dacia, Cluj – Napoca, 2002.
34
Unitatea de studiu 3.
Reoptimizarea problemelor de programare liniară
Cuprins
Introducere........................................................................................................35
Obiectivele unităţii de studiu.............................................................................35
3.1. Modificarea vectorului c.............................................................................36
3.2. Modificarea vectorului b.............................................................................36
3.3 Modificarea unui vector coloană din matricea A..................................39
3.4 Adăugarea unei noi coloane la matricea A.................................................40
3.5 Modificarea unei linii a matricei restricţiilor.................................................41
Test de autoevaluare........................................................................................43
Probleme propuse.............................................................................................43
Bibliografie.........................................................................................................43
Introducere
În a treia unitate de studiu se va determina soluţia unei probleme de
programare liniară, folosind soluţia optimă a unei alte probleme de
programare liniară, care diferă prima prin unul sau mai multe elemente.
Durata medie de parcurgere a unităţii de studiu este de 2,5 ore
Termeni cheie
Reoptimizare, vectorul coeficienţilor din funcţia obiectiv, vectorul
termenilor liberi.
35
3.1. Modificarea vectorului c
36
2 x1 x2 x3 2 x4 2 x5 14
x 2 x x 2 x 2 x 16
1 2 3 4 5
2 x 2 x 2 x x 2 x 18
1 2 3 4 5
x j 0 j 1,5
şi apoi să se reoptimizeze dacă:
a) b b (1) = (24, 30, 16) t
b) b b (1) = (20, 16, 10) t
c) c c (1) = (1, 2, 3, 4, 5)
d) c c (1) = (1, 2, 3, 7, 8)
Rezolvare:
Aplicând algoritmul simplex primal avem:
2 3 4 1 1 0 0 c
cB B
P1 P2 P3 P4 P5 P6 P7 b
0 P6 2 1 1 2 2 1 0 14
- - 1 2 1 2 2 0 0 16
- - 2 2 [2] 1 2 0 -1 18
0 P6 1 0 0 3/2 1 1 1/ 2 5
- - 0 [1] 0 3/2 1 0 1/ 2 7
4 P3 1 1 1 1/ 2 1 0 -1/2 9
0 P6 1 0 0 3/2 1 1 [1/ 2] 5
3 P2 0 1 0 3/2 1 0 1/ 2 7
4 P3 1 0 1 -1 0 0 -1 2
fj 4 3 4 1/ 2 3 0 -5/2 29
cj- fj -2 0 0 1/ 2 -2 0 5/2 -
0 P7 2 0 0 3 2 2 1 10
3 P2 -1 1 0 0 0 -1 0 2
4 P3 3 0 1 2 2 2 0 12
fj 9 3 4 8 8 5 0 54
cj- fj -7 0 0 -7 -7 -5 0 -
Rezultă x opt = (0, 2, 12, 0, 0) t şi f max = 54
xB(1) = · ,
deci avem soluţie optimă în aceeaşi configuraţie a componentelor, dar cu alte valori şi
anume: xB(1) = (0, 6, 18, 0, 0) t şi f max(1) = 90 f max = 54.
37
2 3 4 1 1 0 0 c
cB B
P1 P2 P3 P4 P5 P6 P7 b(1)
0 P7 2 0 0 3 2 2 1 30
3 P2 -1 1 0 0 0 [-1] 0 -4
4 P3 3 0 1 2 2 2 0 24
fj 9 3 4 8 8 5 0 -
cj-fj -7 0 0 -7 -7 -5 0 -
0 P7 0 2 0 3 2 0 1 22
0 P6 1 -1 0 0 0 1 0 4
4 P3 1 2 1 2 2 0 0 16
fj 4 8 4 8 8 0 0 64
cj-fj -2 -5 0 -7 -7 0 0 -
Soluţia optimă este xopt(1) = (0, 0, 16, 0, 0) t şi f max(1) = 64 f max = 54
1 2 3 7 8 0 0 c(1)
cB(1) B
P1 P2 P3 P4 P5 P6 P7 b
0 P7 2 0 0 3 [2] 2 1 10
2 P2 -1 1 0 0 0 -1 0 2
3 P3 3 0 1 2 2 2 0 12
fj 7 2 3 6 6 4 0 40
cj-fj -6 0 0 1 2 -4 0 -
8 P5 1 0 0 3/2 1 1 1/ 2 5
2 P2 -1 1 0 0 0 -1 0 2
3 P3 1 0 1 -1 0 0 -1 2
fj 9 2 3 9 8 6 1 50
cj-fj -8 0 0 -2 0 -6 -1 -
38
(4)
Se consideră iteraţia optimă a problemei (1) în care se recalculează elementele
coloanei P j astfel B –1 P j(1) .
- dacă vectorul P j nu face parte din baza optimă atunci se verifică condiţia
de optim doar pentru acest vector şi se acţionează în consecinţă;
- dacă vectorul P j face parte din baza optimă atunci se trece la schimbarea
bazei.
urmare soluţia optimă a problemei date rămâne optimă şi pentru problema modificată.
b) P2 B, deci B = şi deci B -1 =
2 3 4 1 1 0 0 c
cB B
P1 P2 (1)
P3 P4 P5 P6 P7 b
0 P7 -3 0 0 6 2 -3 1 20
3 P2(1) 1 1 0 -1 0 1 0 -2
4 P3 -1 0 1 3 2 -2 0 20
fj -1 3 4 9 8 -5 0 -
cj-fj 3 0 0 -8 -7 5 0 -
Elementele coloanelor P j au fost calculate cu relaţia B P j. Remarcăm că soluţia
–1
x j 0 j 1,5
care are soluţia optimă unică x opt = (0, 0, 12, 2, 0) t, f max = 50.
3.4. Adăugarea de noi coloane la matricea A
(5)
Pentru reoptimizare se procedează ca în precedentele cazuri utilizând
39
B–1. Se vor calcula valorile din liniile f j şi c j – f j corespunzătoare noii coloane şi se va
acţiona în consecinţă.
Rezolvare:
6 5 4 7 c
cB B
P1 P2 P3 P4 b
- - 1 3 -1 2 14
- - [1] 2 3 1 9
- - 1 1 -4 [1] 5 8 15
6 P1 0 2 3 1 9 P5 P6
7 P4 0 1 -4 1 5 -1 0
6 P1 1 1 7 0 4 4 [2]
fj 6 13 14 7 59 17 12
cj - f j 0 -8 -10 0 - -9 3
7 P4 0 1 -4 1 5 -1 0
15 P6 1/ 2 1/ 2 7/2 0 2 2 1
fj 15/2 29/2 49/2 7 65 23 15
cj - f j -3/2 -19/2 -41/2 0 - -15 0
Soluţia optimă pentru problema iniţială este x opt = (4, 0, 0, 5) , f max = 59.
t
(6)
1 2 3 4 5 0 0 c
cB B
P1 P2 P3 P4* P5* P6 P7 b
1 P1 1 0 0 -1/2 -1/4 3/4 1/4 7/2
41
2 P2 0 1 0 -1/2 -5/4 -1/4 1/4 3/2
3 P3 0 0 1 5/2 [15/4] -1/4 -3/4 11/2
fj 1 2 3 6 17/2 -1/2 -3/2 23
cj-fj 0 0 0 -2 -7/2 1/2 3/2 -
1 P1 1 0 1/15 -1/3 0 11/15 1/5 58/15
2 P2 0 1 1/3 1/3 0 -1/3 0 10/3
5 P5* 0 0 4/15 2/3 1 -1/15 -1/5 22/15
fj 1 2 31/15 11/3 5 -4/15 -4/5 268/15
cj-fj 0 0 14/15 1/3 0 4/15 4/5 -
Din tabel deducem că problema modificată are soluţia optimă
şi fmin(1) =
b) Dacă L2(1) = (2, 2, 2, 2, 2) remarcăm că sunt afectate şi coloanele bazice
astfel că:
şi ,
xopt(12) = (0, 0, 12, 0, 4)t, xopt(1) = (2, 0, 12-4, 4+2)t, 0 1, fmin(1) = 56.
42
Rezumatul unităţii de studiu
Pornind de la soluţia optimă a unei probleme de programare liniară, putem
determina soluţia alteia care diferă cea iniţială prin unul sau mai multe
elemente.
Test de autoevaluare
Să se rezolve problema:
Probleme propuse
Să se rezolve problema:
43
Unitatea de studiu 4.
Programare liniară parametrică
Cuprins
Introducere........................................................................................................44
4.1. Probleme parametrice................................................................................44
4.2. Parametrizarea vectorului c.......................................................................45
4.3. Parametrizarea vectorului b.......................................................................46
Test de autoevaluare........................................................................................48
Probleme propuse.............................................................................................48
Bibliografie.........................................................................................................48
Introducere
A patra unitate de studiu este o generalizare a rezultatelor celei de-a
treia unităţi, aici prezentându-se cazurile în care se cel puţin unul dintre
elementele modelului liniar depinde de unul sau mai mulţi parametri.
Termeni cheie
Parametrizarea vectorului coeficienţilor din funcţia obiectiv,
Parametrizarea vectorului termenilor liberi.
44
Problema de programare liniară parametrică este o problemă de programare
liniară în care cel puţin unul din elementele sale depinde de unul sau mai mulţi
parametrii.
Considerăm problema de programare liniară:
(1)
(2)
Observaţie 4.2.1. Condiţiile de optim cj(t) – fj(t) ≤ 0 sunt cele care conduc la
determinarea subintervalelor în care soluţia este optimă.
Rezolvare
2-t 3 4+2t 3-t 0 0 0 c(t)
2 3 4 3 0 0 0 c(0)
cB B P1 P2 P3 P4 P5 P6 P7 B
0 P5 1 1 [2] 1 1 0 0 3
0 P6 3 2 1 4 0 1 0 5
0 P7 0 1 0 2 0 0 1 1
45
fj 0 0 0 0 0 0 0 0
cj – f j 2 3 4 3 0 0 0 -
4 P3 1/2 1/2 1 1/2 1/2 0 0 3/2
0 P6 5/2 3/2 0 7/2 -1/2 1 0 7/2
0 P7 0 [1] 0 2 0 0 1 1
fj 2 2 4 2 2 0 0 6
cj – f j 0 1 0 1 -2 0 0 -
4+2t 4 P3 1/2 0 1 -1/2 1/2 0 -1/2 1
0 P6 [5/2] 0 0 1/2 -1/2 1 -3/2 2
(*)0 0 P2 0 1 0 2 0 0 1 1
3 fj 2 3 4 4 2 0 1 7
cj – f j 0 0 0 -1 -2 0 -1 -
fj(t) 2+t 3 4+2t 4-t 2+t 0 1-t 7+2t
cj(t) – fj(t) -2t 0 0 -1 -2-t 0 -1+t -
(**) 4+2t P3 0 0 1 -3/5 [3/5] -1/5 -1/5 3/5
2-t P1 1 0 0 1/5 -1/5 2/5 -3/5 4/5
3 P2 0 1 0 2 0 0 1 1
fj(t) 2-t 3 4+2t 4-7/5t 2+7/5t -4/5t 1+t/5 7+2t/5
(1) cj(t) – fj(t) 0 0 0 -1+2/5t -2-7/5t 4/5t -1-t/5 -
0 P5 0 0 5/3 -1 1 -1/3 -1/3 1
2-t P1 1 0 1/3 0 0 1/3 -2/3 1
3 P2 0 1 0 2 0 0 1 1
fj(t) 2-t 3 (2-t)/3 6 0 (2-t)/3 (5+2t)/3
cj(t) – fj(t) 0 0 (10+7t)/3 -3-t 0 (t-2)/3 -(5+2t)/3
Am rezolvat problema pentru t = 0
În tabelul de mai sus se găsesc pe parcurs:
– soluţia optimă pentru t = 0, în tabelul (*)
xopt = (0, 1, 1, 0, 0, 20)t, fmax = 7;
– soluţia optimă a problemei reoptimizate (vezi liniile (**)) x opt =
(0, 1, 1, 0, 0, 2, 0)t fmax =7 +2t când din condiţiile de optimalitate
-2t ≤ 0, -2 -t ≤ 0, deducem că t [0, 1];
– soluţia optimă, când t < 0
xopt = (4/5, 1, 3/5, 0, 0, 0, 0) t fmax = 7 + 2t/5 iar din condiţiile de
optimalitate -1 +2t/5 ≤ 0, 4t/5 ≤ 0, -1-t/5 ≤ 0 se deduce că t [-
10/7,0];
– soluţia optimă, când t < -10/7
xopt = (1, 1, 0, 0, 1, 0, 0)t fmax = 5 -t iar din condiţiile de
optimalitate 10 +7t ≤ 0, -3 -t ≤ 0, -(5+2t) ≤ 0 se deduce că t [-
2, -10/7].
(3)
46
2) – se reoptimizează problema de la 1) cu datele d(t);
3) – din condiţiile de admisibilitate B -1b(t) ≥ 0 se deduce un interval real [α,
β] în care soluţia găsită este admisibilă deci şi optimă. Dacă [α, β] = [a,
b] rezolvarea s-a încheiat, astfel ([α, β] [a, b]) se trece la etapa
următoare.
4) – se ia t [a, b]\[α, β] şi se continuă cu reoptimizarea aplicând
algoritmul simplex dual, până când reuniunea subintervalelor găsite
coincide cu [a, b].
Observaţie 4.3.1. Condiţiile de admisibilitate B-1b(t) ≥ 0 sunt acelea care conduc la
determinarea subintervalelor în care soluţia este optimă.
Rezolvare
6 3 2 4 0 0 c(0)
cB B P1 P2 P3 P4 P5 P6 B
0 P5 1 2 3 4 1 0 7
0 P6 [2] 1 1 2 0 1 3
fj 0 0 0 0 0 0 0
cj – fj 6 3 2 4 0 0 -
0 P5 0 3/2 5/2 3 1 -1/2 11/2
(*) 6 P1 1 1/2 1/2 1 0 1/2 3/2
fj 6 3 3 6 0 3 9
cj – fj 0 0 -1 2 0 -3 -
0 P5 0 3/2 5/2 3 1 [-1/2] (11+7t)/2
6 P1 1 1/2 1/2 1 0 1/2 (3-t)/2
fj 6 3 3 6 0 3 9-3t
cj – fj 0 0 -1 -2 0 -3 -
0 P6 0 -3 -5 -3 -1 1 -11-7t
6 P1 1 2 3 4 1 0 7+3t
fj 6 12 18 24 6 0 42+18t
cj – fj 0 -9 -16 -20 -6 0 -
Soluţia optimă pentru t = 0, este conţinută în tabelul (*)
xopt = (3/2, 0, 0, 0, 11/2)t, fmax = 9
Apoi, când t < -11/7, rezultă 11 +7t < 0, deci soluţia nu este admisibilă şi se
aplică algoritmul simplex dual.
Soluţia optimă este:
xopt = (7 +3t, 0, 0, 0, 0, -11-7t) t, fmax = 42 + 18t când t [-2, -11/7].
47
Test de autoevaluare
Probleme propuse
Bibliografie
1. Căbulea L., Cercetări operaţionale, Editura Dacia, Cluj – Napoca,
2002.
2. Cenuşă Gh. şi colectiv, Matematici pentru economişti, Editura Cison,
Bucureşti, 2000.
3. Filip A., Matematici aplicate în economie, Editura A.S.E. Bucureşti,
2002.
4. Ionesu H., Dinescu C., Săvulescu B., Probleme ale cercetării
operaţionale, Editura Didactică şi Pedagogică, Bucureşti, 1972.
48