Sunteți pe pagina 1din 7

1

0.1 Optimizări liniare


0.1.1 Introducere
Definiţia 0.1.1.1. O problemă de optimizare (programare) matematică are forma

min f (x) sau max f (x),


x∈P x∈P

unde f : Df → R este o funcţie numită funcţia obiectiv a problemei, iar P ⊆ Df este o mulţime
numită domeniul de admisibilitate al problemei sau mulţimea soluţiilor admisibile (mulţimea
programelor) ale problemei.
O soluţie admisibilă x∗ ∈ P astfel ı̂ncât

f (x∗ ) = min f (x), respectiv f (x∗ ) = max f (x),


x∈P x∈P

se numeşte soluţie optimă a problemei, iar valoarea f (x∗ ) se numeşte valoarea optimă a problemei.

Definiţia 0.1.1.2. O problemă de optimizare (programare) liniară este o problemă de optimi-


zare matematică pentru care funcţia obiectiv este liniară iar domeniul de admisibilitate este definit
printr-un sistem de restricţii egalităţi sau inegalităţi liniare.
Forma generală a unei astfel de probleme este
¯
¯ min c> > >
1 x1 + c2 x2 + c3 x3 (sau max)
¯
¯ A11 x1 + A12 x2 + A13 x3 = b1 ,
¯
¯ A21 x1 + A22 x2 + A23 x3 ≤ b2 ,
¯
¯ A31 x1 + A32 x2 + A33 x3 ≥ b3 ,
¯
¯ x1 ≥ 0, x2 arbitrar, x3 ≤ 0,

unde

• c1 , c2 , c3 sunt vectorii coeficienţilor funcţiei obiectiv,

• x1 , x2 , x3 sunt vectorii variabilelor (necunoscutelor) problemei,

• A11 , A12 , A13 , A21 , A22 , A23 , A31 , A32 , A33 sunt matricele sistemului de restricţii,

• b1 , b2 , b3 sunt vectorii termenilor liberi ai sistemului de restricţii.

Definiţia 0.1.1.3. Forma canonică a unei probleme de optimizare liniară este


¯ ¯
¯ min c> x ¯ max c> x
¯ ¯
¯ Ax ≥ b, sau ¯ Ax ≤ b,
¯ ¯
¯ x≥0 ¯ x ≥ 0,

unde c, x ∈ Rn , b ∈ Rm , A ∈ Rm×n (m, n ∈ N∗ ).

Definiţia 0.1.1.4. Forma standard a unei probleme de optimizare liniară este


¯
¯ min c> x (sau max)
¯
¯ Ax = b,
¯
¯ x ≥ 0,

unde c, x ∈ Rn , b ∈ Rm , A ∈ Rm×n (m, n ∈ N∗ ).

Observaţia 0.1.1.1. Orice problemă de optimizere liniară poate fi adusă de la forma generală la
forma standard prin următoarele transformări:
2

1. Transformarea restricţiilor inegalităţi de tipul ”≤” ı̂n egalităţi:


(
Ax + x0 = b,
Ax ≤ b ⇔
x0 ≥ 0.

2. Transformarea restricţiilor inegalităţi de tipul ”≥” ı̂n egalităţi:


(
Ax − x0 = b,
Ax ≥ b ⇔
x0 ≥ 0.

3. Transformarea variabilelor nepozitive ı̂n variabile nenegative:


(
x = −x0 ,
x≤0⇔
x0 ≥ 0.

4. Transformarea variabilelor arbitrare ı̂n variabile nenegative:


(
x = x0 − x00 ,
x arbitrar ⇔
x0 ≥ 0, x00 ≥ 0.

Componentele vectorilor x0 şi x00 se numesc variabile auxiliare.


Exemplul 0.1.1.1. Să se aducă la forma standard problema de optimizare liniară
¯
¯ min 3x1 − 2x2 + x3
¯
¯ 2x1 + x2 − x3 ≥ 2,
¯
¯ 5x1 − 3x2 = 1,
¯
¯ x1 ≥ 0, x2 ≤ 0, x3 arbitrar.

Rezolvare. Utilizăm următoarele transformări:


( (
x2 = −x02 x3 = x03 − x003
x2 ≤ 0 ⇔ ; x3 arbitrar ⇔ ;
x02 ≥ 0 x03 ≥ 0, x003 ≥ 0
(
2x1 + x2 − x3 − x4 = 2
2x1 + x2 − x3 ≥ 2 ⇔ .
x4 ≥ 0
Deci forma standard a problemei date este
¯
¯ min 3x1 + 2x02 + x03 − x003
¯
¯ 2x1 − x02 − x03 + x003 − x4 = 2,
¯
¯ 5x1 + 3x0 = 1,
¯ 2
¯ x1 , x0 , x0 , x00 , x4 ≥ 0,
2 3 3
¯
¯ min c> x
¯
adică ¯¯ Ax = b, unde
¯ x ≥ 0,
µ ¶
> 0 0 00 > 2 −1 −1 1 −1
c = (3, 2, 1, −1, 0) , x = (x1 , x2 , x3 , x3 , x4 ) , A = ,
5 3 0 0 0
µ ¶
2
b= . ¤
1

Observaţia 0.1.1.2. Aplicaţiile practice ale problemelor de optimizare liniară apar ı̂n numeroase
domenii ı̂n care este necesară optimizarea acţiunilor modelate prin funcţii liniare cu restricţii liniare.
Printre acestea enumerăm problemele de optimizare a transporturilor, de planificare a producţiei, de
optimizare a fluxurilor sau interschimburilor economice, de optimizare a deciziilor.
3

0.1.2 Algoritmul simplex


Algoritmul simplex este cel mai cunoscut algoritm pentru rezolvarea problemelor de optimizare liniară.
El se aplică problemelor de optimizare liniară aduse la forma standard.
Ideea algoritmului simplex constă ı̂n căutarea valorii optime şi a soluţiilor optime prin parcurgerea
pas cu pas a vârfurilor suprafeţei poligonale ce reprezintă domeniului de admisibilitate, având drept
criteriu ı̂mbunătăţirea funcţiei obiectiv până la optimizarea acesteia.
Considerăm problema de optimizare liniară sub forma standard
¯
¯ min c> x (sau max)
¯
¯ Ax = b, (0.1.2.1)
¯
¯ x ≥ 0,

unde

• c = (c1 , c2 , . . . , cn )> ∈ Rn este vectorul coeficienţilor funcţiei obiectiv,

• x = (x1 , x2 , . . . , xn )> ∈ Rn este vectorul variabilelor (necunoscutelor) problemei,

• A = (aij )i=1,m ∈ Rm×n este matricea sistemului de restricţii,


j=1,n

• b = (b1 , b2 , . . . , bm )> ∈ Rm este vectorul termenilor liberi ai sistemului de restricţii (m, n ∈ N∗ ).

Presupunem că
rang A = m ≤ n şi b ≥ 0. (0.1.2.2)

Observaţia 0.1.2.1. Presupunerea b ≥ 0 nu este restrictivă, deoarece restricţiile având termenii


liberi bi < 0 pot fi ı̂nmulţite cu −1.

Fiecare pas al algoritmului este reprezentat ı̂ntr-un tabel, numit tabel simplex, având forma

c1 c2 ... cn
cB B xB x1 x2 ... xn

YB

— — ∆ ∆1 ∆2 ... ∆n

unde:

• B este o mulţime de m variabile xi ale căror coloane corespondente din matricea A, notate cu
ai , formează o bază a spaţiului vectorial real (Rm , +, ·), adică det AB 6= 0, unde AB ∈ Rm×m
este matricea formată din aceste m coloane ai . B se numeşte bază a spaţiului soluţiilor, iar
variabilele xi ce compun această bază se numesc variabilele bazei.

• cB = (cB B B >
1 , c2 , . . . , cm ) reprezintă vectorul coeficienţilor ci din funcţia obiectiv corespunzători
variabilelor xi din baza B. Aceşti coeficienţi se numesc coeficienţii bazei.

• xB = (xB B B >
1 , x2 , . . . , xm ) reprezintă vectorul soluţie al sistemului obţinut din sistemul de restricţii
Ax = b luând zero variabilele din afara bazei B. Sistemul rămas este compatibil determinat
deoarece matricea sa, AB , are determinantul nenul. xB se numeşte soluţie de bază.
Dacă xB ≥ 0 (adică soluţia de bază completată cu zero pentru variabilele din afara bazei este
soluţie admisibilă), atunci B se numeşte bază primal admisibilă, iar xB se numeşte soluţie
de bază primal admisibilă.
4

• YB = (yij
B)
i=1,m reprezintă matricea ale cărei coloane sunt scrierile coloanelor matricei A ı̂n baza
j=1,n
{ai | xi ∈ B} corespunzătoare lui B, adică

YB = (AB )−1 A.

• ∆ reprezintă valoarea funcţiei obiectiv pentru soluţia de bază xB (luând zero variabilele din afara
bazei B), adică
Xm
∆= cB B
i xi . (0.1.2.3)
i=1

• ∆1 , ∆2 , . . . , ∆n reprezintă indicatori de optimalitate pentru soluţia de bază xB (luând zero va-


riabilele din afara bazei B), definiţi prin formulele
 m

 X
 cB B
cj −
 i yij , dacă problema este de minim,
∆j = X i=1 ∀j ∈ {1, . . . , n}. (0.1.2.4)
m

 B B

 ci yij − cj , dacă problema este de maxim,

i=1

Observaţia 0.1.2.2. Dacă baza B corespunde bazei canonice {e1 , e2 , . . . , em }, atunci

xB = b şi YB = A. (0.1.2.5)

Descriem ı̂n continuare algoritmului simplex.


Algoritmul 0.1.2.1 (Algoritmul simplex). Pentru rezolvarea unei probleme de optimizare liniară,
se parcurg următoarele etape:
Etapa 1. Dacă problema dată nu are forma standard, se aduce la forma standard (0.1.2.1), cu b ≥ 0
(utilizând transformările din Observaţiile 0.1.1.1 şi 0.1.2.1).

Etapa 2. Se completează primul tabel simplex, pornind cu o bază primal admisibilă. De regulă, se uti-
lizează baza B corespunzătoare bazei canonice {e1 , e2 , . . . , em }, dacă toţi cei m vectori unitate
e1 , e2 , . . . , em sunt coloane ı̂n matricea A.
Dacă nu se dispune de o bază primal admisibilă, atunci o astfel de bază se poate determina
utilizând o metodă numită metoda celor două faze, ce va fi descrisă ı̂n secţiunea următoare.

Etapa 3. Se interpretează datele din tabelul simplex curent, pentru a decide ı̂ncheierea calculelor sau
continuarea lor ı̂ntr-un nou tabel simplex.
Pentru aceasta, se parcurg următorii paşi (subetape):

Pasul 1 (Verificarea criteriului de optim finit). Dacă

∆j ≥ 0 ∀j ∈ {1, . . . , n},

atunci problema dată are valoare optimă finită.


Valoarea optimă este egală cu ∆, iar o soluţie optimă este soluţia de bază xB completată
cu zero pentru variabilele din afara bazei.
Algoritmul se ı̂ncheie.
Pasul 2 (Criteriul de intrare ı̂n bază). Intră ı̂n bază o variabilă xj0 cu proprietatea că

∆j0 = min {∆j | ∆j < 0, j ∈ {1, . . . , n}}

(vom nota acest fapt ı̂n tabel printr-o săgeata verticală pe coloana variabilei xj0 , lângă
∆j0 ).
5

Pasul 3 (Verificarea criteriului de optim infinit). Dacă


B
yij0
≤ 0 ∀i ∈ {1, . . . , m},

atunci problema dată are valoare optimă infinită şi anume −∞ pentru problemele de minim,
respectiv +∞ pentru problemele de maxim.
Nu există soluţii optime.
Algoritmul se ı̂ncheie.
Pasul 4 (Criteriul de ieşire din bază). Iese din bază o variabilă xi0 cu proprietatea că
( )
xBi0 xBi B
= min | yij > 0, i ∈ {1, . . . , m}
yiB0 j0 B
yij 0
0

(vom nota acest fapt ı̂n tabel printr-o săgeata orizontală pe linia variabilei xi0 , lângă această
variabilă).
Etapa 4. Se completează un nou tabel simplex, corespunzător noii baze B \ {xi0 } ∪ {xj0 } (obţinută din
vechea bază B prin substituţia xi0 ← xj0 ).
Pentru aceasta, se parcurg următorii paşi (subetape):
Pasul 1. Se ı̂nlocuieşte variabila xi0 cu variabila xj0 ı̂n coloana bazei B şi coeficientul cB
i0 cu coefi-
cientul cB
j0 ı̂n coloana coeficienţilor bazei cB (corespunzător faptului că noua bază se obţine

prin substituţia xi0 ← xj0 ).


Pasul 2. Se completează coloana soluţiei de bază xB , matricea YB şi indicatorii de optimalitate
∆1 , ∆2 , . . . , ∆n prin aplicarea regulii pivotului yiB0 j0 (pivotul este situat la intersecţia dintre
coloana variabilei xj0 ce iese din bază cu linia variabilei xi0 ce intră ı̂n bază şi ı̂l vom evidenţia
ı̂n tabel prin ı̂ncadrare yiB0 j0 ).
Pasul 3. Se recalculează valoarea ∆ a funcţiei obiectiv cu formula (0.1.2.3).
După completarea noului tabel simplex se reia Etapa 3.
Observaţia 0.1.2.3. Algoritmul simplex se ı̂ncheie ı̂n momentul ı̂n care este satisfăcut unul din
cele două criterii de optim, finit sau infinit. Valorile ∆ ale funcţiei obiectiv corespunzătoare bazelor
succesive (din tabelele simplex succesive) sunt descrescătoare pentru problemele de minim, respectiv
crescătoare pentru problemele de maxim.
Observaţia 0.1.2.4. Dacă o bază se repetă ı̂n decursul algoritmului simplex, atunci spunem că
algoritmul ciclează, conducând la repetarea infinită a paşilor. Ciclarea apare doar pentru probleme
degenerate, cu soluţii de bază având un număr mai mic decât m de componente nenule. Pentru
rezolvarea acestei situaţii se perturbă vectorul b al termenilor liberi cu mici cantităţi de control εai
(ε > 0 fiind foarte mic), apoi se aplică algoritmul simplex, obţinându-se la final valori ε-optimale
pentru funcţia obiectiv c> x, adică valori c> x cu proprietatea că

|c> x − c> x∗ | < ε,

unde c> x∗ este valoarea optimă a problemei. Această metodă se numeşte metoda perturbării
controlate a lui Charnes.
Exemplul 0.1.2.1. Să se rezolve următoarea problemă de optimizare liniară:
¯
¯ min 2x1 + x2 − x3 + 3x5
¯
¯ x1 + 2x2 + x5 = 10,
¯
¯ −x2 + x3 − 2x5 = 7,
¯
¯ 3x2 + x4 − x5 = 4,
¯
¯ x1 , x2 , x3 , x4 , x5 ≥ 0.
6
¯
¯ min c> x
¯
Rezolvare. Vom aplica algoritmul simplex. Problema are forma standard ¯¯ Ax = b, unde
¯ x ≥ 0,
 
1 2 0 0 1
c = (2, 1, −1, 0, 3)> , x = (x1 , x2 , x3 , x4 , x5 )> , A =  0 −1 1 0 −2  ,
0 3 0 1 −1
 
10
b =  7  ≥ 0.
4
Toţi cei m = 3 vectori unitate e1 , e2 , e3 sunt coloane ı̂n matricea A: e1 = a1 , e2 = a3 , e3 = a4 .
Deci primul tabel simplex se completează pornind cu baza primal admisibilă B = {x1 , x3 , x4 } cores-
punzătoare bazei canonice, pentru care xB = b şi YB = A (conform Observaţiei 0.1.2.2). Aplicând
formulele (0.1.2.3) obţinem
∆ = 2 · 10 + (−1) · 7 + 0 · 4 = 13,
iar aplicând formulele (0.1.2.4) (problema fiind de minim) obţinem

∆1 = 2 − [2 · 1 + (−1) · 0 + 0 · 0] = 0, ∆2 = 1 − [2 · 2 + (−1) · (−1) + 0 · 3] = −4,

şi, analog, ∆3 = 0, ∆4 = 0, ∆5 = −1. Aceste valori sunt trecute ı̂n primul tabel simplex.
Se interpretează datele din primul tabel simplex:

• ∃∆j < 0 (fapt menţionat şi imediat ı̂n dreapta tabelului, pe linia indicatorilor ∆j ) deci nu este
ı̂ndeplinit criteriul de optim finit;

• min{∆j | ∆j < 0} = min{−4, −1} = −4 = ∆2 , deci, conform criteriului de intrare ı̂n bază,
va intra ı̂n următoarea bază variabila x2 (fapt marcat ı̂n tabel prin săgeata verticală de lângă
∆2 = −4);

• ∃yi2B > 0 (fapt menţionat şi imediat ı̂n dreapta tabelului prin fracţiile de pe liniile corespondente
B > 0, fracţii necesare la aplicarea criteriului de ieşire din bază) deci nu este ı̂ndeplinit
valorilor yi2
criteriul de optim infinit;
½ B ¾ ½ ¾
xi B 10 4 4
• min B
| yi2 > 0 = min , = (aceste fracţii fiind calculate şi imediat ı̂n dreapta
yi2 2 3 3
tabelului pe liniile corespondente valorilor yi2 B > 0, pe liniile corespondente valorilor y B ≤ 0
i2
scriindu-se semnul ”—” şi fracţia minimă fiind marcată cu ”min”) deci, conform criteriului de
ieşire din bază, va ieşi din bază variabila x4 (fapt marcat ı̂n tabel prin săgeata orizontală pe linia
variabilei x4 , lângă această variabilă) iar pivotul este elementul 3 (fapt marcat şi ı̂n tabel prin
ı̂ncadrare).

Se completează un nou tabel simplex, corespunzător noii baze B{x1 , x3 , x2 } (obţinută din vechea bază
B prin substituţia x4 ← x2 ):

• se ı̂nlocuieşte variabila x4 cu variabila x2 ı̂n coloana bazei B şi coeficientul c4 = 0 cu coeficientul


c2 = 1 ı̂n coloana coeficienţilor bazei cB ;

• se completează coloana soluţiei de bază xB , matricea YB şi indicatorii de optimalitate ∆1 , . . . , ∆5


prin aplicarea regulii pivotului;
22 25
• se recalculează valoarea ∆ a funcţiei obiectiv cu formula (0.1.2.3), deci ∆ = 2 · + (−1) · +
3 3
4 23
1· = .
3 3
7

Datele din acest tabel sunt interpretate şi se completează succesiv noi tabele simplex, conform descrierii
algoritmului simplex.
Prezentăm ı̂n continuare toate aceste tabele (ı̂ncepând cu primul tabel simplex).

2 1 -1 0 3 min (problema este de minim)


cB B xB x1 x2 x3 x4 x5
2 x1 10 1 2 0 0 1 10/2=5
-1 x3 7 0 -1 1 0 -2 —
0 ←x4 4 0 3 0 1 -1 4/3 min
— — 13 0 -4↑ 0 0 -1 ∃∆j < 0
2 ←x1 22/3 1 0 0 -2/3 5/3 (22/3)/(5/3) min
-1 x3 25/3 0 0 1 1/3 -7/3 —
1 x2 4/3 0 1 0 1/3 -1/3 —
— — 23/3 0 0 0 4/3 -7/3↑ ∃∆j < 0
3 x5 22/5 3/5 0 0 -2/5 1
-1 x3 93/5 ... 0 1 ... 0
1 x2 14/5 ... 1 0 ... 0
— — -13/5 7/5 0 0 2/5 0 ∆j ≥ 0 ∀j
La interpretarea datelor din ultimul tabel este satisfăcut criteriul de optim finit ∆j ≥ 0 ∀j.
Deci o soluţie optimă a problemei date este
14 93 22
x1 = 0, x2 = , x3 = , x4 = 0, x5 = ,
5 5 5
iar valoarea optimă este
13
min(2x1 + x2 − x3 + 3x5 ) = − .
5
¤

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