Sunteți pe pagina 1din 20

Unitatea de studiu 2.

Dualitatea. Algoritmul simplex dual

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

Obiectivele unităţii de studiu


După parcurgerea unităţii 2, studenţii vor şti:
- să scrie duala unei probleme de programare liniară;
- să rezolve problema duală şi să obţină şi soluţia optimă a
problemei primale de programare liniară;
- să aplice algoritmul simplex dual pentru rezolvarea unei
probleme de programare liniară.

Termeni cheie
Problema duală, problema primală, cuplu de probleme duale forma
simetrică, algoritmul simplex dual.

2.1. Dualitatea

Fie problema de programare liniară numită problemă primală (1)


min f = c·x
(1)

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

Teorema 2.1.3. Are loc una şi numai una din afirmaţiile:


a) ambele probleme au soluţii optime finite şi atunci g max = f min
b) una dintre probleme are soluţie infinită, iar cealaltă problemă nu are
soluţie (posibilă) (este incompatibilă)
c) una dintre probleme are soluţie degenerată, iar cealaltă problemă poate
avea soluţii optime multiple.

Definiţie 2.1.4. Se numeşte cuplu de probleme duale forma simetrică problemele


următoare:
min f = c·x max g = y·b
(1) şi (2) .

Simetria acestor probleme rezultă şi din diagrama lui Tucker:


PROBLEMA PRIMALĂ
Variabile x1  0 x2  0 .... xn  0 Relaţii Constante
yn+1  0 a11 a12 .... a1n  b1
PROBLEMA

a21 a22 .... a2n b2


DUALĂ

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

Observaţie 2.1.5. Având în vedere rezultatele de mai sus deducem că între


problemele unui cuplu primal-dual există anumite legături precise a căror cunoaştere
înseamnă posibilitatea scrierii dualei oricărei probleme de programare liniară. Astfel:
1) dacă problema primală cere maximizarea funcţiei obiectiv, atunci în
problema duală se va cere minimizarea funcţiei obiectiv şi reciproc;

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.

2.2. Algoritmul simplex dual

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.

Exemplul 2.2.1. Să se rezolve, folosind algoritmul simplex dual următoarea


problemă de programare liniară:
min f = 4 x1 + 5 x2 + 3 x3
3 x1  2 x2  x3  6
x  x  2x  5
 1 2 3

 1 2 3 8
2 x  x  x
 x1 , x2 , x3  0
Rezolvare:
Pentru a aplica algoritmul simplex dual este convenabil să scriem problema

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.

Rezumatul unităţii de studiu


Între o problemă de programare liniară şi problema duală a acesteia
există o legătură, astfel fiind posibil scrierea problemei duale pornind de la
scrierea problemei primale şi chiar citirea rezultatelor acesteia din tabelul cu
ajutorul căruia s-a rezolvat problema primală.

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

2. Să se rezolve următoarele probleme aplicând algoritmul simplex dual:

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

Obiectivele unităţii de studiu


După parcurgerea unităţii 3, studenţii vor şti să folosească
reoptimizarea problemelor de programare liniară în cazurile de
modificare: a vectorului coeficienţilor din funcţia obiectiv, a din sistemul
de restricţii, a unui vector coloană din matricea tehnologică.

Termeni cheie
Reoptimizare, vectorul coeficienţilor din funcţia obiectiv, vectorul
termenilor liberi.

35
3.1. Modificarea vectorului c

Practica pune în faţa matematicii situaţia de instabilitate a variantei optime


corespunzătoare unui anumit model liniar, la un moment dat, ca urmare a unui întreg
ansamblu de factori care conduc la modificarea modelului. Astfel putem întâlni
modificări ale termenului liber, ale coeficienţilor funcţiei obiectiv, ale matricei
coeficienţilor restricţiilor, ale numărului de restricţii ale problemei sau ale numărului
de variabile. Modificările pot fi individuale (ale unui singur element) sau multiple (ale
mai multor elemente), iar acestea din urmă pot fi succesive sau simultane.
Prin reoptimizare (postoptimizare) înţelegem procedeul obţinerii soluţiei
optime a unei probleme de programare liniară folosind soluţia optimă a unei alte
probleme de programare liniară, care diferă de aceasta prin unul sau mai multe
elemente.
Considerăm că problema de pornire, a cărei soluţie optimă se cunoaşte este:
(1)

Pornind de la soluţia optimă a problemei (1) vrem să determinăm soluţia


optimă a problemei
(2)
Se pleacă de la iteraţia optimă a tabelului simplex a problemei (1) în care se
recalculează elementele liniei cj(1) - fj(1) :
 dacă cj(1) - fj(1)  0 atunci soluţia optimă a problemei (1) este soluţie
optimă şi pentru problema (2);
 dacă cj(1) - fj(1)  0 atunci se trece la îmbunătăţirea soluţiei.

3.2. Modificarea vectorului b

Pornind de la soluţia optimă a problemei (1) vrem să determinăm soluţia


optimă a problemei
(3)
Se consideră iteraţia optimă a problemei (1) în care se recalculează coloana termenilor
liberi B –1 b (1):
 dacă B –1 b (1)  0 atunci soluţia este optimă;
 dacă există elemente în această coloană negative, atunci se continuă
cu algoritmul simplex dual.

Exemplul 3.2.1. Să se rezolve problema de programare liniară următoare:


max f = 2 x1 +3 x2 + 4 x3 + x4 +x5

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

a) Dacă b (1) = (24, 30, 16) t atunci xB(1) = B –1 b (1) unde:

B = (P7, P2, P3 ) = este baza optimă şi

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.

b) Dacă b (1) = (24, 30, 16) t atunci:

xB(1) = B –1 b (1) = · deci avem o soluţie dual posibilă

având în vedere şi faptul că c j – f j  0 de la care vom porni pentru căutarea noii


soluţii. Înlocuind coloana b prin b (1) şi aplicând algoritmul simplex dual avem:

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

c) Înlocuind c prin c (1) obţinem:


1 2 3 4 5 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 -2 -1 -4 0 -
Şi constatăm că soluţia xopt = (0, 2, 12, 0, 0) rămâne optimă şi pentru problema
t

modificată iar f max(1) = 40  54 = f max.

d) Înlocuind c prin c (1) = (1, 2, 3, 7, 8) obţinem tabelul:

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 -

Şi constatăm că soluţia optimă a problemei modificate este:


xopt(1) = (0, 2, 2, 0, 5) t iar f max(1) = 50  54 = f max.

3.3. Modificarea unui vector coloană P j din matricea A

Pornind de la soluţia optimă a problemei (1) vrem să determinăm soluţia


optimă a problemei .

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.

Exemplul 3.3.1. Ce devine soluţia optimă a problemei rezolvată în exemplul 1.5.3.


dacă:
a) P 1  P 1(1) = (3, 2, 1) t
b) P 2  P 2(1) = (3, 2, 1) t
Rezolvare:

a) P 1  B şi B –1 P 1 (1) = iar c1(1) – f1(1) = - 11  0 şi prin

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

problemei modificate nu este nici posibilă (x B  0 ) nici dual posibilă (x B  0 , c j – f j 


0). Găsirea soluţiei problemei modificate nu este posibilă prin reoptimizare ci
rezolvând problema modificată ca pe o problemă nouă şi anume:
max f = 2 x1 +3 x2 + 4 x3 + x4 +x5
2 x1  3x2  x3  x4  2 x5  14
 x  2 x  x  2 x  2 x  16
 1 2 3 4 5
2 x  x  2 x  x  2 x  18
 1 2 3 4 5

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

Pornind de la soluţia optimă a problemei (1) vrem să determinăm soluţia


optimă a problemei:

(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ţă.

Exemplul 3.4.1. Să se reoptimizeze problema:


max f = 6 x1 +5 x2 + 4 x3 + 7x4
 x1  3 x2  x3  2 x4  14

 x1  2 x2  3 x3  x4  9
x  0 j  1, 4
 j
dacă se introduc în matricea A coloanele P 5 = (2, 3) t şi P6 = (2, 2) t cu coeficienţii c 5 =
8 şi c 6 = 15 în funcţia scop.

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

Deoarece B = , B–1 = avem B–1 · P5 = şi B–1 ·

P6 = , coloane care au fost trecute la sfârşitul tabelului. S-au calculat şi

elementele din liniile fj şi cj -fj corespunzătoare acestor coloane iar întrucât c 6 - f6 = 3 


0, soluţia nu rămâne optimă. După introducerea vectorului P 6 în bază, se obţine soluţia
optimă a problemei reoptimizate x opt =(0,0,0,5, 0, 2) t , f max = 65.

3.5. Modificarea unei linii a matricei restricţiilor

Pornind de la soluţia optimă a problemei (1) vrem să determinăm soluţia


optimă a problemei:

(6)

Modificarea unei linii a matricei restricţiilor înseamnă de fapt modificarea


40
simultană a mai multor coloane ale acestei matrici şi ca urmare sunt posibile cazurile:
1) linia modificată nu schimbă elementele coloanelor bazice şi atunci sunt afectate
doar diferenţele cj-fj ,
2) linia modificată schimbă elemente ale coloanelor bazice şi atunci sunt
afectate atât diferenţele cj-fj cât şi soluţia xB.
Exemplul 3.5.1. Să se rezolve problema:
min f = x1 + 2 x2 + 3 x3 + 4x4 + 5x5
2 x1  x2  x3  x4  2 x5  14
 x  2 x  x  x  x  12
 1 2 3 4 5

 x1  x2  2 x3  x4  3 x5  16
 x  0
şi să se analizeze optimalitatea soluţiei determinate dacă:
a) L3  L3(1) = (1, 1, 2, 4, 6)
b) L2  L2(1) = (2, 2, 2, 2, 2)
Rezolvare:
Aplicând algoritmul simplex primal se obţine:
1 2 3 4 5 0 0 b
cB B
P1 P2 P3 P4 P5 P6 P7 c
0 P6 [2] 1 1 1 2 1 0 14
- - 1 2 1 1 1 0 0 12
- - 1 1 2 1 3 0 -1 16
1 P1 1 1/2 1/2 1/2 1 1/2 0 7
- - 0 [3/2] 1/2 1/2 0 -1/2 0 5
- - 0 1/2 3/2 1/2 2 -1/2 -1 9
1 P1 1 0 1/3 1/3 1 2/3 0 16/3
2 P2 0 1 1/3 1/3 0 -1/3 0 10/3
- - 0 0 [4/3] 1/3 2 -1/3 -1 22/3
1 P1 1 0 0 1/4 1/2 3/4 1/4 7/2
2 (*) P2 0 1 0 1/4 -1/2 -1/4 1/4 3/2
3 P3 0 0 1 1/4 3/2 -1/4 -3/4 11/2
fj 1 2 3 3/2 4 -1/2 -3/2 23
cj-fj 0 0 0 5/2 1 1/2 3/2 -

din care citim şi fmin = 23.


a) dacă L3(1) = (1, 1, 2, 4, 6) remarcăm că nu sunt modificate coloanele P 1, P2
şi P3 care formează baza.

Întrucât B = (P1, P2, P3) şi

iteraţia (*) optimă a problemei iniţiale devine:

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 ,

iar iteraţia optimă (*) a problemei iniţiale devine:


1 2 3 4 5 0 0 c
cB B
P1* P2 P3* P4* P5* P6 P7 b
1 P1* 1 0 0 0 1 1 0 8
2 P2 0 1 0 1 [-2] -1 1 -12
3 P3* 0 0 1 0 2 0 -1 20
fj 1 2 3 2 3 -1 -1
cj-fj 0 0 0 2 2 1 1 -
1 P1* 1 1/2 0 1/2 0 [1/2] 1/2 2
5 P5* 0 -1/2 0 -1/2 1 1/2 -1/2 6
3 P3* 0 1 1 1 0 -1 0 8
fj 1 1 3 1 5 0 -2 56
cj-fj 0 1 0 3 0 0 2 -
0 P6 2 1 0 1 0 1 1 4
5 P5* -1 -1 0 -1 1 0 -1 4
3 P3 *
2 2 1 2 0 0 1 12
fj 1 1 3 1 5 0 -2 56
cj-fj 0 1 0 3 0 0 2 -
Rezultă că problema modificată are optim multiplu cu x opt = (2, 0, 8, 0, 6)t,
(11)

xopt(12) = (0, 0, 12, 0, 4)t, xopt(1) = (2, 0, 12-4, 4+2)t, 0    1, fmin(1) = 56.

Observaţie 3.5.2. Utilitatea practică a reoptimizării se poate reflecta prin:


1) eficienţa procedeului în raport cu soluţionarea problemei modificate ca o
problemă nouă, atunci când se poate, deoarece calculele se reiau de la soluţia optimă a
problemei date şi se studiază efectul modificărilor asupra optimalităţii soluţiei;
2) posibilitatea simulării unor modificări pentru a cunoaşte existenţa sau
inexistenţa unor soluţii optime sub influenţa variaţiilor elementelor definitorii ale
modelului.

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:

şi apoi să se reoptimizeze soluţiile acesteia dacă:


a) b → b(1) = (40, 32, 20)t sau b → b(1) = (24, 30, 32)t;
b) c → c(1) = (6, 5, 4, 3, 2, 1) sau c → c(1) = (1, 3, 5, 3, 1, 6);
c) P1 → P1(1)=(1,2,3)t sau P2 → P2(1)=(3,2,1)t sau P3 → P3(1)=(1,3,1)t;
d) se adaugă P7 = (1, 2, 3)t şi c7 = 2 respectiv P7 = (3, 2, 1)t şi c7 = 5;
e) L1→ L1(1) = (3, 2, 1, 1, 2, 3) sau L2 → L2(1) = (1, 2, 3, 3, 2, 1) sau
L3 → L3(1) = (1, 2, 1, 2, 3, 1) .

Probleme propuse

Să se rezolve problema:

şi apoi să se reoptimizeze soluţiile acesteia dacă:


a) b → b(1) = (40, 32, 20)t sau b → b(1) = (24, 30, 32)t;
b) c → c(1) = (6, 5, 4, 3, 2, 1) sau c → c(1) = (1, 3, 5, 3, 1, 6);
c) P1 → P1(1)=(1,2,3)t sau P2 → P2(1)=(3,2,1)t sau P3 → P3(1)=(1,3,1)t;
d) se adaugă P7 = (1, 2, 3)t şi c7 = 2 respectiv P7 = (3, 2, 1)t şi c7 = 5;
e) L1→ L1(1) = (3, 2, 1, 1, 2, 3) sau L2 → L2(1) = (1, 2, 3, 3, 2, 1) sau
L3 → L3(1) = (1, 2, 1, 2, 3, 1) .
Bibliografie
1. Ştefănescu A., Zidăroiu C., Cercetări operaţionale, Editura Didactică şi
Pedagogică, Bucureşti (1981).
2. Căbulea L., Cercetări operaţionale, Editura Dacia, Cluj – Napoca,
2002.

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.

Durata medie de parcurgere a unităţii de studiu este de 2 ore

Obiectivele unităţii de studiu


După parcurgerea unităţii 4, studenţii vor şti să rezolve problemele de
programare liniară parametrică în cazul dependenţei liniare de un
parametru a vectorului termenilor liberi din sistemul de restricţii sau a
vectorului coeficienţilor din funcţia obiectiv.

Termeni cheie
Parametrizarea vectorului coeficienţilor din funcţia obiectiv,
Parametrizarea vectorului termenilor liberi.

4.1. Probleme parametrice

Parametrizarea unei probleme de programare liniară constituie o generalizare


a reoptimizării şi în măcar unul din elementele modelului liniar (funcţia obiectiv,
matricea restricţiilor, termenul liber al restricţiilor) depinde de unul sau mai mulţi
parametrii.
Problema parametrizării unui model de optimizare liniară înseamnă de fapt
discutarea existenţei soluţiei optime şi determinarea acesteia pentru diverse valori ale
lui λ. Teoretic problema pare a fi simplă. În realitate gradul de dificultate depinde de
numărul parametrilor şi de forma în care aceştia apar în model.

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)

şi vom analiza cazurile când vectorii b şi respectiv c depind liniar de un parametru.

4.2. Parametrizarea vectorului c

Fie problema de programare liniară parametrică

(2)

unde vectori constanţi. Pentru rezolvarea problemei


(2) se parcurg etapele:
1) pentru t = t0 (fixat) se rezolvă problema cu algoritmul simplex;
2) se reoptimizează problema de la 1) cu datele c(t);
3) din condiţiile de optim cj(t) – fj(t) ≤ 0 se deduce un subinterval [α,β] în
care soluţia găsită este optimă.
– dacă [α, β] = [a, b] atunci rezolvarea s-a încheiat.
– dacă [α, β] [a, b] atunci se trece la etapa următoare;
se ia şi se continuă cu reoptimizarea obţinând un nou subinterval
[α1, β1] etc. se continuă astfel, până când reunirea subintervalelor găsite coincide cu [a,
b].

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

Exemplul 4.2.2. Să se rezolve problema de programare liniară parametrică:

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

4.3. Parametrizarea vectorului b

În problema de programare liniară parametrică

(3)

unde b(t) = b1 +tb2, t [a, b], b1 +b2 vectori constanţi


Pentru rezolvarea problemei (3) se parcurg etapele:
1) – pentru t = t0 [a, b] se rezolvă problema în mod obişnuit;

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

Exemplul 4.3.2. Să se rezolve problema de programare liniară parametrică:

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

Pentru a face reoptimizarea calculăm iar din condiţiile

de admisibilitate 11 +7t ≥ 0, 3-t ≥ 0, obţinem t [-11/7, 3] şi soluţia optimă în acest


caz este: xopt = ((3-t)/2, 0,0,0, (11+2t)/2, 0) , fmax 9 -3t.
t

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

Să se rezolve şi să se discute problemele:

Probleme propuse

Să se rezolve şi să se discute problemele:

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

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