Sunteți pe pagina 1din 55

CAPITOLUL III*)

OPTIMIZAREA PROCESELOR ECONOMICE UTILIZÂND PROGRAMAREA LINIARĂ

3.1. Forma generală a unei probleme de programare liniară

Problemele de maxim şi de minim apar frecvent în cele mai diferite domenii ale
matematicilor pure sau aplicate. În domeniul economic, asemenea probleme sunt foarte naturale.
Astfel, firmele încearcă să maximizeze profiturile sau să minimizeze costurile. Experţii în
planificare macroeconomică se preocupă de maximizarea bunăstării unei comunităţi economico-
sociale. Consumatorii doresc să cheltuiască venitul lor într-un mod care să le maximizeze satisfacţia
(de natură materială dar şi spirituală etc.)

Programarea liniară se ocupă de o clasă specială de probleme de optimizare care apar


deseori în aplicaţiile economice. Aceste probleme constau în maximizarea sau minimizarea unei
funcţii liniare, numită funcţie obiectiv, ale cărei variabile trebuie să satisfacă:
 un sistem de relaţii date sub forma unor ecuaţii şi/sau inecuaţii liniare nestricte, denumite
generic restricţii;
 cerinţa de a lua numai valori numerice nenegative (0).

3.1.1. Exemple

1) Problema firmei. Considerăm un sistem de producţie, de exemplu o firmă, care produce n


bunuri G1,G2,...,Gn utilizând pentru aceasta m categorii de resurse R1,R2,...,Rm (materii prime, forţă
de muncă, capacităţi de producţie, combustibili şi energie etc.). Adoptăm ipoteza că tehnologia de
transformare a resurselor în bunuri este liniară în sensul că:
 Pentru fiecare bun, consumul dintr-o anumită resursă este direct proporţional cu cantitatea
produsă.
 Consumurile dintr-o resursă sau alta nu se condiţionează reciproc.
Fie atunci aij cantitatea din resursa i utilizată pentru producerea unei unităţi din bunul Gj. Fie
deasemeni bi cantitatea disponibilă din resursa Ri şi cj preţul (sau profitul) unitar al bunului Gj.
 Preţul unui bun nu depinde de cantitatea produsă şi nici de situaţia vânzărilor celorlalte
bunuri.

Problema constă în determinarea unui program de fabricaţie care să maximizeze venitul


(sau profitul) firmei.

Să notăm cu xj cantitatea din bunul Gj care urmează a fi produsă. Problema enunţată mai
înainte devine:
Să se găsească valorile numerice x1,x2,...,xn care maximizează funcţia:

f  c1 x1  c2 x 2 ... cn x n
cu satisfacerea restricţiilor:
 a11 x1  a12 x 2    a1n x n  b1
a x a x   a x b
 21 1 22 2 2n n 2

 
a m1 x1  a m2 x 2    a mn x n  bm

* )
Suportul de curs al Capitolelor 3 şi 4 are la bază lucrarea: Nica, V., Ciobanu, Gh., Mustaţă Floare, Mărăcine Virginia, “Cercetări
operaţionale I - Programare liniară, Probleme de optimizare în reţele de transport şi distribuţie, Teoria jocurilor strategice”
Editura MATRIX ROM, Bucureşti 1998
32 I. PROGRAMARE LINIARA

şi a condiţiilor de nenegativitate:
x1  0 , x 2  0 ,  x n  0

Observaţie: Ipotezele de liniaritate făcute nu sunt verificate întotdeauna în practică. Raţiunea


lor este dublă:
 conduc la modele matematice în general simple;
 pe baza modelelor liniare se pot formula concluzii calitative şi legităţi economice care îşi
menţin valabilitatea - în anumite limite - şi într-un context neliniar.

2) Problema dietei a devenit o ilustrare clasică a programării liniare, fiind întâlnită în mai
toate textele de specialitate. Ea se ocupă cu hrănirea unei colectivităţi, să zicem un grup de militari,
în cel mai economic mod cu condiţia satisfacerii anumitor cerinţe de nutriţie. Mai concret, este vorba
de a prepara un aliment complex pornind de la n sortimente de hrană F1,F2,...,Fn. Un număr de
elemente sau principii nutritive N1,N2,...,Nm - proteine, glucide, grăsimi calciu,etc. sunt avute în
vedere în sensul că alimentul combinat trebuie să conţină cel puţin b1,b2,...,bm unităţi specifice
din fiecare. Să presupunem cunoscute următoarele:
 cantitatea aij din principiul nutritiv Ni conţinută într-o unitate din tipul de hrană Fj;
 preţul unitar cj al tipului de hrană Fj.

Notăm cu x1,x2,...,xn cantităţile din felurile de hrană F1,F2,...,Fn care trebuie cumpărate în
vederea elaborării dietei. Formal, x1,x2,...,xn vor trebui determinate astfel încât:
 costul f  c1 x1  c2 x 2 ... cn x n al alimentelor cumpărate să fie minim.
 amestecul să conţină principiile nutritive N1,N2,...,Nm în cantităţi cel puţin egale cu
b1,b2,...,bm, adică:
 a11 x1  a12 x 2  ...  a1n x n  b1
 a x  a x  ...  a x  b
 21 1 22 2 2n n 2

................................
a x  a x  ...  a x  b
 m1 1 m2 2 mn n m

 x1  0, x 2  0,..., x n  0
Din nou au fost tacit utilizate ipotezele de liniaritate întâlnite şi în modelul precedent.

3.1.2 Soluţii admisibile ale unei probleme de programare liniară

Considerăm o problemă de programare liniară (P) cu m restricţii egalităţi şi/sau inegalităţi


nestricte, n variabile şi cu funcţia obiectiv f. Un ansamblu de n valori numerice care satisfac
restricţiile se va numi Soluţie a programului (P). Dacă în plus sunt verificate şi condiţiile de
nenegativitate, ansamblul se numeşte Soluţie Admisibilă. O soluţie admisibilă care maximizează sau
minimizează - după caz - funcţia obiectiv se va numi Soluţie optimă. Notând cu A mulţimea
soluţiilor admisibile, problema (P) se scrie:

Să se determine x* A cu proprietatea: f(x*) = max sau min f ( x )


xA

Este posibil ca (P) să aibă soluţii dar nici una din ele să fie admisibilă: A = . Spunem în acest caz
că problema (P) este incompatibilă. Chiar dacă A  , este posibil ca funcţia obiectiv să fie
nemărginită pe A , adică să existe un şir de soluţii admisibile de-a lungul căruia funcţia obiectiv să
33

tindă spre +  sau -, după caz. în această situaţie vom spune că (P) are optim infinit. Dacă (P) are
(cel puţin) o soluţie optimă, zicem că (P) are optim finit.
Deoarece eventualele restricţii inegalităţi sunt nestricte mulţimea A este închisă (în topologia
uzuală a spaţiului Rn), adică o dată cu un şir convergent de puncte conţine şi limita acestuia.
Această proprietate este esenţială pentru existenţa unei soluţii optime a problemei (P)! Conform unui
rezultat clasic al analizei matematice, dacă A este mărginită, atunci f îşi atinge efectiv extremele pe
A, şi deci (P) are optim finit. În consecinţă, dacă (P) are optim infinit, cu siguranţă A este
nemărginită. Reciproca nu este în general adevărată: este posibil ca A să fie nemărginită şi totuşi
(P) să aibă optim finit.

3.1.3 Forma canonică a unei probleme de programare liniară

O restricţie a unei probleme (P) de programare liniară se zice concordantă dacă este o
inegalitate de tipul "" când funcţia obiectiv se maximizează şi de tipul "" când funcţia obiectiv se
minimizează. O restricţie inegalitate care nu este concordantă se va numi neconcordantă. Restricţiile
egalităţi nu fac obiectul acestei clasificări.
Spunem că o problemă de programare liniară este în formă canonică dacă toate restricţiile ei
sunt inegalităţi concordante.
În consecinţă, o problemă în formă canonică de maximizare arată astfel:

 n
  aij x j  bi i  1,..., m
j 1  Ax  b
 
 x j  0 j  1,..., n sau matricial  x  0 unde:
 (max) f  cx
n
(max) f   c j x j 
 j 1

 a11 a12  a 1n   b1   x1 
a  a 2n  b  x 
c  c1 cn 
a 22
A  b  x  
21 2 2
c2
        
     
a m1 a m2  a mn  bm  x n 

O problemă în formă canonică de minimizare se va scrie:

 n
  aij x j  bi
j 1  Ax  b
 
 xj  0   x0
 (min) f  cx
n
(min) f   c j x j 
 j 1

De exemplu, problema firmei (1.1, exemplul 1)) este o formă canonică de maximizare în timp ce
problema dietei (1.1, exemplul 2)) este o formă canonică de minimizare.
Orice problemă de programare liniară se poate pune sub o formă canonică de maximizare sau
minimizare, fără modificarea mulţimii soluţiilor admisibile, observând că:
 o egalitate se poate înlocui cu două inegalităţi de sens contrar;
 o restricţie neconcordantă devine concordantă prin înmulţire cu -1;
34 I. PROGRAMARE LINIARA

 putem schimba sensul optimizării funcţiei obiectiv, graţie formulei generale:

min f ( x )   max   f ( x ) (1.3.1)


xA xA

În consecinţă, putem face anumite raţionamente teoretice pe o formă canonică (ca de exemplu în
teoria dualităţii liniare), fără ca prin aceasta să restrângem generalitatea.

Exemplul 1.3.1
(max) f  2 x1  3x 2  4 x 3 (min)(  f )  2 x1  3x 2  4 x 3
 x  3x  5x  3  x 1  3x 2  5 x 3  3
 1 2 3 
   x 1  3x 2  5 x 3   3
 3x1  x 2  5 
 2x   3x 1  x 2  5
x 3  10
 1
  2 x1  x 3  10
 x1  0, x 2  0, x 3  0 
 x1  0, x 2  0, x 3  0
Programul (P) Forma canonică de minimizare a programului (P)

3.1.4 Forma standard a unei probleme de programare liniară

Spunem că o problemă de programare liniară este în formă standard dacă toate restricţiile ei
sunt egalităţi. Importanţa acestei forme particulare rezultă din faptul că metoda de rezolvare a
problemelor de programare liniară care va fi expusă mai departe cere ca problema să fie în această
prezentare.
În consecinţă, o problemă (P) care are şi restricţii inegalităţi va fi înlocuită - în vederea
rezolvării ei - cu o alta în care toate restricţiile sunt egalităţi. Noua problemă, numită forma
standard a problemei (P) şi notată (FSP), se construieşte astfel:
 O restricţie inegalitate din problema originală (P) de tipul "" (respectiv de tipul "") se
transformă în egalitate prin adăugarea (respectiv prin scăderea) unei variabile nenegative din
membrul său stâng. Aceste variabile se numesc variabile de abatere sau de ecart.
 Restricţiile egalităţi nu se modifică.
 Noile variabile introduse nu apar în funcţia obiectiv a problemei originale (alternativ,
spunem că ele apar cu coeficienţi nuli)

Exemplul 1.4.1
(max) f  7 x1  9 x 2  8 x 3 (max) f  7 x1  9 x 2  8 x 3
 5x  2 x  x  4 
 1 2 3  5 x1  2 x 2  x 3  x 4 4
( P )  3 x1  x 2  x 3  5  
( FSP ) 3x1  x 2  x 3 5
 x1  2 x 2  3 x 3  9  x 1  2 x 2  3x 3  x5  9
 
 x1  0, x 2  0, x 3  0  x j  0, j  1,...,5

Problema care apare în acest context este aceea de a explica modul în care se obţine soluţia
optimă a problemei (P) dacă se cunoaşte soluţia optimă a formei sale standard (FSP). Se poate arăta
uşor că între mulţimile de soluţii admisibile AP , ale problemei (P) şi AFSP, ale problemei (FSP),
există o corespondenţă bijectivă care conservă soluţiile optime. Vom arăta cum funcţionează această
corespondenţă pe exemplul precedent.
Notând-o cu , aceasta corespondenţă va asocia unei soluţii admisibile x = ( x1 , x 2 , x 3 ) a
problemei (P) vectorul:
35

( x )  ( x1 , x 2 , x 3 , 5x1  2 x 2  x 3  4, 9  x1  2 x 2  3x 3 )

care prin construcţie se dovedeşte a fi o soluţie admisibilă a problemei (FSP). Reciproc, unei soluţii
admisibile x~  ( x~1 , x~2 , x~3 , x~4 , x~5 ) a problemei (FSP) corespondenţa inversă -1 îi asociază vectorul
( x~1 , x~2 , x~3 ) care satisface în mod clar restricţiile problemei originale (P). Dacă x este soluţia optimă
a problemei (P) atunci ( x ) este soluţia optimă a problemei (FSP) şi reciproc, dacă cunoaştem
soluţia optimă x~ a problemei (FSP) ,  1 ( x~ ) reprezintă soluţia optimă a problemei (P).

În problemele concrete, variabilele de abatere au interpretări economice precise aşa că în


analiza soluţiei optime valorile lor vor fi luate în considerare laolaltă cu valorile variabilelor
originale. Astfel, în problema firmei (1.1, exemplul1)) variabilele de abatere xn+1, xn+2, ..., xn+m
definite prin:
n
xn i  bi   aij x j i  1,..., m
j 1

reprezintă cantităţi de resurse neconsumate şi prin urmare cunoaşterea valorilor lor în soluţia optimă
oferă indicaţii utile în analiza modului în care sunt utilizate resursele firmei: materii prime, capacităţi
de producţie, forţă de muncă, etc.
În problema dietei (1.1,exemplul 2)) variabilele de abatere:
n
xn i   aij x j  bi i  1,..., m
j 1

reprezintă cantităţile de principii nutritive cu care sunt depăşite nivelele minimale specificate în
reţetă.

3.1.5 Rezolvarea grafică a problemelor de programare liniară

Să considerăm problema:
(max) f  3x1  4 x 2
  3x  4 x  12
 1 2

 x 1  x 2  6
  2x  x  2
 1 2

 x1  0 , x 2  0
Identificăm x1, x2 cu abscisa, respectiv ordonata unui punct din planul raportat la un sistem ortogonal
de axe. Este cunoscut faptul că mulţimea punctelor din plan ale căror coordonate satisfac prima
restricţie coincide cu unul din semiplanele determinate de dreapta d1 de ecuaţie -3x1+4x2 = 12. Mai
precis, este vorba de semiplanul care conţine originea (0,0), deoarece coordonatele acesteia satisfac
evident prima restricţie. În mod analog, următoarele restricţii sunt verificate în semiplanele
determinate de dreapta d2 de ecuaţie x1+x2 = 6 şi respectiv d3 de ecuaţie -2x1+x2 = 2 şi care conţin
originea. În fine, condiţia x1  0 are loc în semiplanul “din dreapta” axei verticale, în timp ce condiţia
x2  0 are loc “deasupra” axei orizontale.
Soluţiile admisibile ale problemei se identifică cu punctele comune celor cinci semiplane.
Acestea formează interiorul şi frontiera poligonului OABCD din figura 1.5.1.
Funcţia obiectiv determină - pentru f variabil - o mulţime de drepte paralele care
intersectează sau nu mulţimea A. Astfel punctele situate pe dreapta 3x1+4x2=12 reprezintă diferite
combinaţii ale mărimilor x1, x2 care dau funcţiei obiectiv f aceeaşi valoare 12. Întrucât această
dreaptă taie A, rezultă că problema are soluţii admisibile - chiar o infinitate - care oferă funcţiei
obiectiv valoarea 12. Dreapta 3x1+4x2=24 nu mai taie A şi deci nici o soluţie admisibilă a problemei
36 I. PROGRAMARE LINIARA

nu este capabilă să asigure funcţiei obiectiv valoarea 24. Conchidem că maximul funcţiei f este
“undeva” între 12 şi 24. Se observă uşor că acest maxim se atinge în vârful C al frontierei lui
A. Punctul C este intersecţia dreptelor d1 şi d2 şi deci coordonatele sale, care reprezintă soluţia
optimă a problemei, se determină rezolvând sistemul format din ecuaţiile celor două drepte. Se
găseşte x1*  127 , x 2*  307 maximul lui f fiind 22 27 . Soluţia optimă satisface cu egalitate primele
două restricţii şi cu inegalitate strictă pe ceea de a treia.
x2 f=24

f= 22 27

f=12 B

d1
A
A

d2
x1
O D
d3

Figura 1.5.1

În mod asemănător se arată că dacă funcţia de maximizat ar fi fost f = - x1+x2 atunci optimul
ar fi fost atins în vârful B de coordonate x1=4/5, x2=18/5 .
Examinând acest exemplu putem trage următoarele concluzii:
1. Mulţimea A este convexă, adică o dată cu două puncte conţine şi segmentul care le
uneşte. O consecinţă intuitivă a acestei proprietăţi este că soluţia optimă, dacă există, se găseşte
“undeva” pe frontiera lui A .
2. Frontiera lui A este un contur poligonal cu un număr finit de vârfuri şi o soluţie optimă
se găseşte neapărat într-unul din ele.
Aceste concluzii, care se confirmă pe orice altă problemă în două sau trei variabile (mulţimea
soluţiilor admisibile putând fi “vizualizată“ în planul R2 sau spaţiul R3) au constituit sursa întregii
teorii a programării liniare.
37

3.2. Dualitatea în programarea liniară


În principiu, oricărei probleme de programare liniară i se asociază o alta, numită duala sa şi
în esenţă teoria dualităţii constă în studiul relaţiilor dintre cele două probleme. Fireşte, construcţia
problemei duale depinde nemijlocit de structura problemei iniţiale denumită şi problema primală.
Întotdeauna sensul optimizării în cele două probleme este diferit: dacă în primală funcţia obiectiv se
maximizează (minimizează) în duală funcţia obiectiv se minimizează (maximizează). Studiul şi
interpretarea economică a problemei duale aduc informaţii suplimentare în analiza proceselor
economice şi în fundamentarea deciziilor.

3.2.1 Reguli de construire a problemei duale

Pentru a conferi construcţiei problemei duale maxima generalitate vom slăbi condiţia de
nenegativitate impusă tuturor variabilelor, admiţând că unele din ele nu pot lua decât valori
nepozitive ( 0) în timp ce altele pot lua orice valoare reală.
Cu această observaţie duala unei probleme de programare liniară cu m restricţii şi n variabile
se construieşte după următoarele reguli:
1) Dacă în primală funcţia obiectiv se maximizează (respectiv se minimizează) în problema
duală funcţia obiectiv se minimizează (respectiv se maximizează).
2) Restricţiei de rang i , i=1,...,m din primală îi corespunde în duală o variabilă ui; dacă
restricţia primală este o inegalitate concordantă (respectiv neconcordantă, respectiv o egalitate)
variabila duală asociată este nenegativă ( 0), ( respectiv nepozitivă ( 0), respectiv fără restricţie
de semn).
3) Variabilei xj , j=1,...,n din problema primală îi corespunde în duală restricţia de rang j.
Membrul stâng al acestei restricţii este o combinaţie liniară a variabilelor duale ui realizată cu
coeficienţii variabilei xj din toate restricţiile primalei (aceştia sunt aij, i=1,...,m). Termenul său liber
este coeficientul cj al lui xj din funcţia obiectiv primală. În fine, dacă variabila primală xj este
nenegativă (respectiv nepozitivă, respectiv fără restricţie de semn) restricţia duală asociată va fi o
inegalitate concordantă (respectiv neconcordantă, respectiv o egalitate).
4) Coeficienţii funcţiei obiectiv ai problemei duale sunt termenii liberi bi ai restricţiilor
problemei primale.

Exemplul 2.1.1
Problema primală Problema duală

3x1  2 x 2  x 3  4 x 4  x5  6 u1  0 
2 x  2 x 3  5x 4  x5  9 u2 f . r . s. 
 1 
 x1  6 x 2  x 3  2 x 4 3 u3  0 
 
 x1  0 3u1  2u2  u3  8 
 x2  0 2u1  6u3  3 
 x 3 f . r . s. u1  2u2  u3  1 
 
 x 4 f . r . s. 4u1  5u2  2u3  5 
 x5  0  u1  u2 7 
 
max f  8 x1  3x 2  x 3  5x 4  7 x5 min g (u)  6u1  9u2  3u3 
38 I. PROGRAMARE LINIARA

Observaţii: 1) Problema duală are atâtea variabile (respectiv restricţii) câte restricţii
(respectiv variabile) are problema primală.
2) Regulile 1) - 4) pun în evidenţă următoarele corespondenţe de termeni prin trecere la
duală:
min  max
(restricţie) concordantă  (variabilă) nenegativă
(restricţie) neconcordantă  (variabilă) nepozitivă
(restricţie) egalitate  (variabilă) fără restricţie de semn
termen liber al unei restricţii  coeficient al funcţiei obiectiv
3) Din construcţia de mai sus rezultă următoarea concluzie:
Duala dualei este problema primală.
Spunem că dualitatea în programarea liniară are un caracter involutiv.

În consecinţă, fiind dată o problemă de programare liniară (P) şi duala sa (Q), vom vorbi
despre cuplul de probleme în dualitate (P,Q), fără a mai specifica în mod expres care din probleme
este primala şi care duala.

3.2.2. Dualele unor forme particulare de probleme de programare liniară

1) Duala unei forme canonice de maximizare este o formă canonică de minimizare şi


reciproc.
a11 x1  a12 x 2   a1n x n  b1 u1  0 
a x  a x   a x  b u2  0 
 21 1 22 2 2n n 2 
.............................................. . .......... 
 
a m1 x1  a m2 x 2   a mn x n  bm um  0 
 x1  0 a11u1  a 21u2   a m1um  c1 
 x2  0 a12 u1  a 22 u2   a m2 um  c2 
 
  .............................................
 xn  0 a1n u1  a 2 n u2   a mn um  cn 
 
max f  c1 x1  c2 x 2   cn x n min g  b1u1  b2 u2  bm um 

Cu notaţiile matriciale introduse în (1.3) la care se adaugă: u  u1 , u2 ,..., um  , cuplul format din cele
două probleme de mai sus devine:
 Ax  b uA  c
 
( P)  x  0 (Q) u  0
max f ( x )  cx min g (u)  ub
 
2) Conservarea formei de prezentare se pierde atunci când se consideră duala unei
probleme în formă standard.
 n

a x  bi i  1,..., m  ui f . r . s. i  1,..., m 
 j 1 ij j
 
 m 
 xj  0 j  1,..., n   aij ui  c j j  1,.., n 
 i 1

max f   c xn m
min g   bi ui 
 j 1
j j
i 1 
sau matricial:
39

 Ax  b uA  c
 
( P)  x  0 ( Q )u  R m ( f . r. s. )
max f ( x )  cx min g( u)  ub
 
(f.r.s. fără restricţie de semn!)
În mod analog se construieşte duala formei standard în care funcţia obiectiv se minimizează:
 Ax  b uA  c
 
( P)  x  0 ( Q )u f . r. s.
min f ( x )  cx max g( u)  ub
 

Observaţie: De reţinut este faptul că dualele a două probleme de programare liniară


echivalente sunt ele însele echivalente adică au aceeaşi mulţime de soluţii admisibile şi aceleaşi
soluţii optime.

3.2.3. Teoreme de dualitate

Cu notaţiile matriciale din (2.2) să considerăm cuplul de probleme în dualitate în formă


canonică:
(max) f ( x )  cx (min) g( u)  ub
 
( P ) Ax  b ( Q ) uA  c
 x0  u0
 

x   x1 , x 2 ,..., x n 
T
Teorema 2.3.1 Fie o soluţie admisibilă a problemei (P) şi
u  u1 , u2 ,..., um  o soluţie admisibilă a problemei (Q). Atunci:
1) f ( x )  g (u )
2) Dacă f ( x )  g (u ) atunci x este o soluţie optimă a problemei (P) iar u este o soluţie
optimă a problemei (Q).

Demonstraţie: 1) Prin ipoteză Ax  b , x  0 şi u A  c , u  0 .Deducem că uAx  ub şi


uAx  cx (nenegativitatea vectorilor x şi u este esenţială!) de unde:
f ( x )  cx  uAx  ub  g (u )
2) Dacă f ( x )  g ( u ) şi dacă x nu ar fi soluţie optimă a problemei (P) ar exista o
soluţie admisibilă x ' mai bună, adică f ( x ' )  f ( x ) .Rezultă inegalitatea f ( x ' )  g ( u ) contrară
celor demonstrate la punctul precedent. 

Clasificarea cuplurilor de probleme de programare liniară în dualitate este făcută de


următoarea teoremă:

Teorema 2.3.2 (Teorema fundamentală a dualităţii) Pentru un cuplu de probleme în


dualitate una şi numai una din următoarele situaţii este posibilă:
1) Ambele probleme au soluţii admisibile; atunci ambele au soluţii optime şi valorile optime
ale funcţiilor obiectiv coincid: f ( x )  g (u ) .
2) Numai una din probleme are soluţii admisibile, iar cealaltă nu are; atunci problema
compatibilă are optim infinit.
3) Nici una din probleme nu are soluţii admisibile.
40 I. PROGRAMARE LINIARA

Simetria teoremei 2.3.2 nu constituie totuşi un răspuns pentru reciproca teoremei 2.3.1
Specificăm acest lucru în mod expres pentru că în programarea neliniară el nu are loc.

Teorema 2.3.3 Dacă una din problemele unui cuplu de probleme în dualitate are soluţie
optimă atunci şi cealaltă are şi valorile optime ale funcţiilor obiectiv coincid.

Nu dăm demonstraţia teoremei 2.3.2 deoarece pregătirile necesare depăşesc cadrul impus acestui
curs. Vom demonstra însă teorema 2.3.3 după ce vom prezenta metoda generală de rezolvare a
problemelor de programare liniară.

Teorema 2.3.4 (Teorema ecarturilor complementare - TEC) Fie (P,Q) un cuplu de


probleme canonice în dualitate:
 Ax  b uA  c
 
( P) x  0 Qu  0
max f ( x)  cx min g (u)  ub
 
Un cuplu de soluţii admisibile ( x , u ) este un cuplu de soluţii optime dacă şi numai dacă:
(uA  c) x  0
 (2.3.1)
u (b  Ax )  0
Demonstraţie: Să presupunem relaţiile (2.3.1) verificate de cuplul ( x , u ):
uAx  cx  0 
  cx  ub  ( x , u ) este un cuplu de soluţii optime în virtutea teoremei
ub  uAx  0
2.3.1.Reciproc, să presupunem că ( x , u ) constituie un cuplu de soluţii optime. Atunci cx  u b ,în
virtutea teoremei fundamentale a dualităţii şi prin urmare:
(uA  c) x  u (b  Ax )  0
Deoarece x , u sunt soluţii admisibile avem: (uA  c) x  0, u (b  Ax )  0 şi deci
(uA  c) x  0, u (b  Ax )  0 relaţii care arată că x , u verifică (2.3.1).

În notaţiile secţiunii (2.2) relaţiile matriciale (2.3.1) se pot scrie:


   aij ui  c j  x j  0
n m

j 1 i 1

m  n 
 ui  bi   aij x j   0
i 1  j 1 
Aceste relaţii sunt echivalente cu:
  m
a u  c j  x j  0 j  1,..., n
 i 1 ij i 
 n 
ui  bi   aij x j   0 i  1,..., m
 j 1 
Verificarea acestor egalităţi de către un cuplu de soluţii admisibile x   x1 , x 2 ,..., x n  şi
T

u  u1 , u2 , , um  reprezintă deci o condiţie necesară şi suficientă de optimalitate.

Pe lângă formularea precedentă, teorema 2.3.4. mai are următoarea interpretare:

Cuplul ( x , u ) de soluţii admisibile este un cuplu de soluţii optime dacă şi numai dacă verifică
seturile de implicaţii:
41

 x 0  
m
  u 0 n

 a u c   aij x j  bi
j
i 1
ij i j  i
j 1
n m
  a ij ui  bi  ui  0  aij ui  c j  xj  0
 j 1 i 1
Observaţie. Deşi prezentată pe un cuplu de probleme canonice, teorema 2.3.4. este valabilă
pentru orice cuplu de probleme în dualitate. Astfel pentru cuplul:
max f  cx min g  ub
 
 Ax  b  uA  c
 x0  u f . r . s.
 
ele se reduc la: (uA  c) x  0    aij ui  c j  u j  0
m
j  1,..., n.
 i 1 
Şi mai concret, considerăm cuplul din:

Exemplul 2.3.1
min f  5x1  2 x 2  x 3  max g  6u1  12u2  4u3
 
6 x1  2 x 2  3x 3  6  6u1  u2  2u3  5
( P ) x1  3x 2  2 x 3  12 ( Q ) 2u1  3u2  u3  2
2 x  x  4 x  4  3u  2u  4u  1
 1 2 3
 1 2 3

 x1 , x 2 , x 3  0 u1  0, u2 f . r. s., u3  0
Conform TEC, condiţia necesară şi suficientă pentru ca două soluţii admisibile ale celor două
probleme:
x  ( x1 , x 2 , x 3 ) T şi u  ( u1 , u2 , u3 )
să fie optime este satisfacerea relaţiilor:
( 5  6u1  u2  2u3 ) x1  0 (1)
( 2  2u1  3u2  u3 ) x 2  0 ( 2)
( 1  3u1  2u2  4u3 ) x 3  0 (3)
( 6  6 x1  2 x 2  3x 3 )u1  0 ( 4)
( 2 x1  x 2  4 x 3  4 ) u 3  0 (5)
O consecinţă importantă a TEC este faptul că rezolvarea unei probleme de programare liniară
este echivalentă cu rezolvarea dualei sale în sensul că dacă se cunoaşte soluţia optimă a uneia din ele
putem deduce relativ simplu soluţia optimă a celeilalte. Pentru ilustrare vom determina soluţia
optimă a problemei (P) din exemplul precedent ştiind că duala (Q) are soluţia optimă u* de
componente: u1*  0 , u2*   149 , u3*  141 .
Înlocuind u* în (1) - (5) se constată că relaţiile (2),(3),(4) sunt satisfăcute de orice valori
numerice acordate variabilelor x1 , x2 , x3. În schimb din (1) şi (5) obţinem relaţiile: x1=0 şi 2x1 - x2 +
4x3 - 4 = 0 care împreună cu restricţia egalitate din (P) constituie un sistem liniar:
 x1  0

2 x1  x 2  4 x 3  4
 x  3x  2 x  12
 1 2 3

Rezolvând sistemul, obţinem soluţia optimă a problemei (P):


x1*  0 , x 2*  207 , x 3*  127 f max  f ( x * )   527  g (u * )  g min
Echivalenţa amintită mai înainte este folositoare în rezolvarea efectivă a problemelor de
programare liniară ştiut fiind că efortul de calcul este relativ mai mic dacă numărul restricţiilor este
42 I. PROGRAMARE LINIARA

mai mic. în consecinţă, pentru o problemă cu multe restricţii şi un număr restrâns de variabile, va fi
mai comod să rezolvăm duala sa.

3.2.4. Interpretarea economică a dualităţii

Reluăm problema firmei din secţiunea 1.1 exemplul 1). Considerăm o întreprindere care
produce bunurile G1,G2,...,Gm la preţurile c1,c2,...,cn folosind pentru aceasta mai multe resurse
R1,R2,...,Rm disponibile în cantităţile limitate b1,b2,...,bm. Consumurile specifice de resurse pentru
unul sau altul din bunurile realizabile de către firmă sunt specificate în matricea:
 a11 a12  a1n 
 a 21 a 22  a 2 n 
A 
    
a m1 a m2  a mn 
Obiectivul firmei este maximizarea veniturilor rezultate din vânzarea bunurilor produse. în
ipotezele de liniaritate uzuale, programul liniar pentru determinarea combinaţiei optime de bunuri
este:
(max) f ( x )  c1 x1  c2 x 2   cn x n
 a x  a x   a x  b
 11 1 12 2 1n n 1

 a 21 x1  a 22 x 2   a 2 n x n  b2
(P) 
 ............................................
 a m1 x1  a m2 x 2   a mn x n  bm

 x1  0, x 2  0, , x n  0
Să notăm cu x*  ( x1 , x 2 ,..., x n ) combinaţia de bunuri care aduce firmei venitul maxim:
* * *

V *  max f  f ( x*)  c1 x1*  c2 x 2* ... cn x n*


Dacă admitem că singura posibilitate a firmei de a obţine venitul V* constă în transformarea
resurselor disponibile în bunuri conform programului x* şi vânzarea acestora este natural să ne
întrebăm care este contribuţia fiecărei resurse în parte la formarea acestui venit.
La baza discuţiei vom pune aceleaşi ipoteze de liniaritate care ne-au condus la modelul
matematic (P) şi anume:
 contribuţia unei resurse la venitul maxim al firmei este - până la o anumită limită - direct
proporţională cu cantitatea disponibilă;
 nivelul contribuţiei unei resurse nu este condiţionat de celelalte resurse , ci numai de
cantitatea în care ea se află disponibilă.

Să notăm atunci cu u1* , u2* ,..., um* aportul unei unităţi din resursa R1, din resursa R2, ş.a.m.d. la
formarea venitului maxim V*. În virtutea ipotezelor de liniaritate amintite putem scrie:

V *  b1u1*  b2 u2* ...bm um* (2.4.1)


Producerea unei unităţi din bunul Gj necesită a1j unităţi din resursa R1, a2j unităţi din resursa
R2, ....., amj unităţi din resursa Rm.
Partea din venitul maxim V* corespunzătoare acestor cantităţi este:

a1 j u1*  a 2 j u2* ...a mj um*

Această mărime trebuie să acopere preţul pe care firma îl încasează prin vânzare de vreme ce ea
nu are alte resurse de formare a venitului în afara transformării resurselor în bunuri. Se conchide
că sistemul u*  (u1* , u2* ,..., um* ) trebuie să satisfacă relaţiile:
43

a11 u1*  a 21 u2* ... a m1 um*  c1



a12 u1  a 22 u2 ... a m2 um  c 2
* * *

 (2.4.2)
 ..........................
a u *  a u * ... a u *  c
 1n 1 2n 2 mn m n

şi de asemenea condiţiile de nenegativitate:


u1*  0, u2*  0,..., um*  0 (2.4.3)
Sunt suficiente relaţiile (2.4.1) - (2.4.3) pentru determinarea efectivă a valorilor u1* , u2* ,..., um* ? Teoria
dualităţii dă un răspuns afirmativ pe baza următoarelor observaţii:
1) Relaţiile (2.4.2) şi (2.4.3) arată că u*  (u1* , u2* ,..., um* ) constituie o soluţie admisibilă a
dualei (Q) asociată problemei (P):
 (min) g( x )  b1 u1  b2 u2 ... bm um
 a u  a u ... a u  c
 11 1 21 2 m1 m 1

 a12 u1  a 22 u2 ... a m2 um  c 2
( Q )
. ..................................
 a1n u1  a 2 n un ... a mn um  c n

 u1  0, u2  0,..., um  0
2) Relaţia (2.4.1) rescrisă în forma f(x*) = g(u*), coroborată cu teorema de dualitate 2.3.1, ne
arată că u* este chiar soluţia optimă a problemei duale Q.

Astfel, am găsit un conţinut economic coerent variabilelor duale u1, u2,..., um din problema duală
(Q). Ele reprezintă nişte valori băneşti asociate la câte o unitate din fiecare resursă disponibilă a
firmei şi exprimă aportul unitar al fiecărei resurse la formarea venitului maxim. Strict dimensional,
variabilele u1, u2,..., um au semnificaţia unor preţuri ataşate resurselor. Totuşi aceste preţuri nu au
nimic comun cu valoarea intrinsecă a resurselor ci - aşa cum a rezultat din interpretarea dată -
reflectă numai măsura participării lor la formarea venitului maxim. Tocmai pentru a preveni
identificarea lor cu preţurile reale ale resurselor, în literatura de specialitate, aceste entităţi au fost
denumite preţuri umbră (shadow prices). A rezultat de asemenea şi o modalitate de calcul a acestor
mărimi: se rezolvă problema duală (Q).

Teoria dualităţii arată că venitul maxim V* al firmei - privit ca funcţie de cantităţile


disponibile de resurse - depinde liniar de aceste disponibile prin intermediul preţurilor duale
optime - vezi relaţia (2.4.1)
În consecinţă :
V *
 ui* i  1,..., m (2.4.4)
 bi
Prin urmare preţurile duale optime ne arată cu cât se modifică venitul maxim V* al firmei la
o variaţie cu o unitate a disponibilului unei resurse.

Este important de reţinut faptul că aceste concluzii rămân valabile numai în situaţia în care
componentele vectorului b variază între anumite limite! În cazul general, atunci când se iau în
considerare toate valorile posibile ale lui b, adică b  Rm , funcţia V*(b) este subaditivă şi pozitiv
omogenă. Aceasta înseamnă:
V * ( b  b' )  V * ( b)  V * ( b' ) (  ) b, b'  Rm
V * ( tb)  tV * ( b) (  ) t  0 , b  Rm
44 I. PROGRAMARE LINIARA

Reamintim că în baza TEC soluţiile optime x*, u* al problemelor (P) şi (Q) satisfac relaţiile:
x *j  0  a1 j u1*  a 2 j u2* ... a mj um*  c j ( 2.4.5)
ai1 x1*  ai 2 x 2* ... ain x n*  bi  ui*  0 ( 2.4.5' )
ui*  0  ai1 x1*  ai 2 x 2* ... ain x n*  bi ( 2.4.6)
a1 j u1*  a 2 j u2* ... a mj um*  c j  x *j  0 ( 2.4.6' )

 (2.4.5) arată că dacă bunul Gj intră în combinaţia optimă atunci preţul său este egal cu partea din
venitul maxim al firmei corespunzătoare resurselor încorporate într-o unitate din el.
 (2.4.5') arată că dacă o resursă nu este prevăzută a se consuma în întregime - spunem că este
excedentară - preţul său dual este 0. Această concluzie reprezintă versiunea liniară a
legii cererii şi ofertei - preţul unei mărfi pentru care oferta este mai mare decât cererea
trebuie să scadă.
 (2.4.6) arată că o resursă cu preţ dual semnificativ trebuie consumată în întregime; creşterea cu o
unitate a disponibilului aducând o creştere a venitului maxim conform (2.4.4).
 (2.4.6') arată că dacă pentru un bun valoarea resurselor încorporate într-o unitate - valoare
măsurată în preţurile duale optime - depăşeşte preţul său atunci acesta nu intră în
m
combinaţia optimală. Diferenţa  aij u *j  c j reprezintă pierderea potenţială de venit pe
i 1

care firma o va înregistra dacă totuşi decide realizarea unei unităţi din bunul j.
Condiţiile (2.4.5), (2.4.5'), (2.4.6), (2.4.6') date de TEC se mai numesc şi condiţii de
echilibru de unde şi numele de preţuri de echilibru dat uneori preţurilor duale optime.

3.3. Structura mulţimii soluţiilor admisibile ale unei probleme de


programare liniară

În această secţiune ne vom opri asupra principalelor proprietăţi geometrice pe care le posedă
mulţimea soluţiilor unui sistem de ecuaţii şi inecuaţii liniare. Aceste proprietăţi sunt determinante în
înţelegerea mecanismului metodei simplex de rezolvare a programelor liniare.
Parcurgerea acestei secţiuni necesită câteva rudimente de calcul matricial şi algebră liniară.
Vectorii cu care se va opera vor fi subînţeleşi, după caz, fie linii fie coloane. De regulă, scrierea în
text a unui vector se va face în linie ca de exemplu v  ( a1 , a 2 ,..., a m ) ; dacă este necesar ca v să fie
considerat vector coloană se va folosi operatorul de transpunere: v  ( a1 , a 2 ,..., a m ) T.

3.3.1 Câteva elemente de analiză convexă liniară

Fiind date două puncte x , yR n mulţimea:


 x , y  z  (1   ) x   y , 0    1
se numeşte segment (închis) cu extremităţile x şi y. Se ştie că în R2 sau în R3 acest concept se
suprapune peste conceptul geometric uzual. Pentru   0 , respectiv   1 , avem z  x , respectiv
z  y . Punctele z  (1   ) x  y corespunzătoare valorilor  ( 0 ,1 ) se numesc puncte

interioare ale segmentului  x , y . Pentru  


1 1
găsim z  ( x  y )  mijlocul segmentului
2 2
 x , y .
O mulţime X  R n se zice convexă dacă o dată cu două puncte conţine şi segmentul care le
uneşte.
45

Formal :
X convexă  () x , y  X ,()  0,1 , z  (1   ) x   y  X

Se verifică imediat că intersecţia mai multor mulţimi convexe este o mulţime convexă.
Fie a  ( a1 , a 2 ,..., a n ) un vector nenul şi b un scalar. Este uşor de văzut că mulţimea:

S  x  ( x1 , x 2 ,..., x n ) T ax  b  a1 x1  a 2 x 2 ...a n x n  b
este convexă. Ea se numeşte semispaţiu, în timp ce mulţimea:


H  x  ( x1 , x 2 ,..., x n ) T ax  b  a1 x1  a 2 x 2 ...a n x n  b 
se numeşte hiperplan. Este clar că şi H este o mulţime convexă ca intersecţie a semispaţiului S de
mai sus, cu semispaţiul:

S '  x  R n ax  b  ( a ) x  b  a1 x1  a 2 x 2 ...a n x n  b 
O intersecţie finită de semispaţii se numeşte mulţime poliedrală. Evident, o mulţime
poliedrală este convexă, reciproca nefiind în general adevărată.
În figura 3.1.1 sunt prezentate câteva mulţimi convexe şi neconvexe în plan. Este clar că
mulţimile a) şi b) nu sunt convexe. Discul c) este o mulţime convexă dar nu este poliedrală, fiind în
fapt intersecţia infinită a tuturor semispaţiilor care conţin discul şi sunt mărginite de tangentele la
circumferinţă. Poligonul convex d) este intersecţia a 4 semispaţii aşa cum se arată în fig.3.1.2

a) poligon concav b) coroană circulară c) disc

d) poligon convex e) mulţime poliedrală nemărginită

Notă: Toate mulţimile specificate sunt presupuse, închise adică îşi conţin frontierele.

Figura 3.1.1

S3
S2
S1

S4

Figura 3.1.2
46 I. PROGRAMARE LINIARA

Din cele de mai sus rezultă că orice mulţime poliedrală în R n se identifică cu mulţimea
soluţiilor unui sistem de ecuaţii şi/sau inecuaţii liniare în n variabile. În particular:

Mulţimea AP a soluţiilor admisibile ale unui program liniar (P) este o mulţime convexă,
poliedrală şi închisă. Frontiera sa se compune din toate punctele ale căror coordonate satisfac cu
egalitate cel puţin una din restricţii.

Se numeşte vârf al unei mulţimi convexe X  R n un punct v  X cu proprietatea că nu


există un segment [x,y]  X care să conţină pe v ca punct interior. În R 2 sau R 3 regăsim conceptul
geometric uzual.
O mulţime poliedrală are întotdeauna un număr finit de vârfuri (posibil nici unul); de
exemplu, poligonul d) din fig. 3.1.1 are patru vârfuri în timp ce un semispaţiu nu are vârfuri. Discul
c) are o infinitate de vârfuri: orice punct de pe circumferinţă are această calitate.
Mulţimile d) şi e) din fig.3.1.1 sunt amândouă poliedrale dar e) este nemărginită. Pentru a
caracteriza această proprietate avem nevoie de un nou concept, cel de rază extremă. Pentru a nu
depăşi cadrul orar al cursului vom lăsa la latitudinea cititorului aprofundarea conceptului utilizând ca
suport bibliografic www.asecib.ase.ro – Cursuri on-line – 9. Nica V. şi colectiv, Cercetări
Operaţionale I. Vom caracteriza însă în detaliu această situaţie în cadrul metodei Simplex de
rezolvare a programelor liniare (vezi secţiunea 4 a Cap. 1).

3.3.2 Teorema centrală a programării liniare

Să considerăm acum un program liniar (P) în care funcţia obiectiv se maximizează şi să ne


situăm în cazul în care programul (P) este compatibil adică mulţimea soluţiilor sale admisibile AP
este nevidă. Am văzut că AP este o mulţime poliedrală şi convexă având un număr finit de vârfuri
v 1 , v 2 ,....., v p . Aşa cum va rezulta din secţiunea 4.1, AP are cel puţin un vârf, adică p  1 . Vom
enunţa acum teorema centrală a programării liniare.

TEOREMA*). Dacă programul (P) are optim finit, atunci o soluţie optimă se găseşte într-
unul din vârfurile mulţimii soluţiilor admisibile AP .
Importanţa acestei teoreme este covârşitoare: ea reduce problema găsirii unei soluţii optime
x * din mulţimea, în general infinită, AP a tuturor soluţiilor admisibile ale programului (P), la
identificarea acestei soluţii în mulţimea finită a vârfurilor lui AP.

Recapitulând modul în care diferitele proprietăţi discutate au fost implicate în obţinerea


acestui rezultat fundamental să reţinem că:
 Convexitatea mulţimii soluţiilor admisibile AP situează soluţiile optime, dacă acestea
există, pe frontiera lui AP;
 Deoarece AP este poliedrală, iar funcţia obiectiv este liniară, cel puţin una din soluţiile
optime este un vârf al lui AP.

Teorema furnizează următorul procedeu "naiv" de rezolvare a unui program liniar (P):
 se "generează" lista (finită) a vârfurilor mulţimii AP;

*)
NOTĂ: Pentru demonstraţiile Teoremelor şi Lemelor din acest capitol, vezi www.asecib.ase.ro – Cursuri on-line – 9.
Nica V. şi colectiv, Cercetări Operaţionale I.
47

 prin înlocuire succesivă în funcţia obiectiv se reţine vârful care oferă acesteia valoarea
maximă (sau minimă, după caz).

Procedeul ridică la rândul său următoarele probleme principiale:


1) Cum recunoaştem compatibilitatea programului (P) ?
2) Cum "calculăm" un vârf al mulţimii AP sau mai corect spus cum se caracterizează
"algebric" un vârf ?
3) Pentru obţinerea soluţiei optime este necesar să generăm toate vârfurile mulţimii AP?
întrebarea este serioasă deoarece şi pentru programe liniare de dimensiuni reduse (adică cu un număr
relativ mic de restricţii şi variabile) numărul vârfurilor este foarte mare.
4) Chiar dacă reuşim, prin enumerarea explicită a tuturor vârfurilor, să găsim pe acela care
maximizează funcţia obiectiv, aceasta nu înseamnă obligatoriu că am rezolvat programul dat! Este
posibil ca programul respectiv să aibă optim infinit! Cum se recunoaşte acest fapt?
Vom răspunde progresiv la toate chestiunile menţionate în secţiunile următoare.

3.3.3 Corespondenţa AP ~ AFSP

Considerăm o problemă de programare liniară (P) care conţine cel puţin o restricţie
inegalitate şi fie (FSP) forma sa standard (vezi secţiunea 1.4) Pentru simplificarea notaţiilor, vom
presupune că (P) este în formă canonică de maximizare:
max f  cx

( P)  Ax  b
 x0

unde:
 a11 a12  a1n   b1   x1 
a a 22  a 2 n   b2  x 
A  21  b   x 
2

        (3.3.1)
     
a m1 a m2  a mn  bm  xn 
c  c1 c2  cn 

ştim din secţiunea 1.3 că orice program liniar poate fi scris în această formă. Forma standard a
programului (P) va fi:
 y1 
max f  cx y 

( FSP ) Ax  y  b în care: y    este vectorul variabilelor de abatere.
2

x  0 , y  0  
  
 ym 
Între mulţimile de soluţii admisibile AP  Rn şi AFSP  Rn+m există o corespondenţă bijectivă (x)
= (x, y), unde y = b - Ax, a cărei inversă este proiecţia  -1(x,y) = x. Am remarcat deja în secţiunea
1.4 că prin corespondenţa , soluţiile optime ale celor două probleme se corespund. în fapt,  are
următoarea proprietate mai generală.

Teorema 3.3.1 Dacă x este un vârf al mulţimii AP atunci (x) = (x, y) cu y = b - Ax este un
vârf al mulţimii AFSP . Reciproc, dacă (x, y) este un vârf al mulţimii AFSP atunci -1(x,y) = x este un
vârf al mulţimii AP .
48 I. PROGRAMARE LINIARA

În baza acestei teoreme precum şi a teoremei centrale a programării liniare (secţiunea 3.2), pentru a
rezolva problema (P) este suficient să căutăm soluţia optimă a formei sale standard (FSP) printre
vârfurile mulţimii AFSP .

Vom vedea în secţiunea următoare cum se caracterizează “algebric” vârfurile mulţimii soluţiilor
admisibile ale unui program liniar în formă standard. Tot acolo vom arăta că dacă un program (P)
este compatibil atunci AP are cel puţin un vârf şi în orice caz un număr finit de asemenea elemente.
Pe baza acestor rezultate, vom putea descrie în paragraful 4 o metodă efectivă de rezolvare a unei
probleme de programare liniară.

3.3.4. Soluţii de bază ale unui program liniar

Să considerăm acum un program liniar (P) în formă standard:


max f  cx

( P ) Ax  b
 x0

în care masivele A,b,c,x au semnificaţiile din (3.3.1). Vom pune în evidenţă coloanele matricii A:
A = [A1 , A2 , … , An ]

Definiţie: Soluţia x  ( x1 , x 2 ,..., x n )T a problemei în formă standard (P), nu neapărat


admisibilă, se numeşte soluţie de bază dacă mulţimea coloanelor Ai corespunzătoare componentelor
x i  0 este liniar independentă.

Fie I( x ) mulţimea indicilor i  {1, 2,…, m} cu proprietatea că x i  0.

Lema 1 Dacă x şi x  sunt soluţii de bază ale programului (P) şi I( x  )  I( x ) atunci x


=  (şi deci I( x ) = I( x  )).
x

Demonstraţie: Este clar că x i = x i = 0 pentru indicii i I( x ). Atunci egalităţile:


 x i A i   x iA i  b
i I ( x ) i I ( x  )

implică:
 ( x i  x i ) A i  0
i I ( x )

de unde rezultă x i = x i pentru toţi i I( x ), deoarece prin ipoteză coloanele Ai , i I( x ) sunt


liniar independente. 

Lema 2 Fie x  ( x1 , x 2 ,..., x n )T o soluţie admisibilă a problemei (P) care nu este soluţie de
bază. Atunci există un vector y Rn şi un interval [  ,  ]  Rn  {- , +} astfel încât:
1) Ay = 0;
2) [  ,  ] conţine pe 0 şi nu se reduce la acest punct;  şi  nu sunt simultan infinite;
3) pentru orice  [  ,  ] vectorul x() = x + y este o soluţie admisibilă a problemei (P);
4) Dacă de exemplu,  este finit şi x  = x(  ) atunci I( x  )  I( x ) dar I( x  )  I( x ) - 1
adică x  are mai puţine componente nenule decât x .
49

Demonstraţie: Din ipoteză rezultă că mulţimea coloanelor Ai , i I( x ) este liniar independentă.


Există prin urmare scalarii yi , i I( x ) nu toţi nuli astfel încât:
 yi Ai  0
iI ( x )

Punând yi = 0 pentru i I( x ) obţinem un vector y = (y1 ,y2 ,…,yn)  Rn cu proprietatea că:


n
 yi Ai  0  Ay  0
i 1
Afirmaţia 1) este demonstrată.
Pentru orice   R vectorul x() = x + y este o soluţie a problemei (P) deoarece Ax() =
A x + Ay =b.
Impunând condiţia de admisibilitate x() 0 obţinem pentru  intervalul de valori permise [  ,
 ] în care:
  xi    xi 
 max  y i   min  y i 
 = iI ( x ), yi 0  = iI ( x ), yi 0
  daca toti y  0   daca toti y  0
 i  i
Avem  < 0 <  şi deoarece y  0, cel puţin una din extremităţile  ,  este finită. Astfel şi
afirmaţiile 2) , 3) sunt probate.
Să presupunem, în final că  este finit. Atunci va exista un indice r I( x ) astfel că: yr <
x
0 şi  = - r y .Dacă x  = x(  ) este clar că I( x  )  I( x ) şi cum x r  x r   y r  0 iar
r
x r  0 urmează că I( x  ) < I( x ) şi ultima afirmaţie este dovedită.

Teorema 3.4.1 O soluţie admisibilă x  ( x1 , x 2 ,..., x n )T a problemei (P) este un vârf al


mulţimii AP dacă şi numai dacă x este o soluţie de bază.

Demonstraţie: Să presupunem că x este vârf dar nu este soluţie de bază. Conform lemei 2 există
y  Rn cu Ay = 0 şi intervalul [  ,  ] care conţine pe 0 şi nu se reduce la acesta, astfel încât x()
= x + y să fie o soluţie a programului (P) oricare ar fi   [  ,  ]. Alegem  > 0 suficient de
mic astfel încât [- ,+ ]  [  ,  ] şi punem: x1 = x -y, x2 = x +y . Atunci x1,x2 AP , x1 x2 şi
x  12 ( x 1  x 2 ) în contradicţie cu ipoteza că x este vârf al mulţimii AP .
Pentru reciprocă să presupunem că x este o soluţie de bază fără a fi vârf. Atunci există
x1,x2 AP, x1 x2 şi  (0,1) astfel încât x = (1- )x1 + x2. Pentru iI( x ) avem
(1   ) x 1i  x 2i  0 şi cum x 1i  0 , x 2i  0 rezultă x 1i  x 2i  0 . în consecinţă, I(x1)  I( x ),
I(x2)  I( x ) şi în virtutea lemei 1 rezultă x1 = x2 = x , în contradicţie cu ipoteza făcută. 

Teorema 3.4.2 Dacă programul în formă standard (P) este compatibil atunci mulţimea
soluţiilor sale admisibile AP are cel puţin o soluţie de bază, deci un vârf.

Demonstraţie Fie x = ( x1 , x 2 ,..., x n ) T o soluţie admisibilă a problemei (P). Vom proceda prin
inducţie după numărul k al componentelor x i  0 .Dacă k = 0 atunci x = (0,0,...,0) este o soluţie
de bază întrucât o mulţime vidă de vectori este, prin convenţie,liniar independentă. Dacă k > 0
există două situaţii de examinat:
1) Coloanele Ai, i  I( x ) sunt liniar independente. Atunci x este o soluţie de bază.

2) Coloanele Ai, i  I( x ) sunt liniar dependente. Conform lemei 2 va exista o soluţie


50 I. PROGRAMARE LINIARA

admisibilă x  cu I( x  )  I( x ) dar cu mai puţine componente nenule decât x . Repetând


raţionamentul, este clar că într-un număr finit de paşi se ajunge la situaţia 1) adică la o soluţie de
bază. 

Consecinţă Mulţimea AP a soluţiilor admisibile ale unui program liniar compatibil are cel
puţin un vârf.

Demonstraţie: Să presupunem că (P) nu este în formă standard, altminteri avem teorema 3.4.2.
Fie (FSP) forma standard a programului (P). Deoarece avem corespondenţa bijectivă : AP  AFSP
deducem că AFSP   pentru că prin ipoteză AP  . Prin teorema 3.4.2 mulţimea AFSP are cel puţin
un vârf; acesta, prin proiecţia -1 va fi un vârf al mulţimii AP , graţie teoremei 3.3.1. 

Având în vedere caracterizarea algebrică a vârfurilor dată în teorema 3.4.1, teorema centrală
a programării liniare poate fi formulată şi în următorii termeni.

Teorema 3.4.3 Dacă un program liniar în formă standard are optim finit, cel puţin una din
soluţiile sale optime este o soluţie de bază.

Mai rămâne de arătat că mulţimea soluţiilor admisibile ale unui program liniar are un număr
finit de vârfuri. În virtutea teoremelor 3.3.1 şi 3.4.1, aceasta revine la a arăta că un program liniar în
formă standard (P) are un număr finit de soluţii admisibile de bază. Faptul rezultă nemijlocit din
aceea că numărul sistemelor liniar independente ce pot fi extrase dintr-o mulţime finită de vectori
este finit. Vom preciza acest lucru sub forma unei teoreme în secţiunea următoare, în care vom
introduce un concept uşor diferit de cel de soluţie de bază, acela de soluţie asociată unei baze a
programului (P). Noul concept are avantajul de a fi mai uşor de manipulat în practică.

3.3.5. Baze ale unui program liniar în formă standard. Soluţia asociată unei baze

În notaţiile secţiunii precedente facem ipoteza:


rangA = m < n (3.5.1)
Ipoteza ne asigură că ecuaţiile ce compun sistemul liniar Ax = b al restricţiilor sunt independente şi
că acest sistem are o infinitate de soluţii. Să notăm că ipoteza nu implică în mod necesar şi existenţa
soluţiilor admisibile (adică cu toate componentele nenegative) pentru sistemul considerat. După cum
vom vedea în secţiunea 4.6 ipoteza făcută nu este deloc restrictivă.

Deoarece rangA = m, în matricea A va exista cel puţin un grup de m coloane liniar


independente, constituind deci o bază a spaţiului Rm. Un asemenea grup se va numi bază a
n!
programului (P) şi numărul acestora este finit , nedepăşind Cnm  .
m !( n  m )!
Fie B o bază a programului (P), I mulţimea indicilor coloanelor din B şi J mulţimea indicilor
coloanelor din A care nu sunt în B. Renumerotând convenabil variabilele programului vom scrie
matricea A în forma:
A = [B , S] cu B = [Ai]i  I , S = [Aj]j  J

Partiţionăm corespunzător vectorul (coloană) x al variabilelor:


x B 
x S
 
x
cu x B   x i  iI , x S  x j  j J

ca şi vectorul (linie) al coeficienţilor funcţiei obiectiv:


51

c = [cB,cS] cu cB = [ci]i  I , cS = [cj]j  J

în raport cu baza B aleasă, variabilele xi , i  I se vor numi variabile bazice, iar toate celelalte
nebazice sau secundare.
Scriem sistemul Ax = b în forma:
x B 
 B, S  S   b  Bx B  Sx S  b
x 
Deoarece B este o bază a spaţiului R , B (ca matrice!) este nesingulară deci inversabilă. Înmulţind la
m

stânga cu B-1 obţinem:


x B  Sx S  b cu S  B 1 S  a ij   iI , j J
, b  B 1 b   bi  iI (3.5.2)

Va fi util să punem în evidenţă coloanele matricii S:

S  B 1 A j  jJ 
 B 1 A j  jJ  
 Aj jJ
cu
A j  B 1 A j  a ij   iI
(3.5.3)

Utilizăm (3.5.2) pentru a elimina din expresia funcţiei obiectiv variabilele bazice:
x B 
f   c , c  S   c B x B  c S x S  c B ( b  Sx S )  c S x S 
B S

x 
 c b  ( c S  c S )x S  f  c S x S
B B
(3.5.4)

unde:
f  c B b (  c B B 1 b )   c i bi (3.5.5)
iI

şi:
c S  c B S  c S (  c B B 1 S  c S )  c j   j J

în care:
c j  c B A j  c j (  c B B 1 A j  c j )   c i a ij  c j (3.5.6)
iI

Astfel, în raport cu baza B, programul (P) poate fi adus la următoarea formă echivalentă, conform
(3.5.2) şi (3.5.4):
max f  f   c j x j
max f  f  c S x S  j J
 
( PB ) x  Sx  b
B S
 x i   a ij x j  bi i  I (3.5.7)
  j J

 x  0 ,x  0
B S
x i  0 , i  I ; x j  0 , j  J

(PB) se numeşte forma explicită a programului (P) în raport cu baza B. Comparând (PB) cu (P)
constatăm că efectul înmulţirii cu B -1 a sistemului Ax = b este explicitarea variabilelor bazice xi , i
 I în funcţie de cele nebazice xj , j  J.
Luând în (PB):
xS = 0  xj = 0 , j  J (3.5.8)
obţinem:
52 I. PROGRAMARE LINIARA

xB  b  x i  bi i  I (3.5.9)
Vectorul:
b   x B
x  (3.5.10)
0   x
S

este evident o soluţie a programului (P), numită soluţia asociată bazei B. Vom spune că B este o
bază admisibilă dacă soluţia asociată (3.5.10) este admisibilă, ceea ce revine la a spune că
bi  0 , i  I .

Prin construcţie, soluţia asociată unei baze a programului (P) este o soluţie de bază în sensul
definiţiei din secţiunea precedentă. Reciproca nu este în general adevărată. Astfel, dacă x =
( x1 , x 2 ,..., x n ) T este o soluţie de bază a programului (P), numărul componentelor nenule este  m.
Dacă acest număr este exact m atunci x este soluţia asociată bazei formate din coloanele matricii A
corespunzătoare celor m componente nenule. Spunem în acest caz că x este o soluţie de bază
nedegenerată. Dacă numărul componentelor nenule este < m, coloanele corespunzătoare acestor
componente pot fi completate până la o bază în mai multe moduri, astfel că x se asociază la mai
multe baze! Dacă se întâmplă aşa spunem că x este o soluţie degenerată.

Deoarece (P) are un număr finit de baze, el va avea şi un număr finit de soluţii asociate
acestor baze şi de aici un număr finit de soluţii de bază.

În baza relaţiilor (3.5.8), (3.5.9) constanta f din (3.5.5) reprezintă valoarea funcţiei obiectiv
a programului (P) în soluţia (3.5.10) asociată bazei B. Componentele c j , j  J (definite în (3.5.6))
ale vectorului c S din (3.5.4) vor juca un rol esenţial în caracterizarea optimalităţii unei soluţii
admisibile de bază. Ele se numesc costuri reduse (notate j în alte materiale de specialitate) şi sunt
întotdeauna asociate variabilelor nebazice. Coeficienţii numerici ai formei explicite (3.5.7) se trec
într-un tabel (TB) al cărui format este indicat în tabelul 3.5.1. Tabelul (TB) se numeşte tabelul
simplex asociat bazei B. Coloana “B” conţine vectorii bazei B, coloana “CB” conţine Coeficienţii
din funcţia obiectiv ai variabilelor Bazice iar în coloana “VVB” apar Valorile Variabilelor Bazice. În
ultima linie a tabelului, numită şi linia test, apar valoarea f a funcţiei obiectiv în soluţia asociată
bazei B precum şi costurile reduse c j , j  J corespunzătoare coloanelor nebazice. Formula (3.5.5)
arată că f este produsul scalar al coloanelor “CB” şi “VVB” în timp ce relaţia (3.5.6) arată că c j se
obţine din produsul scalar al coloanelor “CB” şi “Aj” scăzând costul cj scris deasupra coloanei “Aj”.
Tabelul 3.5.1
ci cr cj ck
CB B VVB  Ai  Ar  Aj  Ak 
      
ci Ai bi  1  0  aij  aik  (TB)
      
cr Ar br  0  1  arj  ark 
      
f f  *  *  cj  ck 

Extindem definiţia costului redus şi la coloanele “Ai” , i I : c i  c i  c i  0 . Aceste costuri


reduse au fost notate în linia test cu asteriscuri (*) spre a le deosebi de eventualele costuri reduse
nule c j , j  J care, după cum vom vedea în secţiunea 4.2, indică - “la optim” - prezenţa mai multor
soluţii optime de bază.
53

3.4. Metoda simplex

Deoarece ştim că dacă programul în formă standard (P) are optim finit o soluţie optimă va fi
cu necesitate o soluţie de bază şi deci va fi asociată unei baze B*, este natural să ne întrebăm cum
găsim această bază optimală B*. Traducând în termeni algebrici procedeul geometric “naiv”, descris
în finalul secţiunii 3.2, rezultă următoarea procedură:

 se generează toate bazele programului (P) şi se calculează soluţiile asociate acestora;


 se elimină soluţiile de bază neadmisibile şi dintre cele admisibile se reţine acea soluţie
care oferă funcţiei obiectiv valoarea maximă.

Nu mai insistăm asupra dezavantajelor şi lipsurilor acestei scheme deoarece ele au fost deja
menţionate în secţiunea 3.2. “Metoda” descrisă are o alternativă care, din fericire, s-a dovedit a fi
deosebit de eficientă din punct de vedere practic. Este vorba de Metoda Simplex datorată
matematicianului american George B. Dantzig (1947).
Această metodă este un procedeu de cercetare sistematică a soluţiilor admisibile de bază ale
unui program liniar în formă standard (P). Ea presupune cunoscută o asemenea soluţie, numită
soluţie iniţială sau de start şi în continuare construieşte un şir de soluţii admisibile de bază de-a
lungul căruia valoarea funcţiei obiectiv creşte progresiv. Metoda simplex oferă un test simplu de
recunoaştere a optimalităţii unei soluţii de bază şi de asemenea un test de recunoaştere a optimului
infinit. Practica numerică a arătat că numărul soluţiilor admisibile de bază efectiv generate este de
regulă mult mai mic decât numărul total al acestora.
Cu anumite precauţii, uşor de îndeplinit, metoda simplex garantează convergenţa procesului
iterativ în sensul că o bază admisibilă cercetată la un moment dat nu mai revine în iteraţiile
ulterioare (vezi secţiunea 4.5). Cum numărul bazelor este finit, urmează că într-un număr finit de
paşi se ajunge fie la soluţia optimă fie la concluzia că programul are optim infinit.
Fireşte, în această descriere succintă, am plecat de la ipoteza cunoaşterii unei soluţii
admisibile de bază iniţiale, adică de la premiza că (P) este un program compatibil. În secţiunea 4.3
vom vedea cum se face recunoaşterea incompatibilităţii unui program liniar.

3.4.1. Teoremele fundamentale ale metodei simplex

În prezentarea fundamentelor teoretice ale metodei simplex vom folosi notaţiile introduse în
secţiunea 3.3.5. În mod constant vom presupune că soluţia (3.5.10), asociată bazei B, este
admisibilă, adică bi  0 , i  I .

Teorema A. Dacă toţi c j  0 , j  J atunci soluţia (3.5.10) asociată bazei B este optimă.
Dacă în plus c j  0 , j  J , atunci ea este şi unica soluţie optimă a programului (P).

Demonstraţie: Fie y = (y1,y2,...,yn)T  A o soluţie admisibilă arbitrar aleasă. Deoarece y1  0, y2 


0, ...,yn  0 vom avea:
f ( y)  f   c j y j  f  f ( x )
jJ

Inegalitatea de mai sus arată că, dintre toate soluţiile admisibile ale programului(P),soluţia x din
(3.5.10) oferă funcţiei obiectiv f cea mai mare valoare posibilă. Dacă costurile reduse sunt pozitive
şi y  x atunci inegalitatea de mai sus este strictă, fapt care probează unicitatea soluţiei optime
x. 
54 I. PROGRAMARE LINIARA

Teorema B. Presupunem că există indicele kJ astfel că ck  0 şi toţi


a ik  0 , i  I (  A k  0) . Atunci programul (P) are optim infinit.

Demonstraţie: Pornind de la soluţia x din (3.5.10) construim o soluţie admisibilă variabilă după
cum urmează. înlocuim în (3.5.7):
xk =   0 ; xj = 0 , j  J , j  k (4.1.1)
Rezultă:
x i  b i  a ik , i  I (4.1.2)
Notăm cu x () soluţia ale cărei componente sunt definite în (4.1.1) şi (4.1.2). Condiţia enunţului
face ca x ()  A , ()   0. Evaluăm funcţia obiectiv în soluţia x () :
f ( x ())  f   c k (4.1.3)
Rezultă imediat că: lim f ( x ())   .Deci f este nemărginită superior pe A şi ca urmare (P) are

optim infinit. 

Teorema C Presupunem că există k J astfel încât c k  0 dar există şi indici i I cu


a ik  0 . Fie r I indicele determinat prin formula:
br b 
 min  i  (4.1.4)
a rk iI aik 0  a ik 

Atunci grupul de coloane B' obţinut din B înlocuind coloana Ar cu coloana Ak este o bază admisibilă
a programului (P) şi soluţia x  asociată ei este cel puţin la fel de bună ca şi soluţia x asociată
bazei B, adică f( x  )  f( x ).

Demonstraţie: Din (4.1.4) rezultă că a rk  0 . Din Ak = B-1Ak avem:


A k  BA k   a ik A i  a rk A r
iI ,i  r
Deoarece a rk  0 putem exprima Ar în funcţie de Ai , i  r şi Ak:
a ik i 1 k
Ar    A  A
iI ,i  k a rk a rk
Din teorema substituţiei rezultă că sistemul B', format din coloanele Ai , i  r şi Ak, este o bază a
problemei (P).
Să luăm în soluţia variabilă x () construită în demonstraţia teoremei B:
br
 (4.1.5)
a rk
Din formulele (4.1.1) , (4.1.2) rezultă:
 br
x k  ; x j  0 , j J, j  k
 a rk

x  b  b r a , i  I
 i i
a rk
ik

br
Pentru i = r avem x r  b r  a rk  0 aşa că soluţia de mai sus poate fi rescrisă astfel:
a rk
x j  0 , j  J , j  k ; x r  0

 br br (4.1.6)
x i  b i  a a ik , i  I, i  r ; x k  a
 rk rk
55

Notăm cu x  soluţia ale cărei componente sunt definite în (4.1.6). Vom observa mai întâi
că x  este soluţie admisibilă a problemei (P), adică are toate componentele nenegative. într-adevăr:

- dacă a ik  0 atunci xi  0;
br b b
- dacă a ik  0 atunci b i  a ik  0  i  r care are loc conform alegerii
a rk a ik a rk
indicelui r (vezi (4.1.4)).
În al doilea rând remarcăm că x  este soluţia asociată bazei B'. într-adevăr, din (4.1.6) rezultă că în
x  toate variabilele secundare în raport cu baza B' au valoarea 0. Afirmaţia rezultă acum din
unicitatea soluţiei asociate unei baze.
Utilizând formulele (4.1.3) şi (4.1.5) obţinem:

br
f ( x )  f  c k  f  f ( x) (4.1.7)
a rk
În concluzie, x  este cel puţin la fel de bună ca şi x . 

Observaţii: 1) Bazele B şi B' apărute în enunţul teoremei C diferă una de alta printr-o
singură coloană a matricii A. Două baze ale programului (P) cu această proprietate se vor numi în
continuare baze vecine şi tot vecine se vor numi şi soluţiile asociate.
2) Teoremele B şi C afirmă că dacă o soluţie de bază admisibilă x nu satisface criteriul de
optimalitate al teoremei A atunci sau (P) are optim infinit (Teorema B) sau, printre soluţiile vecine
cu x există cel puţin una la fel de bună ca şi x dacă nu chiar mai bună (Teorema C).

Recapitulând materialul expus în această secţiune constatăm că testarea optimalităţii soluţiei


x asociate bazei B presupune cunoaşterea formei explicite (3.5.7) a problemei iniţiale în raport cu
baza B. Mai mult, dacă x nu verifică criteriul de optimalitate al teoremei A, construcţia soluţiei de
bază mai bune x  se face cu ajutorul elementelor aceleiaşi forme (3.5.7). În consecinţă, testarea
optimalităţii soluţiei x  asociată bazei vecine B' va necesita cunoaşterea formei explicite a
problemei iniţiale în raport cu noua bază B':
max f  f   c j x j  c r x r
 jJ , j k

x i   a ij x j  a ir x r  b i i  I, i  r
( PB' )  jJ , j k (4.1.8)
x k   a kj  x j  a kr
 x r  b k
 jJ , j k

 x1 , x 2 ,..., x n  0
(Vom remarca faptul că unele elemente din (4.1.8) sunt deja evaluate! Astfel, termenii liberi, adică
valorile noilor variabile bazice, sunt daţi de (4.1.6) în timp ce constanta f  , care este valoarea
funcţiei obiectiv în noua soluţie de bază x  , a fost obţinută în (4.1.7).)
Fireşte, (4.1.8) se poate obţine ca şi (3.5.7) prin înmulţirea la stânga a sistemului original de
restricţii Ax = b cu matricea inversă (B')-1. Putem deduce (4.1.8) direct din (3.5.7) cu ajutorul
următoarelor operaţii:

Din ecuaţia r a sistemului (3.5.7):


x r   a rj x j  a rk x k  b r
j k
explicităm xk, împărţind relaţia cu a rk :
56 I. PROGRAMARE LINIARA

1 a rj b
xk   xj 
xr  r (4.1.9)
j k a rk a rk a rk
Substituim xk dat de (4.1.9) în celelalte ecuaţii ale sistemului din (3.5.7). Obţinem:

a rj a ik b
x i   ( a ij  )x j  x r  b i  r a ik , i  I, i  r (4.1.10)
j k a rk a rk a rk

Ecuaţiile (4.1.9) , (4.1.10) reprezintă sistemul Ax = b explicitat în noile variabile bazice xi i  I,i  r
şi xk.

Mai departe substituim acelaşi xk şi în expresia funcţiei obiectiv din (3.5.7). Găsim:

br a rj c
f  (f  ck )   ( c j  ck )x j  k x r (4.1.11)
a rk j k a rk a rk

Astfel, am exprimat funcţia obiectiv cu ajutorul noilor variabile nebazice xj, j  J,j  k şi xr.

Prin urmare (4.1.9) , (4.1.10) , (4.1.11) constituie forma explicită a problemei originale în
raport cu noua bază B'. Identificând coeficienţii din aceste ecuaţii cu coeficienţii corespunzători din
(4.1.8) rezultă formulele:
a rj i  I, i  r a ik
a ij  a ij  a ik ; a ir   i  I, i  r
a rk j J, j  k a rk

a rj 1
 
a kj j  J , j  k ; a kr
  (4.1.12)
a rk a rk

br a rj ck
f  f  ck ; c j  c j  ck j  J , j  k ; c r  
a rk a rk a rk

cunoscute şi sub numele de formule de schimbare a bazei.

3.4.2. Algoritmul simplex

Rezolvarea efectivă a unui program liniar în formă standard (P) se face cu ajutorul
algoritmului simplex. Acesta este un pachet invariabil de instrucţiuni logice şi de calcul care,
aplicate unei soluţii admisibile de bază a programului (P), stabileşte dacă soluţia respectivă este
optimă şi, în caz contrar, pune în evidenţă situaţia de optim infinit sau construieşte efectiv o soluţie
admisibilă de bază mai bună decât cea curentă.
Să considerăm o bază admisibilă B precum şi forma explicită (PB) a programului (P) în
raport cu această bază. (vezi notaţiile secţiunii 3.5)
În raport cu aceste date de intrare, conţinutul unei iteraţii simplex este următorul:

Pasul 1. (Test de optimalitate) Dacă toţi c j  0 , j  J soluţia de bază curentă (adică soluţia
(3.5.10), asociată bazei B) este optimă: STOP. Altminteri:

Pasul 2. Se alege indicele nebazic k  J astfel ca:


57

c k  min c j (4.2.1)
jJ
Pasul 3. Dacă:
a ik  0 , i  I (  A k  0)
programul (P) are optim infinit:STOP. Altminteri:

Pasul 4. Se determină indicele bazic r  I cu formula:


br b 
 min  i  (4.2.2)
a rk iI aik 0  a ik 

Pasul 5. Se construieşte forma explicită a programului (P) în raport cu baza B' dedusă din B
prin înlocuirea coloanei Ar cu coloana Ak. Se revine la Pasul 1 în cadrul unei noi iteraţii.

Observaţii 1) La pasul 2 avem cu necesitate c k  0 . Despre coloana nebazică Ak vom


spune că intră în baza curentă. În demonstraţia teoremei C s-a arătat că variaţia valorii funcţiei
obiectiv la schimbarea coloanei bazice Ar cu coloana Ak este dată de formula:
b 
f ( x  )  f ( x )   r  c k (4.2.3)
 a rk 
br
Cum  0 (vezi (4.2.2)) urmează că introducerea în bază a oricărei coloane nebazice Aj cu
a rk
c j  0 îmbunătăţeşte valoarea curentă a funcţiei obiectiv. Alegerea coloanei nebazice care va intra
în baza curentă după formula (4.2.1) asigură funcţiei obiectiv cea mai mare viteză de variaţie şi în
general conduce la terminarea algoritmului în mai puţine iteraţii.

2) Se poate arăta uşor că dacă situaţia descrisă în pasul 3 are loc atunci vectorul w =
(w1,w2,...,wn)T definit prin:
w i   a ik , i  I ; w j  0 , j  J , j  k ; w k  1 (4.2.4)
este o rază extremă a mulţimii poliedrale AP.

3) Despre coloana bazică Ar al cărei indice se determină cu formula (4.2.2) vom spune că
părăseşte baza curentă. Alegerea ei după formula amintită asigură admisibilitatea soluţiei asociate
noii baze B'.

4) Elementul a rk , unde k este indicele coloanei care intră în bază iar r este indicele coloanei
care iese din bază se numeşte pivot şi operaţia de calculare a elementelor formei explicite în raport
cu baza B' din elementele formei explicite în raport cu baza veche B prin aplicarea formulelor de
schimbare a bazei (4.1.12) poartă numele de pivotare gaussiană.

5) În principiu, problemele de minimizare se reduc la cele de maximizare în baza relaţiei


(1.3.1). Algoritmul simplex descris mai sus este aplicabil şi problemelor de minimizare cu
următoarele mici modificări:
 în pasul 1: soluţia curentă este optimă dacă c j  0 , j  J ;
 în pasul 2: pentru determinarea indicelui coloanei nebazice care intră în baza curentă se va
utiliza formula
c k  max c j
jJ
De această dată vom avea c k  0.
58 I. PROGRAMARE LINIARA

6) Să presupunem că baza curentă B este optimală (adică soluţia asociată ei verifică testul de
optimalitate) şi că există indici nebazici jJ cu c j  0 . Formula (4.2.3) arată că introducerea în baza
curentă a oricărei coloane Ak pentru care c k  0 conduce la soluţii de bază la fel de bune ca şi cea
curentă, deci optime. Se poate arăta că dacă x 1 , x 2 ,..., x p , p  2 sunt toate soluţiile de bază optime
ale programului (P) atunci acesta are o infinitate de soluţii optime care au forma:
x   1 x 1   2 x 2 ... p x p cu  1 ,  2 ,...,  p  0 si  1   2 ... p  1
(altfel spus, orice soluţie optimă este o combinaţie convexă a soluţiilor optime de bază)

7) În rezolvarea manuală a programelor liniare (fireşte de mici dimensiuni) se utilizează


tabelele simplex (3.5.1) asociate diferitelor baze cercetate. Aceste tabele se deduc unul din altul prin
pivotare gaussiană.
În continuare vom aplica algoritmul simplex pe o problemă simplă, în două variabile, pentru
a putea ilustra grafic modul în care acţionează procedura.

Exemplul 4.2.1 Considerăm programul:

 max f  2 x1  x 2

( P) x1  x 2  4 ; 3x1  x 2  18 ;  x1  2 x 2  6
 x1  0 , x 2  0

a cărui mulţime de soluţii admisibile AP este vizualizată în figura 4.2.1.


x2

S3: x1=42/5, x2=36/5

S2: x1=7, x2=3


AP
S1: x1=4, x2=0
x1

S0: x1=0, x2=0

Figura 4.2.1
Aducem (P) la forma standard adăugând variabilele de abatere x3, x4, x5:

 max f  2 x1  x 2

 x1  x 2  x 3  4

( FSP)  3x1  x 2  x4  18
 x  2 x  x5  6
 1 2
 x j  0 , j  1,...,5
59

Se observă că matricea A a coeficienţilor formei standard (FSP) conţine baza unitară E = [ A3,A4,A5]
(deci FSP este chiar forma bună a lui P pentru aplicarea algoritmului Simplex Primal) a cărei soluţie
asociată:

1 = 0 , x2 = 0 , x3 = 4 , x4 = 18 , x5 = 6

este admisibilă. În continuare sunt date tabelele rezultate prin aplicarea algoritmului simplex
(tabelele 4.2.1 - 4.2.4). În partea dreaptă am indicat formele explicite ale problemei (FSP) în raport
cu bazele cercetate. În trei iteraţii s-a obţinut soluţia optimă x1  42
5
, x 2  36
5
, valoarea maximă a
funcţiei obiectiv fiind 24; variabilele de abatere au în soluţia optimă valorile x 3  145 , x 4  x 5  0 .

2 1 0 0 0 Formele explicite ale problemei (FSP) în


B 1 2 3
c B VVB A A A A4 A5 raport cu bazele cercetate
0 A3 4 1 -1 1 0 0 x1 - x2 + x3 = 4
0 A4 18 3 -1 0 1 0 3x1 - x2 +x4 = 18
0 A5 6 -1 2 0 0 1 -x1+2x2 +x5 = 6
f 0 -2 -1 * * * -2x1 -x2 +f = 0
22 A1 4 1 -1 1 0 0 x1 -x2 + x3 = 4
0 A4 6 0 2 -3 1 0 2x2 -3x3 +x4 = 6
0 A5 10 0 1 1 0 1 x2 + x3 +x5 = 10
f 8 * -3 2 * * -3x2 +2x3 +f = 8
2 A1 7 1 0 -1/2 1/2 0 x1 - 1/2x3+1/2x4 = 7
1 A2 3 0 1 -3/2 1/2 0 x2 -3/2x3+1/2x4 = 3
0 A5 7 0 0 5/2 -1/2 1 5/2x3 - 1/2x4 +x5 = 7
f 17 * * -5/2 3/2 * -5/2x3+3/2x4 +f = 17
1
2 A 42/5 1 0 0 2/5 1/5 x1 +2/5x4 +1/2x5 = 42/5
1 A2 36/5 0 1 0 1/5 3/5 x2 +1/5x4 +3/5x5 = 36/5
0 A3 14/5 0 0 1 -1/5 2/5 x3 -1/5x4 +2/5x5 = 14/5
f 24 * * * 1 1 x4 + x5 +f = 24
Tabelele 4.2.1 - 4.2.4

Componentele
soluţiei de bază Soluţia Valoarea
Soluţia Baza generată de algoritm programului funcţiei
x1 x2 x3 x4 x5 (P) obiectiv
S0 B0 = [A3 , A4 , A5] 0 0 4 18 6 (0 , 0) 0
S1 B1 = [A1 , A4 , A5] 4 0 0 6 10 (4 , 0) 8
S2 B2 = [A1 , A2 , A5] 7 3 0 0 7 (7 , 3) 17
S3 B3 = [A1 , A2 , A3] 42/5 36/5 14/5 0 0 (42/5 , 36/5) 24
Tabelul 4.2.5

Este util să recapitulăm într-un tabel soluţiile admisibile de bază ale programului (FSP) , efectiv
generate de algoritm , împreună cu soluţiile programului (P), asociate prin corespondenţa  din
finalul secţiunii 3.3 (vezi tabelul 4.2.5).
Urmărind imaginea grafică (fig. 4.2.1), deducem sensul geometric al algoritmului simplex:
procedura pleacă dintr-un vârf al mulţimii soluţiilor admisibile apoi se deplasează către un vârf
“vecin” mai bun ş.a.m.d. până la găsirea soluţiei optime.
60 I. PROGRAMARE LINIARA

3.4.3. Determinarea unei soluţii admisibile de start (Metoda bazei artificiale)

După cum s-a specificat, aplicarea algoritmului simplex necesită cunoaşterea unei baze
admisibile de start precum şi a formei explicite asociate acesteia, celelalte forme explicite
deducându-se una din alta prin pivotare gaussiană. Chiar şi pentru probleme de dimensiuni mici,
găsirea unei asemenea baze de start prin simpla inspectare a coloanelor matricii A, se dovedeşte a fi
o treabă complicată, ne mai vorbind de faptul că este posibil ca problema să nu aibă soluţii
admisibile. În plus, să nu uităm că teoria metodei simplex s-a bazat esenţial pe ipoteza că restricţiile
problemei sunt liniar independente, lucru iarăşi greu de verificat în practică. Pentru obţinerea formei
explicite iniţiale avem nevoie de câteva pregătiri.

Vom spune că programul în formă standard (P) este în formă bună dacă matricea A conţine
o submatrice unitate de ordinul m (= numărul restricţiilor) iar termenii liberi sunt nenegativi. Dacă
este aşa, (P) satisface condiţia (3.5.1) iar soluţia asociată bazei unitare este admisibilă şi poate fi
considerată ca soluţie de start pentru aplicarea algoritmului simplex. Dacă (P) nu este în formă bună,
el se poate aduce la această formă, notată (FBP), în felul următor:
 în caz că unele restricţii ale programului iniţial au termeni liberi negativi înmulţim aceste
restricţii cu -1; în acest fel toţi termenii liberi ai restricţiilor problemei de rezolvat vor fi  0.
 Se aduce problema la forma standard adăugând variabile de abatere în restricţiile
inegalităţi.
 Dacă matricea programului rezultat nu conţine toate coloanele matricii unitate de
ordinul m, în anumite restricţii se vor adăuga noi variabile nenegative pentru crearea coloanelor
lipsă; aceste noi variabile se numesc variabile artificiale şi, spre deosebire de cele de abatere, apar
şi în funcţia obiectiv cu un coeficient comun, foarte mare în valoare absolută. Coeficientul va fi
negativ dacă funcţia obiectiv se maximizează şi pozitiv în caz contrar.
Se observă imediat că dacă programul iniţial (P) este compatibil, soluţiile sale admisibile se
identifică cu acele soluţii ale formei bune în care variabilele artificiale au valoarea zero. Prin faptul
că variabilele artificiale sunt însoţite în expresia funcţiei obiectiv de nişte “penalizări” foarte mari,
metoda simplex este “instruită” să caute tocmai asemenea soluţii! şi astfel, rezolvarea formei bune
ne conduce la unul din următoarele cazuri:
1. Forma bună are optim infinit. Atunci şi programul iniţial are optim infinit.
2. Forma bună are optim finit dar în soluţia optimă cel puţin o variabilă artificială are
valoare nenulă. Atunci programul original este incompatibil.
3. Forma bună are optim finit şi în soluţia optimă toate variabilele artificiale au valoarea
zero. Ignorând valorile acestor variabile se obţine soluţia optimă a programului iniţial.

Exemplul 4.3.1 Considerăm următorul program împreună cu forma sa standard:


(max) f  2 x1  3x 2 (max) f  2x1  3x 2
 
 2 x  x  40  2x1  x 2  x 3  40
 
1 2

( P ) x1  3x 2  30  ( FSP ) x1  3x 2  x4  30
 x  x  30  x  x  x 5  30
 1 2  1 2


 x1  0 , x 2  0  x j  0 , j  1,...,5
Se constată că (FSP) nu este în forma bună neconţinând decât un singur vector al matricii unitare de
ordinul 3. Vom creea o asemenea matrice introducând în primele două restricţii variabilele artificiale
x6 şi x7. Obţinem programul:
61

(max) f  2 x1  3x 2  Mx 6  Mx 7

 2 x1  x 2  x 3  x6  40

( FBP ) x1  3x 2  x4  x 7  30 , M  0
 x  x  x5  30
 1 2

 x j  0 , j  1,...,7
Putem aplica algoritmul simplex programului (FBP) plecând de la baza unitară E = [A6, A7, A5] şi
de la soluţia asociată acesteia:
x1 = x2 = x3 =x4 = 0 x5 = 30 , x6 = 40 , x7 = 30

După trei iteraţii (vezi tabelele 4.3.1 - 4.3.4) se obţine soluţia optimă a programului (FBP) în care
variabilele artificiale x6 , x7 au valoarea zero. Ignorând aceste valori se obţine soluţia optimă a
formei standard (FSP) şi implicit soluţia optimă a programului original (P):

x1  10 , x 2  20 f max  80

variabilele de abatere având valorile: x 3  0 , x 4  40 , x 5  0.

2 3 0 0 0 -M -M
cB B VVB A1 A2 A3 A4 A5 A6 A7
-M A6 40 2 1 -1 0 0 1 0
-M A7 30 1 3 0 -1 0 0 1
0 A5 30 1 1 0 0 1 0 0
f -70M -3M-2 -4M-3 M M * * *
-M A6 30 5/3 0 -1 1/3 0 1 -1/3
3 A2 10 1/3 1 0 -1/3 0 0 1/3
0 A5 20 2/3 0 0 1/3 1 0 -1/3
f -30M+30 -5/3M-1 * M -M/3-1 * * 4M/3+1
2 A1 18 1 0 -3/5 1///5 0 3/5 -1/5
3 A2 4 0 1 1/5 -2/5 0 -1/5 2/5
0 A5 8 0 0 2/5 1/5 1 -2/5 -1/5
f 48 * * -3/5 -4/5 * M+3/5 M+4/5
2 A1 10 1 0 -1 0 -1 1 0
3 A2 20 0 1 1 0 2 -1 0
0 A4 40 0 0 2 1 5 -2 -1
f 80 * * 1 * 4 M-1 M
Tabelele 4.3.1 - 4.3.4

Punctele din R2 corespunzătoare celor patru soluţii generate de algoritm sunt S0 = (0,0) , S1 = (0,10),
S2 = (18,4), S3 = (10,20). Urmărind fig. 4.3.1 se constată că punctele S0 şi S1, ce corespund unor
soluţii ale programului (FBP) în care cel puţin o variabilă artificială are valoare nenulă, sunt în afara
mulţimii AP în timp ce S2 şi S3, corespunzătoare unor soluţii în care x6 = x7 = 0, sunt vârfuri ale
acestei mulţimi.
62 I. PROGRAMARE LINIARA

x2

S3: x1=10 , x2=20

S1: x1=0 , x2=10


AP
S0: x1=0 , x2=0
x1
S2: x1=18 , x2=4

Figura 4.3.1

Pentru determinarea unei soluţii admisibile de bază de start, în situaţia în care programul
iniţial (P) nu este în formă bună, se poate aplica şi aşa numita metodă a celor două faze:
 se introduc în restricţii variabile artificiale, bineînţeles acolo unde este cazul, în scopul
formării unei baze unitare de start (termenii liberi ai restricţiilor se presupun a fi nenegativi);
 în faza I se minimizează suma w a variabilelor artificiale introduse. Deoarece şi aceste
variabile sunt supuse condiţiei de nenegativitate, urmează că (min)w  0. în caz că (min)w > 0 este
clar că programul iniţial (P) este incompatibil; dacă (min)w = 0 se trece la:
 faza a II-a, în care se optimizează funcţia obiectiv a programului iniţial (P) plecând de la
soluţia de bază rezultată la finele fazei I. (Atenţie, la începutul acestei faze, vom avea grijă să
recalculăm costurile reduse c j în raport cu coeficienţii funcţiei obiectiv din (P)!)

3.4.4. Inversa bazei curente. Soluţia optimă a problemei duale

Să considerăm un program liniar (P) în formă bună. Renumerotând convenabil variabilele


programului, matricea coeficienţilor sistemului de restricţii are forma:
A = [A’ , E],
unde E este matricea unitate de ordinul m = numărul restricţiilor din (P). După cum am văzut, E se
ia ca bază de start în procesul rezolvării programului (P) prin algoritmul simplex. Dacă B este o
bază cercetată de algoritm, atunci matricea formei explicite asociată bazei B va fi:

B-1A = [B-1A’ , B-1]

Cum matricea B-1A apare în “corpul mare” al tabelului simplex corespunzător bazei B, deducem
următoarea concluzie importantă:

La fiecare iteraţie, algoritmul simplex pune în evidenţă inversa B-1 a bazei curente. Ea este
formată din coloaneleAj corespunzătoare coloanelor unitare Aj care au format baza de start, în
ordinea în care acestea s+au aflat în baza de start.

Exemplul 4.4.1 Ne referim la programul (P) rezolvat în exemplul 4.3.1. Deoarece baza de
start a fost matricea unitate E = [A6,A7,A5], inversa bazei optime B = [A1,A2,A4] se “citeşte” din
ultimul tabel simplex:
63

 1 0  1
 
B  A , A , A   1
1 6 7 5
0 2
 2  1 5 
O calitate remarcabilă a algoritmului simplex este aceea că produce nu numai soluţia
optimă a problemei căreia i se aplică ci şi soluţia optimă a problemei duale.

Să considerăm un cuplu de probleme în dualitate în care una este în formă standard (vezi
secţiunea 2.2):
max f ( x )  cx min g( u )  ub
 
( P ) Ax  b ( Q ) uA  c
 x0 u oarecare
 

Cu notaţiile secţiunii 3.5 avem următoarea:

Teorema 4.4.1 Presupunem că (P) are o soluţie optimă x* asociată unei baze B. Atunci:
u* = cBB-1 (4.4.1)
este o soluţie optimă a problemei duale (Q).

Demonstraţie: Vom arăta că u* satisface restricţiile uAj  cj , j = 1,…,n ale problemei duale (Q).
într-adevăr u*Aj - cj =cBB-1Aj -cj = c j , conform (3.5.6). Avem c j  0 , j = 1,…,n, deoarece x* este
prin ipoteză soluţia optimă a programului (P), astfel că u* este o soluţie a dualei (Q). Mai departe
f(x*) = g(u*) = cBB-1b. Concluzia teoremei decurge acum din teorema 2.3.1. 

Practic, pentru determinarea soluţiei optime duale se procedează astfel. Am arătat că


rezolvarea unei probleme în formă standard se reduce la rezolvarea unei probleme de acelaşi tip a
cărei matrice conţine o submatrice unitate având ordinul egal cu numărul restricţiilor.

Atunci inversa bazei optimale B-1 se citeşte în tabelul simplex asociat acestei baze pe
coloanele Aj corespunzătoare vectorilor care au format baza unitară de start!

Extrăgând B-1 din tabel se poate aplica formula (4.4.1).

Procedeul descris este valabil şi pentru un cuplu general de probleme în dualitate (P,Q). Într-
adevăr, după cum am văzut deja, aducerea problemei (P) la o formă (P1) convenabilă aplicării
algoritmului simplex se face prin adăugare de variabile: de abatere şi/sau artificiale. În consecinţă,
duala (Q1) a problemei (P1) va avea aceleaşi variabile şi aceeaşi funcţie obiectiv ca şi duala (Q) a
problemei iniţiale (P), diferenţa constând în numărul restricţiilor şi în condiţiile impuse variabilelor.
Se poate arăta fără dificultate că această “diferenţă” nu înseamnă altceva decât două modalităţi de
scriere a uneia şi aceleiaşi probleme, altfel spus (Q) şi (Q1), în esenţă, coincid! În acest fel, teorema
de dualitate 2.3.3 este probată.

Exemplul 4.4.2 Ilustrăm cele de mai sus, determinând soluţia optimă a programului liniar:
 min g (u )  40u1  30u 2  30u3
2u  u  u  2;
 1 2 3
(Q)
u
 1  3u 2  u 3 3
 u1  0,u 2  0,u3  0
64 I. PROGRAMARE LINIARA

care este dualul programului (P) rezolvat în exemplul 4.3.1. După adăugarea variabilelor de abatere
şi a celor artificiale, din (P) s-a obţinut programul (P1) = (FBP) al cărui dual este:
min g( u )  40u1  30u2  30u3

 2u1  u2  u3  2
 u1  3u2  u3  3

  u1 0

( Q1 )  u2 0
 u3  0

 u1  M

 u2  M
 u1 , u2 , u3 f.r.s.
Restricţia u3  0 este de fapt condiţia de nenegativitate impusă variabilei u3 în (Q) iar -u1  0 , -u2 
0 înseamnă u1  0 , u2  0. Ultimele două restricţii din (Q1) sunt superflue pentru că M este prin
definiţie >>0. Prin urmare (Q) şi (Q1) coincid. Din tabelul simplex 4.3.4 extragem inversa bazei
optimale comune B = [ A1,A2,A4] a programelor (P) şi (P1) - vezi exemplul precedent - astfel că
soluţia optimă a problemei duale (Q) este :
 1 0  1
 
u  c B   2 3 0   1 0
 B 1
2     1 0 4
 2  1 5 
adică: u1  1, u2  0, u3  4.

Observaţie: Folosind notaţiile din 3.5 punem în evidenţă componentele vectorului linie cBB-1:
 j  c B A j   ci aij , j  J
iI

Pentru coloanele unitare Ai corespunzătoare vectorilor Ai din baza curentă punem:
i = ci , i  I

Din (3.5.6) rezultă atunci că:


c j =j - cj , j=1,…,n

şi deci mărimile j sunt efectiv calculate în procesul evaluării coeficienţilor c j ! Acesta este şi
motivul pentru care de multe ori mărimile j sunt puse în evidenţă într-o linie separată plasată în
tabelul simplex deasupra liniei test. Cu aceste pregătiri, formula (4.4.1) arată că:

Soluţia optimă a problemei duale este dată de coeficienţii j din tabelul simplex al
problemei primale, corespunzători coloanelor unitare care au format baza de start.

3.4.5. Convergenţa algoritmului simplex

Se arată uşor că dacă minimul din (4.2.2) nu este unic atunci noua soluţie de bază x  este
degenerată, adică are un număr de componente nenule < m. Această situaţie este delicată prin faptul
că poate implica neconvergenţa algoritmului. Mai precis, este posibil ca algoritmul să genereze un
şir de soluţii de bază neoptimale x 1 , x 2 ,..., x p , de-a lungul căruia valoarea funcţiei obiectiv
staţionează, adică f ( x 1 )  f ( x 2 )    f ( x p ) , astfel încât x p  x 1 !!! Fenomenul descris, numit
65

ciclare, deşi teoretic posibil, nu a fost întâlnit în nici o aplicaţie practică, existenţa lui fiind probată
doar prin câteva exemple “artificial” construite.

Exemplul 4.5.1 [Beale] Se consideră programul liniar:

x1 + 14 x 4  8x 5  x 6  9x 7  0

 x2 + 12 x 4  12x 5  12 x 6  3x 7  0

 x3 + x6 =1
 (max)f = 4 x  20x  2 x  6x
3 1
 4 5 6 7

O bază admisibilă de start este B0 = E = [A1,A2,A3] a cărei soluţie asociată x0 este degenerată. Într-
adevăr, variabilele bazice au valorile:

x1 = 0 , x2 = 0 , x3 = 1 (toate celelalte variabile fiind nule)

Propunem cititorului să arate că succesiunea de baze admisibile:

B1 = [A4,A2,A3] , B2 = [A4,A5,A3] , B3 = [A6,A5,A3] , B4 = [A6,A7,A3], B5 = [A6,A2,A3] , B6


=[A4,A2,A3]

poate fi dedusă din B0 prin aplicarea regulilor algoritmului simplex. Se constată fără dificultate că
valoarea funcţiei obiectiv în soluţiile de bază asociate este zero şi că nici una din aceste soluţii, toate
degenerate, nu verifică criteriul de optimalitate. Pe de altă parte observăm că baza B6 este identică cu
baza B1 şi deci algoritmul intră într-un ciclu infinit fără a putea determina soluţia optimă (care există
şi este unică după cum vom vedea).
Pentru problemele ale căror soluţii de bază admisibile sunt toate nedegenerate convergenţa
algoritmului este asigurată de următoarea:

Teorema 4.5.1 Dacă programul în formă standard (P) este compatibil şi toate soluţiile sale
admisibile de bază sunt nedegenerate atunci aplicarea algoritmului simplex descris în 4.2 se
termină într-un număr finit de iteraţii, fie cu găsirea soluţiei optime, fie cu concluzia că programul
are optim infinit.
0 1 2
Demonstraţie: Fie x , x , x ,... soluţiile cercetate în cursul aplicării algoritmului , x 0 fiind soluţia
iniţială. Avem f ( x 0 )  f ( x 1 )  f ( x 2 ) ....
Ipoteza nedegenerării precum şi formula (4.2.3) arată că de fapt f ( x 0 )  f ( x 1 )  f ( x 2 ) ... şi deci
nici o soluţie admisibilă de bază nu va fi cercetată de două ori. Concluzia teoremei rezultă acum
din faptul că numărul soluţiilor de bază este finit (vezi secţiunea 3.5). 

Din fericire, există proceduri de evitare a ciclării care constau într-o mică modificare a regulii
(4.2.2). Ele sunt încorporate în orice pachet de programe destinat rezolvării problemelor de
programare liniară. O asemenea metodă este descrisă în www.asecib.ase.ro – Cursuri on-line – 9.
Nica V. şi colectiv, Cercetări Operaţionale I.

3.4.6. Interpretarea economică a algoritmului simplex

Să considerăm cazul în care problema de maximizare în formă standard:


66 I. PROGRAMARE LINIARA

max f  cx

 Ax  b
 x0

reprezintă modelul de optimizare a activităţii unei firme (secţiunea 1.1, exemplul 1). Se cere
determinarea combinaţiei de bunuri ce urmează a fi realizate precum şi a cantităţilor în care acestea
vor fi produse, x*, astfel încât venitul firmei să fie maxim cu condiţia consumării integrale a
resurselor disponibile. Ultima cerinţă nu este deloc restrictivă întrucât în lista activităţilor productive
putem include la nevoie un număr de activităţi fictive ale căror nivele să reprezinte resursele
neconsumate (aceste activităţi fictive corespund variabilelor de abatere).

O primă concluzie care se desprinde din teoria metodei simplex este aceea că în orice soluţie
optimă a modelului numărul bunurilor ce vor fi efectiv realizate este cel mult egal cu numărul
resurselor folosite.

Aceasta rezultă din faptul că în orice soluţie de bază numărul componentelor nenule nu
depăşeşte numărul restricţiilor. În consecinţă, realizarea unor bunuri ce nu sunt incluse în "lista
optimă" implică adăugarea unor noi restricţii în model, fapt care duce la diminuarea optimului
iniţial.

Să considerăm acum un program de producţie "de bază", adică o soluţie admisibilă de bază,
asociată unei baze B. Activităţile i corespunzătoare coloanelor Ai din B vor fi numite în continuare
activităţi de bază, iar celelalte activităţi secundare. Conform definiţiei, acest program nu prevede
folosirea activităţilor secundare iar cantităţile de bunuri realizate în activităţile de bază trebuie astfel
dimensionate încât să se asigure consumarea întregului stoc de resurse. În notaţiile secţiunii 3.5 :

BxB = b , xS = 0 de unde xB = B-1b =b

După cum se vede, lista activităţilor de bază determină în mod unic cantităţile de bunuri ce pot fi
produse şi ca atare detectarea unui program mai bun se poate face numai studiind oportunitatea
utilizării unor activităţi secundare care să înlocuiască o parte din activităţile bazice curente. Pentru
aceasta avem nevoie de un criteriu care să permită compararea unei activităţi secundare j cu grupul
activităţilor de bază. Să examinăm coloana Aj a tabelului simplex asociat bazei B. Conform (3.5.3)
Aj = B-1Aj de unde Aj = BAj sau:

A j  a1 j A1  a 2 j A 2 ....a mj A m (4.6.1)

 
în ipoteza că B  A1 , A 2 ,..., A m . Sensul economic al egalităţii (4.6.1) este următorul: din punctul
de vedere al consumului de resurse producerea unei unităţi din bunul j este echivalentă cu
producerea cantităţilor a1 j , a 2 j ,..., a mj din bunurile activităţilor de bază. În consecinţă, dacă se
doreşte producerea unei unităţi din bunul j, producţia activităţilor de bază trebuie diminuată cu
cantităţile a1 j , a 2 j ,..., a mj . Analiza oportunităţii introducerii în fabricaţie a bunului j se va face prin
compararea aportului său la creşterea venitului firmei cu aportul valoric al cantităţilor
a1 j , a 2 j ,..., a mj . Astfel, realizarea unei unităţi din bunul j determină creşterea valorii curente a
funcţiei obiectiv cu preţul său cj în timp ce renunţarea la producerea cantităţilor a1 j , a 2 j ,..., a mj
înseamnă diminuarea aceleiaşi valori cu suma c1a1 j  c2 a 2 j ... cm a mj . Prin urmare dacă diferenţa:
c j  c1a1 j  c2 a 2 j ... cm a mj  c j este  0 realizarea bunului j nu este rentabilă deoarece nu duce la
creşterea valorii producţiei asigurate prin programul curent. Dacă cj  0 pentru toate activităţile
67

secundare, programul de fabricaţie curent este optim. Am regăsit astfel criteriul de optimalitate din
teorema A secţiunea 4.1. Dacă cj < 0, utilizarea activităţii secundare j duce la o sporire a venitului
realizabil prin programul curent, viteza de creştere fiind -cj . Interpretarea criteriului de intrare în
bază (4.2.1) este acum clară: dacă mai multe activităţi secundare sunt rentabile în raport cu grupul
activităţilor de bază este preferată activitatea care asigură cea mai ridicată viteză de creştere a valorii
curente a producţiei. Fie k această activitate. Ultima problemă constă în stabilirea cantităţii din bunul
k ce poate fi realizată în condiţiile date. Conform celor de mai sus producerea unei cantităţi  din
acest bun implică micşorarea producţiei din bunurile activităţilor de bază cu cantităţile
 a1k , a 2 k ,..., a mk :
x1  b1   a1k , x 2  b2   a 2 k ,..., x m  bm   a mk

Deoarece desfăşurarea unei activităţi la un nivel negativ este lipsită de sens va trebui să avem
bi   aik  0 i  1,.., m de unde:
bi
   0  min
i ,a
ik
0 aik
br
(excludem cazul optimului infinit, nesemnificativ din punct de vedere economic). Dacă  0  şi
a rk
   0 obţinem creşterea maximă a valorii curente a producţiei prin utilizarea activităţii k. În acest
br
caz activitatea k nu mai este folosită întrucât xr  br   0 a rk  br  a rk  0 . Am obţinut din nou
a rk
criteriul de ieşire din bază (4.2.2).
68 I. PROGRAMARE LINIARA

3.5. Algoritmul simplex dual


Există situaţii în care pentru rezolvarea unui program liniar, dispunem de o soluţie de bază
care nu este admisibilă. Următoarele consideraţii au drept scop să pună în evidenţă o altă clasă de
soluţii de bază cu care se poate opera într-o manieră asemănătoare celei în care lucrează algoritmul
simplex descris în paragraful 4.

3.5.1. Admisibilitate primală şi duală

Fie (P) un program liniar în formă standard:


n
 a ij x j  bi i  1,..., m
 j 1  Ax  b
 
( P )  x j  0 j  1,..., n  x  0
 (max) f  cx
n
 (max) f   c j x j 
 j 1

(vezi notaţiile matriciale (3.3.1)) Fie B o bază a programului (P), I mulţimea indicilor coloanelor
din B, J mulţimea indicilor coloanelor din A care nu sunt în B. În secţiunea 3.5 am scris (P) în
forma:
(max) f  f   c j x j (max) f  f  c S x S
 j J


( PB )  xi   aij x j  bi   x B  Sx S  b
 j J
 B
x  0 , x  0
S
 xi  0 , i  I ; x j  0 , j  J
(vezi notaţiile (3.5.2-3.5.7)), numită forma explicită a programului (P) în raport cu baza B.
Să considerăm acum dualul programului (P):
m
 aij ui  c j j  1,..., n uA  c
 i 1 
(Q)  ui oarecari , i  1,..., m  u oarecare
 (min) g  ub

m
(min) g   bi ui
 i 1

(vezi notaţiile din 2.2) Aducem sistemul de inegalităţi uA  c la forma standard introducând
variabilele de abatere v1, v2, ..., vn reunite în vectorul linie v.
m
 aij u i  v j  c j
 i 1 uA  v  c
 
( FSQ)u i oarecari, i  1,..., m;v j  0 j  1,..., n  u oarecare , v  0
 (min) g  ub
(min) g  b u
m 
  i i
 i 1
Partiţionând:
   
v  v B , v S cu v B  vi i I , v S  v j
j J

sistemul liniar din (FSQ) devine succesiv:


69

 uB  v B  c B
   
(511
..)
uA  v  c  u B, S   v , v  c , c  
B S B S

 uS  v  c
S S
(512
.. )
Deoarece B este nesingulară din (5.1.1) rezultă:

u  c B B 1  v B B 1 (5.1.3)
Introducem u în (5.1.2):

( c B B 1  v B B 1 )S  v S  c S  v S  v B B 1 S  c B B 1 S  c S  v S  v B S  c S

(cu notaţiile 3.5.2-3.5.7) Folosind din nou (5.1.3) eliminăm u din funcţia obiectiv duală:

g (u)  (c B B 1  v B B 1 )b  c B B 1b  v B B 1b  f  v B b

In acest fel, am adus (FSQ) la forma echivalentă:


 vS  vB S  c S

( QB )  v S  0 , v B  0

(min) g  f  v b
B

variabilele originale ui , i=1,...,m fiind legate de variabilele vj , j=1,...,n prin relaţia (5.1.3).

Programul (QB) se va numi forma explicită a dualului (Q) în raport cu baza B.


Pentru a sublinia simetria existentă între problemele (PB) şi (QB) le vom scrie alăturat atât
scalar cât şi matricial:
 xi   aij x j  b i i  I v j   aij vi  c j j  J
 j J  i I
 
( PB )  xi  0 , i  I ; x j  0 , j  J (QB ) v j  0 , j  J ; vi  0 , i  I
 
(max) f  f  j cj xj (min) g  f  i vi b i
 J I

 
 x B  Sx S  b  vS  vB S  c S
 B  S
x  0 , x S  0 v  0 , v  0
B

 
(max) f  f  c x (min) g  f  v b
S S B

Observaţie: Cu ajutorul relaţiei (5.1.3) am rescris dualul (Q) în alte variabile care sunt
supuse condiţiei de nenegativitate ca şi variabilele programului primal (P). Putem vorbi acum de
soluţii şi soluţii admisibile pentru programul (Q) şi când facem acest lucru ne referim la forma
echivalentă (QB).

Prin analogie cu conceptul de soluţie a primalei (P) asociată bazei B introducem termenul de
soluţie a dualei (Q) asociată bazei B anulând în sistemul restricţiilor lui (QB) variabilele "secundare"
vi , i I :
vB  0  vS = c S
 (5.1.4)
vi=0 , i  I  vj=c j , j  J

Rezultă imediat că valoarea funcţiei obiectiv duale în soluţia construită este constanta f .
70 I. PROGRAMARE LINIARA

Folosind (5.1.3), soluţia dualei (Q), corespunzătoare soluţiei (5.1.4) este:


u = cBB-1 (5.1.5)
Soluţia (5.1.4) va fi o soluţie admisibilă pentru duala (Q) dacă:

cS  0  c j  0 , j  J
Mai departe, exact ca în demonstraţia teoremei A a metodei simplex ( vezi secţiunea 4.1 ) soluţia
(5.1.4), presupusă admisibilă, va fi optimă dacă:

b  0  bi  0 , i  I
Reamintim că soluţia primalei (P) asociată bazei B este:

xS=0  xB=b
 (5.1.6)
xj  0 , j J  xi  b i , i  I

Această soluţie este admisibilă dacă b  0  bi  0 , i  I şi în plus optimă dacă


c  0  c j  0 , j  J . Obţinem următoarele concluzii remarcabile:
S

 Soluţia (5.1.6) a primalei (P) asociată bazei B este admisibilă (respectiv satisface criteriul
de optimalitate al algoritmului simplex) dacă şi numai dacă soluţia (5.1.4) a dualei (Q) asociată
aceleiaşi baze satisface criteriul de optimalitate (respectiv este admisibilă).
 Valorile funcţiilor obiectiv primală şi duală în cele două soluţii evidenţiate coincid (cu
constanta f )
 Soluţia (5.1.6) este o soluţie optimă a programului (PB)  (P) dacă şi numai dacă soluţia
(5.1.4) este optimă pentru programul (QB), ceeace echivalează cu a spune că soluţia (5.1.5) este
optimă pentru programul dual (Q).

În rezumat, pornind de la problema originală (P) şi de la o bază B a sa am construit două


probleme în dualitate (PB) şi (QB) şi am pus în evidenţă două soluţii ale acestora, pe care le-am
numit soluţii asociate bazei B. Cuplul de soluţii evidenţiat are proprietăţile:
i)Una din soluţii este admisibilă (verifică criteriul de optimalitate al algoritmului simplex)
dacă şi numai dacă cealaltă verifică criteriul de optimalitate (respectiv este admisibilă) în
particular una este optimă dacă şi numai dacă cealaltă este optimă.
ii)Valorile funcţiilor obiectiv în cele două soluţii coincid.

Contextul astfel creat sugerează următoarea schimbare de terminologie:


 O soluţie de bază a programului (P) se va numi primal admisibilă dacă este admisibilă în
sensul de până acum, adică are toate componentele nenegative.
 O soluţie de bază a programului (P) se va zice dual admisibilă dacă verifică criteriul de
optimalitate al algoritmului simplex. O bază a programului (P) se va numi dual admisibilă dacă
soluţia asociată este dual admisibilă.

În terminologia introdusă, proprietatea i) de mai sus se reformulează astfel:


 Una din soluţii este primal admisibilă dacă şi numai dacă cealaltă este dual admisibilă.
Oricare din ele este optimă dacă şi numai dacă este simultan primal şi dual admisibilă.
71

3.5.2. Algoritmul simplex dual

Consideraţiile precedente sugerează posibilitatea rezolvării programului original (P) utilizând


clasa soluţiilor dual admisibile. Următorul algoritm, numit algoritmul simplex dual, rezultă
nemijlocit din aplicarea teoremelor A, B, C ale metodei simplex la problema (QB).

Presupunem cunoscută o soluţie de bază dual admisibilă a programului (P) şi tabelul simplex
(uzual) asociat. în notaţiile deja utilizate, o iteraţie a algoritmului simplex dual se compune din
următorii paşi:

Pasul 1. (Test de optimalitate) Dacă toţi b i  0 , i  I STOP : soluţia de bază dual


admisibilă curentă este optimă. în caz contrar:

Pasul 2. Se determină indicele bazic rI cu proprietatea:

b r  min b i (b r  0)
i I
Coloana Ar părăseşte baza curentă.

Pasul 3. Dacă pentru toţi jJ avem a rj  0 STOP: problema primală nu are soluţii
admisibile. Altminteri:

Pasul 4. Se determină indicele nebazic k J cu proprietatea:


ck  min c j
a rk arj 0 a rj
Coloana Ak intră în baza curentă.

Pasul 5. Se pivotează tabelul simplex curent cu pivotul ark <o. în acest fel se obţine forma
explicită a programului (P) în raport cu baza B' dedusă din B prin înlocuirea coloanei Ar cu
coloana Ak. Se revine la pasul 1 în cadrul unei noi iteraţii.
Observaţii: 1) Consideraţiile expuse în această secţiune sunt valabile cu mici modificări şi în
cazul în care funcţia obiectiv din programul original (P) se minimizează. Cititorul va verifica imediat
că algoritmul prezentat mai sus rămîne valabil şi pentru asemenea probleme.
2) Concluzia din pasul 3 este consecinţa teoremei fundamentale a dualităţii. într-adevăr, dacă
arj  0 , jJ atunci programul dual (Q) are optim infinit şi în consecinţă programul (P) este
incompatibil.
3) Nu insistăm asupra modalităţii de determinare a unei soluţii de bază dual admisibile de
start deoarece algoritmul va fi aplicat numai în situaţii în care o asemenea soluţie este disponibilă.

Exemplu 5.2.1 Considerăm programul:

(min) f  12 x1  2 x 2  6 x 3
  3x  2 x  x  3
 1 2 3
( P) 
 4 x 1  x 2  x 3  4
 x1 , x 2 , x 3  0
Introducem variabilele de abatere x4 şi x5 după care înmulţim cu -1 egalităţile rezultate:

3x1  2 x2  x3  x 4  3
4 x1  x 2  x 3  x5  4
72 I. PROGRAMARE LINIARA

Soluţia asociată bazei unitare E =  A4 , A5  nu este admisibilă:

x1=x2=x3=0 x4= -3 , x5= -4

dar dacă evaluăm costurile reduse c1 , c2 , c3 constatăm că ele verifică criteriul de optimalitate al
algoritmului simplex (bineînţeles pentru probleme de minimizare!).Vezi tabelele 5.2.1-5.2.4.

Se constată că soluţia optimă a programului dat are componentele :

x1*  1
7 , x 2*  0 , x 3*  24
7 ; f min  156
7

Observaţie finală. Pentru simetrie, algoritmul descris în secţiunea 4.2 se va numi algoritmul
simplex primal. Recapitulând teoria se constată fără dificultate că maximul (minimul) unei funcţii
obiectiv se atinge prin valori crescătoare (descrescătoare) în simplexul primal şi prin valori
descrescătoare (crescătoare) în simplexul dual.
12 2 6 0 0
cB B VVB A1 A2 A3 A4 A5 A5 iese din baza curentă.
0 A4 -3 3 2 -1 1 0 min{-12/-4 , -2/-1 , -6/-1} =
0 A5 -4 -4 -1 -1 0 1 = 2  A2 intră în baza curentă.
f 0 -12 -2 -6 * * ***
0 A4 -11 -5 0 -3 1 2 A4 iese din baza curentă.
2 A2 4 4 1 1 0 -1 min{-4/-5 , -4/-3} = 4/5 
f 8 -4 * -4 * -2 A1 intră în baza curentă.
12 A1 11/5 1 0 3//5 -1//5 -2/5 ***
2 A2 -24/5 0 1 -7/5 4/5 3/5 2
A iese din baza curentă.
f 84/5 * * -8/5 -4/5 -18/5 A3 intră în baza curentă.
12 A1 1/7 1 3/7 0 1/7 -1/7 ***
6 A3 24/7 0 -5/7 1 -4/7 -3/7 Soluţia curentă este dual şi primal
f 156/7 * -8/7 * -12/7 -30/7 admisibilă.
Tabelele 5.2.1 - 5.2.4

3.6. Analiza sensitivităţii. Postoptimizare. Programare parametrică

Orice program liniar în formă standard în care funcţia obiectiv se maximizează este perfect
determinat de cunoaşterea următoarelor trei masive:

 A  matricea coeficienţilor sistemului de restricţii


 b  vectorul (coloană) al termenilor liberi
 c  vectorul (linie) al coeficienţilor funcţiei obiectiv
drept care va fi identificat în continuare prin sigla P(A,b,c):
 Ax  b

P( A, b, c)  x  0
(max) f  cx

Până acum, elementele masivelor A, b, c au fost presupuse a fi cunoscute cu exactitate şi
fixate, de unde şi numele de constante atribuit lor. În situaţiile practice, suntem obligaţi să privim
aceste "constante" şi din alte unghiuri de vedere. Să presupunem că P(A,b,c) modelează activitatea
unei firme. Atunci elementele aij ale matricii A au semnificaţia de consumuri de resurse,
componentele bi ale vectorului b reprezintă plafoanele resurselor disponibile iar componentele cj ale
vectorului c pot fi după caz, preţuri sau profituri unitare.
73

Se poate întâmpla ca unele dintre aceste elemente să nu fie cunoscute cu exactitate, ele
oscilând în jurul unor valori "probabile", ca în următoarele exemple:
 "experţii firmei estimează că pentru luna următoare preţul bunului ... va fi în jur de 18 u.m."
sau:
 "directorul executiv apreciază că pentru luna următoare disponibilul resursei ... va fi cam de
130 unităţi".
În asemenea situaţii suntem interesaţi să ştim dacă la variaţii "mici" ale unor constante
corespund variaţii "mici" ale soluţiei modelului, altfel spus, dacă soluţia modelului depinde
"continuu" de aceste constante. Dacă este aşa, vom spune că soluţia modelului este stabilă.
Studiul stabilităţii este important din punct de vedere economic deoarece este posibil ca
variaţii mici ale unor constante să antreneze modificări majore în soluţia optimă şi în acest caz este
necesar să ştim cauzele şi proporţiile instabilităţii pentru a putea lua decizia adecvată.
În acest context, analiza sensitivităţii are ca obiect studiul stabilităţii soluţiei optime a unei
probleme de optimizare. În cazul liniar, pentru fiecare constantă se poate determina un interval de
variaţie cu proprietatea că baza optimală sau chiar soluţia asociată rămân neschimbate. Acest interval
se numeşte interval de stabilitate al soluţiei optime în raport cu coeficientul considerat.
Reluând problema firmei sunt situaţii în care constantele modelului sunt cunoscute cu
exactitate şi fixate doar pe o anumită perioadă, o parte din ele suferind modificări de mai mică sau
mai mare amplitudine prin trecerea la o nouă perioadă. Ce efect au aceste schimbări asupra soluţiei
optime este o altă chestiune cu serioase motivaţii economice. De exemplu, suntem interesaţi în a
afla dacă optimalitatea unei combinaţii de bunuri se mai menţine când profitul unui bun rentabil
scade. Mai departe, ne putem întreba ce se întâmplă dacă disponibilul de resurse suferă unele
ajustări. De asemenea este interesant de văzut ce efect are introducerea unei noi activităţi
productive, considerarea unei noi resurse al cărei disponibil limitat face inoperant programul de
producţie actual sau modificarea tehnologiei de transformare a resurselor în bunuri.
Evident, la toate aceste întrebări se poate răspunde rezolvând de sine stătător problema
modificată. În continuare, vom arăta cum se obţine soluţia problemei modificate plecând de la
soluţia problemei originale. Subiectul în discuţie este tentant din start, deoarece este din nou de
aşteptat ca, la mici modificări ale datelor iniţiale, să rezulte schimbări de mică amploare în soluţia
optimă originală, schimbări ce se pot determina cu un efort de calcul relativ mic, oricum mai mic
decât în cazul în care problema modificată ar fi rezolvată "de la capăt".
Problematica relevată este cunoscută sub numele de postoptimizare.
În fine, programarea parametrică se ocupă de studiul comportării soluţiei unei probleme de
optimizare atunci când una sau mai multe constante ale problemei depind de un sistem de
parametri. (Ne vom mărgini aici numai la cazul dependenţei liniare de un singur parametru.)
Cele trei teme sunt strâns legate între ele. În esenţă, determinarea unui interval de stabilitate a
soluţiei optime în raport cu un coeficient este o problemă parametrică în care însuşi coeficientul
respectiv este considerat ca parametru. De asemenea, o problemă de postoptimizare poate fi privită
ca un caz particular al unei probleme mai generale, parametrice etc.

3.6.1. Analiza sensitivităţii. Studiu de caz

Conducerea firmei X, specializată în producerea de aparatură electronică a iniţiat un ambiţios


program de îmbunătăţire a activităţii sale. Ea doreşte în primul rând să ştie care este cel mai bun mod
de utilizare a resurselor sale interne: capacităţi de producţie, forţă de muncă, spaţii de depozitare,
etc. urmând ca în funcţie de rezultate să-şi definitiveze programul de aprovizionare cu materii prime
74 I. PROGRAMARE LINIARA

şi componente semifabricate precum şi programul de producţie pe următoarele luni. Directorul


executiv a apelat la o echipă de Cercetare Operaţională care a propus programarea liniară ca mijloc
de investigare şi analiză. Pentru exemplificare, au fost alese trei resurse mai importante R1, R2, R3 şi
trei produse reprezentative A1, A2, A3. Din analiza situaţiei curente a rezultat că pe durata unei luni
activităţile având drept scop producerea celor trei bunuri pot fi considerate ca fiind liniare. În tabelul
6.1.1 sunt date cantităţile din resursele considerate, disponibile la nivelul unei luni şi consumurile
specifice pentru fiecare bun în parte.

Tabelul 6.1.1
Produse  Consumuri specifice
Resurse  A 1
A2 A3 Disponibil
R1 1 2 1 130
R2 1 1 2 100
R3 2 1 3 140

Desigur, în compararea diferitelor moduri de utilizare a resurselor trebuie avut în vedere un criteriu
de performanţă cum ar fi maximizarea profitului total sau a venitului total sau a ratei profitului,
minimizarea costului producţiei etc. Se poate pune chiar problema elaborării unui program de
fabricaţie acceptabil din punctul de vedere al mai multor criterii ca în cadrul analizei multicriteriale,
dar acest subiect nu va fi tratat în cadrul acestui curs.
Pentru început, directorul executiv a cerut echipei să elaboreze o propunere de program de
producţie care, plecând de la resursele sus amintite, să maximizeze profitul total al firmei relativ la
bunurile A1,A2,A3.
Profiturile pe unitatea de produs sunt estimate în momentul de faţă la 3, 4 respectiv 2 unităţi
monetare (u.m.). Notând cu x1, x2, x3 cantităţile în care bunurile A1, A2, A3 vor fi realizate şi ţinând
seama de ipoteza de liniaritate rezultă următorul model matematic:
 x1  2 x 2  x 3  130
 x  x  2 x  100
 1 2 3

( P) 2 x1  x 2  3x 3  140
 x ,x ,x  0
 1 2 3

max f  3x1  4 x 2  2 x 3
Aducem problema (P) la forma standard prin introducerea variabilelor de abatere x4, x5, x6 .
Reamintim conţinutul economic al noilor variabile. Deoarece expresia x1 + 2x2 + x3 din membrul
stâng al primei restricţii reprezintă cantitatea din resursa R1 necesară pentru realizarea combinaţiei
de bunuri (x1, x2, x3) iar termenul liber 130 este cantitatea disponibilă din aceeaşi resursă, urmează că
diferenţa 130 - (x1 + 2x2 + x3), ce defineşte valoarea variabilei de abatere x4, va semnifica tocmai
cantitatea din R1 nefolosită. Analog, x5 şi x6 vor reprezenta cantităţile din R2 şi R3 neutilizate.
Aplicăm algoritmul simplex plecând de la baza unitară de start E = A4,A5,A6:

3 4 2 0 0 0
CB B VV A1 A2 A3 A4 A6 A6
B
0 A4 130 1 2 1 1 0 0
0 A5 100 1 1 2 0 1 0
0 A6 140 2 1 3 0 0 1
f 0 -3 -4 -2 * * *
75

4 A2 65 1/2 1 1/2 1/2 0 0


0 A5 35 1/2 0 3/2 -1/2 1 0
0 A6 75 3/2 0 5/2 -1/2 0 1
f 260 -1 * 0 2 * *
4 A2 40 0 1 -1/3 2/3 0 -1/3
0 A5 10 0 0 2/3 -1/3 1 -1/3
3 A1 50 1 0 5/3 -1/3 0 2/3
f 310 * * 5/3 5/3 * 2/3
Tabelele 6.1.2 - 6.1.4

Pe baza informaţiilor numerice cuprinse în tabelul 6.1.4 al soluţiei optime echipa C.O. a formulat
următoarele concluzii:
 Profitul maxim pe care firma îl poate obţine luând în calcul numai datele prezentate este
de 310 u.m. Această valoare reprezintă limita superioară a posibilităţilor actuale şi s-ar obţine dacă
nu ar exista nici un fel de probleme în legătură cu procurarea altor resurse, cu situaţia vânzărilor şi
în general cu tot ce ţine de actul complex al aprovizionării, producţiei şi desfacerii. Marja de
manevră a conducerii este limitată nu numai de plafoanele resurselor considerate ci şi de o mulţime
de alţi factori (unii controlabili alţii nu) astfel că în realitate profitul este mai mic. Totuşi cifra
obţinută trebuie considerată ca o valoare de referinţă în raport cu care este necesar să fie evaluate
toate celelalte decizii privind producţia.
 În contextul dat, combinaţia optimă de bunuri se compune din:
x1* = 50 unităţi din A1 şi x2* = 40 unităţi din A2
Din punct de vedere economic, neincluderea produsului A3 in combinaţia optimă se justifică astfel
(vezi raţionamentul din secţiunea.7):
Notând cu B baza optimă A2,A5,A1 din tabelul 6.1.4 rezultă:

A 3  BA 3   13 A 2  23 A 5  53 A1

Se conchide că producerea unei unităţi din A3 ar implica creşterea producţiei din A2 cu 1/3 unităţi şi
diminuarea producţiei din A1 cu 5/3 unităţi. Variaţia profitului are expresia:

2  (  13  4  23  0  53  3)   53 u. m.  c3

Prin urmare profitul total ar scădea cu 5/3 u.m. la fiecare unitate din A3 inclusă în programul de
fabricaţie. în consecinţă A3 nu este rentabil a fi realizat dacă se are în vedere în exclusivitate criteriul
de performanţă ales. După cum vom vedea în continuare, situaţia produsului A3 se va schimba în
raport cu alte criterii de evaluare.
 Resursele R1 şi R3 sunt prevăzute a se consuma în întregime deoarece în soluţia optimă
x 4  x 6  0 . Din resursa R2 rămân nefolosite x5  10 unităţi. Cum aceste consideraţii premerg
 

definitivarea programului de fabricaţie, analiza modului de utilizare a resursei R2 poate fi continuată


în mai multe direcţii. Astfel, conducerea firmei ar putea decide utilizarea celor 10 unităţi în alte
activităţi productive care nu au fost luate în considerare. Alternativ, se poate impune condiţia
utilizării integrale a resursei R2 (vezi secţiunea următoare).
În fine, o a treia cale ar fi suplimentarea disponibilelor din R1 şi R3 în scopul utilizării mai
bune a resursei R2, fireşte în ipoteza că acest lucru este posibil şi că structura sortimentală de
producţie găsită este în concordanţă cu opţiunile firmei. Analiza acestui scenariu ne va prilejui o
interesantă aplicare a teoriei dualităţii. Într-adevăr, preţurile duale optime ale celor trei resurse sunt
76 I. PROGRAMARE LINIARA

u1  53 , u2  0 , u3  23 (vezi exemplul 4.4.2) şi ele arată cu cât creşte profitul maxim la o
suplimentare cu o unitate a disponibilului acestora. Aşa stând lucrurile, conducerea firmei ar fi mai
interesată să mărească disponibilul din R1 decât pe cel din R3 dar nici o creştere combinată nu poate
fi exclusă din start. Să notăm cu b1 şi b3 cantităţile suplimentare din resursele R1, R3 pe care firma
ar putea să le direcţioneze către producerea bunurilor A1, A2, A3. Noul vector al disponibilului ar fi:
130   b1  130  b1 
     
b'   100   100   0   b   b
140   b3  140  b3 
astfel că soluţia asociată bazei B devine:
x  40  2 3 0  13   b 
 2     1 
x ' B   x   B  1b'  B  1b  B  1 b  10    13 1  13   0  
 x5  50  1 2   b 
 1   3 0 3   3 
40  2  b  1  b 
 3 1 3 3
 10   b  1  b 
 1
3 1 3 3
 1 2 
50  3  b1  3  b3 
Menţinerea structurii sortimentale optime actuale înseamnă:
 2  b  1  b  40
 3 1 3 3
B 
x '  0   1  b  1  b  10
3 1 3 3
 1 2
 3  b1  3  b3  50
Variaţia valorii (optime) a funcţiei obiectiv la modificările survenite este dată de formula:
 f  c B x' B  c B x B  c B ( B  1b  B  1 b)  c B B  1b  c B B  1 b  u b 
 5  b  2  b3
3 1 3
Maximizând f pe domeniul determinat de inegalităţile precedente se găseşte (fie grafic fie cu
ajutorul algoritmului simplex):
( b1)* = 30 ( b3)* = 0  (max)f = 50
Recapitulând, dacă vectorul disponibilului ar fi:
130  30 160
b   100   100
   
 140  0  140
atunci resursele ar fi în întregime consumate, combinaţia optimă de bunuri ar fi:

x1  50  13  30  40 unităţi din A1 , x 2  40  23  30  60 unităţi din A2 , x 3  0

iar profitul maxim ar avea valoarea 310 + 50 =360 u.m.


 Să presupunem acum că firma hotărăşte să păstreze pentru mai multe perioade (luni)
viitoare actuala structură sortimentală în cadrul căreia produce numai bunurile A1 şi A2. Pe parcurs
însă pot interveni modificări ale profiturilor unitare sau schimbări de la o lună la alta în disponibilele
resurselor (urmare a unor modificări în structura costurilor de producţie, scăderi şi/sau creşteri de
preţuri pe piaţa de desfacere, schimbări în structura programelor de aprovizionare cauzate de
modificarea preţurilor materiilor prime la furnizori etc.).
77

În această situaţie conducerea este interesată în a şti între ce limite poate varia profitul unui
produs sau disponibilul unei resurse astfel încât actuala structură a producţiei să se menţină.
Să considerăm profitul unitar al bunului A1 a cărui valoare luată în calculele anterioare este
3u.m. Recalculăm costurile reduse c3 ,c4 şi c6 înlocuind 3 cu profitul variabil c1 (vezi tabelul
6.1.4) şi impunem condiţia de optimalitate cj  0. Obţinem:
c3  (  13 )  4  23  0  53  c1  2  53  c1  103  0
c4  2
3  4  (  13 )  0  (  13 )  c1  0  83  13  c1  0
c6  (  13 )  4  (  13 )  0  2
3  c1  0  23  c1  43  0
din care rezultă intervalul de stabilitate: 2  c1  8. Deci atât timp cât profitul pe unitatea de produs
A1 se menţine între 2 şi 8 u.m. programul de producţie optim rămâne neschimbat:

x1  50 x 2  40 x 3  0

numai profitul total maxim variază: max f = 50  c1 +4  40 = 160 + 50  c1.


Pentru profiturile unitare ale bunurilor A2 şi A3 intervalele de stabilitate corespunzătoare sunt
2  c2  6 , c3  113 .
3

Recalculăm valorile variabilelor bazice x2, x5 şi x1 reunite în vectorul xB, înlocuind


disponibilul actual al resursei R1 de 130 unităţi cu disponibilul variabil b1. Condiţia de optimalitate
xB  0 conduce la inegalităţile:
 x2   b1   23 0  13   b1   3 b1  3
2 140

 x   B 1  100   1 1  1  100   1 b  100  140   0
 5    3 3    3 1 3 

 x1  140  3 0 3  140   3 b1  3


1 2 1 280 


b1  70 , b1  160 , b1  280

din care rezultă intervalul de stabilitate: 70  b1  160. în concluzie, dacă firma menţine disponibilul
resursei R1 între 70 şi 160 unităţi în combinaţia optimă vor intra numai bunurile A1 şi A2 dar în
cantităţile variabile:

x1  280
3  13 b1 x 2  23 b1  140
3

profitul maxim fiind şi el variabil:

(max) f  3  ( 280
3  3 b1 )  4  ( 3 b1  3 )  3  3 b1
1 2 140 280 5

Încă o dată remarcăm faptul că viteza de creştere a profitului este dată tocmai de preţul dual optim
u1  53 u.m. al resursei R1.

Pentru resursele R2 şi R3 intervalele de stabilitate corespunzătoare sunt b2  90 respectiv 65  b3


 170.
78 I. PROGRAMARE LINIARA
CURSUL 11

3.6.2. Postoptimizare: A) cazul modificării unor coeficienţi din funcţia obiectiv (c)

Cazuistica postoptimizării cuprinde:


A) Cazul în care se modifică unii coeficienţi din funcţia obiectiv (c);
B) Cazul în care modificările se produc în vectorul termenilor liberi (b);
C) Introducerea unei noi activităţi în model;
D) Adăugarea unei noi restricţii;
E) Modificarea unei coloane din matricea coeficienţilor.
Concret, în cadrul cursului vom aborda cazurile A, B şi D. Pentru cazurile C şi E, a se vedea
www.asecib.ase.ro – Cursuri on-line – 9. Nica V. şi colectiv, Cercetări Operaţionale I.

A) cazul în care se modifică unii coeficienţi din funcţia obiectiv (c)

Fie: Problema originală Problema modificată


 Ax  b  Ax  b
 
( P)  x  0 ( P' )  x  0
(max) f  cx (max) f '  c' x
 

unde c'  (c1' , c2' ,..., cn' ) este vectorul noilor coeficienţi ai funcţiei obiectiv. Să presupunem că (P) a
fost deja rezolvată cu ajutorul algoritmului simplex şi că soluţia optimă x* este asociată unei baze B.
Se remarcă faptul că (P) şi (P') au aceeaşi mulţime de soluţii admisibile. În consecinţă, x* este o
soluţie de bază admisibilă pentru programul modificat (P'). Pentru a testa optimalitatea soluţiei x* în
raport cu noua funcţie obiectiv se recalculează costurile reduse:

c j  c' B B 1 A j  c j , j J
Dacă toţi c'j  0 , j J , x* este soluţie optimă şi pentru (P'). În caz contrar, rezolvarea programului
(P') se face cu ajutorul algoritmului simplex primal, luând x* ca soluţie de start.

Exemplul 6.2.1 În studiul, de caz din secţiunea 6.1 am determinat intervalele de stabilitate
ale soluţiei optime x* în raport cu fiecare din coeficienţii c1, c2, c3 ai funcţiei obiectiv. Deoarece
valorile actuale 3, 4, 2 u.m. ale acestor coeficienţi sunt situate în interiorul intervalelor de stabilitate
corespunzătoare, conchidem că soluţia x* este stabilă în raport cu fiecare din ei şi chiar cu ansamblul
lor: variaţii "mici" (de câteva procente, să zicem) ale profiturilor unitare în jurul valorilor actuale nu
modifică soluţia optimă găsită şi implică doar o variaţie "mică" a profitului total.
Pentru exemplificare, să presupunem că profiturile bunurilor A1 şi A3 cresc cu 5% iar profitul
bunului A2 scade cu 10%:

c1  3  100
5
 3  315
, c 2  4  100
10
 4  3,6 c3  2  100
5
 2  2,1

Înlocuind în tabelul 6.1.4 coeficienţii c1 = 3 , c2 = 4 , c3 = 2 cu coeficienţii de mai sus şi recalculând


costurile reduse rezultă tabelul:
3,15 3,6 2,1 0 0 0
CB B VVB A 1
A 2
A 3
A 4
A 5
A6
3,6 A2 40 0 1 -1/3 2/3 0 -1/3
0 A5 10 0 0 2/3 -1/3 1 -1/3
1
3,15 A 50 1 0 5/3 -1/3 0 2/3
f 301,5 * * 1,95 1,35 * 0,9
Tabelul 6.2.1
79

Prin urmare efectul combinat al schimbărilor survenite în structura vectorului profiturilor unitare se
materializează doar într-o reducere a profitului total cu 310 - 301,5 = 8,5 u.m. ceea ce reprezintă
2,74% din valoarea iniţială!
Altfel stau lucrurile dacă, de exemplu, profitul unitar al bunului A1 ar fi de 2 u.m. în loc de 3
u.m. Ne reamintim că 2 este extremitatea stângă a intervalului de stabilitate al soluţiei x* în raport cu
c1 = 3! Introducem aceste modificări în tabelul 6.1.4 obţinând tabelul 6.2.2.
2 4 2 0 0 0
CB B VVB A1 A2 A3 A4 A5 A6
4 A2 40 0 1 -1/3 2/3 0 -1/3
0 A5 10 0 0 2/3 -1/3 1 -1/3
2 A1 50 1 0 5/3 -1/3 0 2/3
f 260 * * 0 2 * 0
Tabelul 6.2.2

Se observă că c3 = 0 , c6 = 0 de unde tragem concluzia că problema are mai multe soluţii optime
de bază (vezi secţiunea 4.2). Acestea se obţin introducând succesiv în baza curentă coloanele A3 şi
A6 (vezi tabelele 6.2.3 - 6.2.4).
2 4 2 0 0 0
CB B VVB A1 A2 A3 A4 A 5
A6
4 A2 45 0 1 0 1/2 1/2 -1/2
3
2 A 15 0 0 1 -1/2 3/2 -1/2
2 A1 25 1 0 0 3/2 -5/2 3/2
f 260 * * * 2 0 0
Tabelul 6.2.3
2 4 2 0 0 0
CB B VVB A1 A2 A3 A4 A5 A6
4 A2 65 1/2 1 1/2 1/2 0 0
0 A5 35 1/2 0 3/2 -1/2 1 0
0 A6 75 3/2 0 5/2 -1/2 0 1
f 260 0 * 0 2 * *
Tabelul 6.2.4

Celelalte două soluţii optime de bază au componentele:

x1  25 , x2  45 , x3  15 (val. var. de abatere: x4  x5  x6  0 )

respectiv:

x1  0, x2  65, x3  0 (val. var. de abatere: x4  0, x5  35, x6  75 )

Ne reamintim că în această situaţie există o infinitate de soluţii optime de forma:

x   1 x    2 x    3 x  cu 1 , 2 , 3  0 şi 1 + 2 + 3 = 1

(combinaţii convexe ale soluţiilor optime de bază),în care:

x1 = 50 1 + 25 2 x4 = 0
x2 = 40 1 + 45 2 + 653 x5 = 10 1 + 35 3
x3 = 15 2 x6 = 75 3
80 I. PROGRAMARE LINIARA

Dacă se ia de exemplu: 1 = 3/5 , 2 = 1/5 , 3 = 1/5 se găseşte soluţia:


x1 = 35 , x2 = 46 , x3 = 3 ( x4 = 0 , x5 = 13 , x6 = 15 )
care, deşi optimă, nu este o soluţie de bază având cinci componente nenule, cu două mai mult decât
numărul restricţiilor!
Să ne întoarcem la problema stabilităţii soluţiei x* în situaţia micşorării profitului bunului A1
la 2 u.m.
Urmărind datele din tabelele 6.2.3 - 6.2.4 se constată că o nouă scădere oricât de mică a
profitului bunului A1 face ca soluţiile x** şi x** să nu mai fie optime! Soluţia care maximizează
profitul este x*** şi ea prevede producerea în exclusivitate a bunului A2 spre deosebire de soluţiile
x* şi x** care au o structură sortimentală mai largă! Astfel o mică scădere a profitului bunului A1
sub valoarea actuală de 2 u.m. antrenează schimbări chiar în structura sortimentală a programului de
producţie! În consecinţă, soluţia x* este instabilă în raport cu eventualele oscilaţii ale profitului
bunului A1 în jurul valorii de 2 u.m.

Exemplul 6.2.2 În studiul de caz din secţiunea 6.1 a fost avansată o propunere de program de
producţie care urmărea maximizarea profitului total. În prezent, firma vinde produsele A1, A2, A3 la
preţurile 12, 18 respectiv 16 u.m. astfel că profitul maxim de 310 u.m. ar corespunde unui venit total
de:
50  12 + 40  18 = 1320 u.m.
310
În varianta construită rata profitului ar fi de  100  23,5% . Se pune firesc întrebarea dacă
1320
propunerea de plan elaborată în 6.1 maximizează venitul total al firmei, bineînţeles în ipotezele date
adică mărginindu-ne numai la resursele R1, R2, R3 şi la bunurile A1, A2, A3 ! Pentru a răspunde la
întrebare, în tabelul simplex optim 6.1.4 schimbăm coeficienţii c1 = 3, c2 = 4, c3 = 2 ai funcţiei
"profit total" f cu coeficienţii c1  12 , c2  18 , c3  16 ai funcţiei "venit total" f' şi recalculăm
costurile reduse c 3 , c 4 , c 6 . Găsim: c3  2 , c4  8 , c6  2 . Deoarece c3  0 , soluţia care
maximizează profitul total nu conduce şi la un venit maxim: introducerea bunului A3 în combinaţia
actuală ar majora venitul actual de 1320 u.m. cu 2 u.m. pe unitatea de produs A3!
Aplicând algoritmul simplex primal, într-o singură iteraţie se obţine soluţia care
maximizează venitul total (vezi tabelele 6.2.5 - 6.2.6):

x1  25 u. din A1 , x 2  35 u. din A2 , x 3  15 u. din A3

La un venit maxim de 1350 u.m. profitul firmei ar fi de: 25  3 + 35  4 + 15  2 = 245 u.m.


iar rata profitului ar fi în acest caz de numai 18,1%.
12 18 16 0 0 0
CB B VVB A1 A2 A3 A 4
A 5
A6
18 A2 40 0 1 -1/3 2/3 0 -1/3
5
0 A 10 0 0 2/3 -1/3 1 -1/3
1
12 A 50 1 0 5/3 -1/3 0 2/3
f' 1320 * * -2 8 * 2
2
18 A 35 0 1 0 1/2 1/2 -1/2
3
16 A 15 0 0 1 -1/2 3/2 -1/2
12 A1 25 1 0 0 1/2 -5/2 3/2
f' 1350 * * * 7 3 1
Tabelele 6.2.5 - 6.2.6
81

Deşi rata profitului a scăzut cu 23,5 - 18,1 = 5,4% noua soluţie are o serie de calităţi: asigură
o producţie diversificată întrucât se produc toate bunurile şi utilizează integral resursele disponibile.
Să observăm de asemenea că preţurile duale optime ale celor trei resurse s-au modificat:

u1  7 , u2  3 , u3  1 faţă de u1  53 , u2  0 , u3  2


3

Se justifică astfel afirmaţia din secţiunea 2.4 potrivit căreia preţurile duale nu reflectă
valoarea intrinsecă a resurselor ci arată măsura implicării acestora în procesul de optimizare a
obiectivului urmărit.

Exemplul 6.2.3 Am văzut că în soluţia care maximiza profitul, resursa R2 nu era folosită în
întregime. Se poate pune problema determinării unei soluţii care să maximizeze profitul cu condiţia
utilizării integrale a acestei resurse. Pentru a obţine un răspuns prin reoptimizare, transformăm
variabila de abatere x5 în variabilă artificială înlocuind în funcţia obiectiv coeficientul său c5 = 0 cu o
constantă negativă -M << 0. Introducem acest coeficient în tabelul 6.1.4 şi aplicăm algoritmul
simplex primal. Invităm cititorul să facă calculele necesare anunţându-l că va trebui să obţină soluţia
care maximizează venitul firmei.

3.6.3. Postoptimizare: B) cazul modificărilor în vectorul termenilor liberi (b)

Problema originală Problema modificată


 Ax  b  Ax  b'
 
( P )x  0 ( P' )  x  0
(max) f  cx (max) f  cx
 
 
T
unde b'  b1' , b2' ,..., bm' este noul vector de termeni liberi. Se observă uşor că (P) şi (P') au aceleaşi
baze dual admisibile. Fie B o bază optimală a programului (P). Calculăm soluţia x' a programului
modificat (P'), asociată bazei B:
x'B=B-1b' x'S=0

Cum am remarcat deja, x' este o soluţie dual admisibilă pentru (P'). Dacă x'B  0 atunci x' este şi
admisibilă şi deci optimă. Altminteri, rezolvarea problemei (P') se va face cu ajutorul algoritmului
simplex dual, luând x' ca soluţie de start.

3.6.4. Postoptimizare: D) adăugarea unei noi restricţii

Problema originală Problema modificată


a11 x1  a12 x 2 ... a1n x n  b1
a11 x1  a12 x 2 ... a1n x n  b1 

a x  a x  ... a x  b a 21 x1  a 22 x 2 ... a 2 n x n  b2
 21 1 22 2 2 n n 2
.........................................
........................................ 
( P)  ( P ' ) a m1 x1  a m2 x 2 ... a mn x n  bm
a m1 x1  a m2 x 2 ... a mn x n  bm   x   x ...  x  
 x1  0, x 2  0,..., x n  0  1 1 2 2 n n

  x1  0, x 2  0,..., x n  0
(max) f  c1 x1  c2 x 2 ... cn x n 
(max) f  c1 x1  c2 x 2 ... cn x n
Fie B baza optimă a programului (P) găsită prin aplicarea algoritmului simplex. În consecinţă, forma
explicită a problemei (P) în raport cu baza B:
82 I. PROGRAMARE LINIARA

 xi   a ij x j  b i , i  I
 j J

( PB )  xi  0, i  I ; x j  0, j  J (6.5.1)

 f  j cjxj  f
 J

este disponibilă, constantele alcătuitoare formând tabelul simplex optim. Dacă soluţia optimă x* a
programului (P) verifică restricţia suplimentară atunci x* este soluţia optimă şi a problemei extinse.
În caz contrar, adică atunci când :

 1 x1*   2 x 2* ... n x n*   (6.5.2)

procedăm după cum urmează:


 Transformăm inegalitatea suplimentară în egalitate adăugând variabila de abatere xn+1:

 1x1   2 x2 ... n xn  xn 1   (6.5.3)

 Folosind forma explicită (6.5.1.) eliminăm din (6.5.3.) variabilele bazice xi , iI (în caz că
apar). Obţinem o egalitate de forma:

  j x j  x n 1   (6.5.4.)
j J

Se constată imediat că  este negativ deoarece :


n
      j x*j  0 conform (6.5.2.)
j 1

Adăugând (6.5.4.) la (6.5.1) obţinem forma explicită a programului extins P' în raport cu baza B'
formată din coloanele bazei B (coloane extinse cu coeficienţii corespunzători din restricţia
suplimentară ! ) plus coloana unitară:
An+1=(0,0,...,o,1)TRn+1
Soluţia asociată acestei baze:

xi=bi ,iI ; xn+1=0 ; xj=0 , jJ (6.5.5)


nu este admisibilă dar verifică criteriul de optimalitate, altfel spus este dual admisibilă. În
consecinţă, pentru rezolvarea problemei extinse (P') vom aplica algoritmul simplex dual, pornind de
la soluţia (6.5.5).
Exemplul 6.5.1 În studiul de caz din secţiunea 6.1, la elaborarea programului de producţie
care maximizează profitul total, au fost avute în vedere numai resursele R1, R2, R3 . Dacă în
procesul de producţie sunt folosite şi alte resurse, se naşte întrebarea dacă nu cumva soluţia găsită
implică consumuri ce depăşesc disponibilul din acestea. Pentru exemplificare, să considerăm o a
patra resursă R4 al cărei stoc disponibil b4 nu este deocamdată stabilit. Pentru cele trei bunuri A1, A2,
A3 consumurile specifice din R4 sunt de 2, 2 respectiv 1 unităţi. Condiţia de încadrare a consumului
din R4 în disponibil conduce la inegalitatea:
2 x1  2 x 2  x 3  b4 (6.5.6)

Pentru ca soluţia care maximizează profitul total:

x1  50 x 2  40 x 3  0 (6.5.7)

să satisfacă restricţia de mai sus este necesar ca:


83

2  50 + 2  40 +1 0  b4  b4  180
Prin urmare dacă firma reuşeşte să asigure un disponibil de cel puţin 180 unităţi din R4, programul
(6.5.7) nu suferă modificări. Dacă b4 < 180, soluţia (6.5.7) nu mai satisface restricţia suplimentară
(6.5.6).Să vedem ce se întâmplă în acest caz!
Transformăm (6.5.6) în egalitate, adăugând variabila de abatere x7:
2 x1  2 x 2  x 3  x 7  b4 (6.5.8)

Exprimăm variabilele bazice x1 , x2 în funcţie de cele nebazice folosind datele din tabelul 6.1.4:

40  x2  13 x 3  23 x 4  13 x6  x 2  40  13 x3  23 x 4  13 x 6
(6.5.9)
50  x1  53 x3  13 x 4  23 x 6  x1  50  53 x 3  13 x4  23 x 6

Eliminând x1 , x2 din (6.5.8) se găseşte în final:

 53 x 3  23 x 4  23 x 6  x 7  b4  180 (6.5.10)

Introducem coeficienţii egalităţii (6.5.10) în tabelul simplex 6.1.4:


3 4 2 0 0 0 0
CB B VVB A1 A2 A3 A4 A5 A6 A7
4 A2 40 0 1 -1/3 2/3 0 -1/3 0
0 A5 10 0 0 2/3 -1/3 1 -1/3 0
3 A1 50 1 0 5/3 -1/3 0 2/3 0
0 A7 b4 - 180 0 0 -5/3 -2/3 0 -2/3 1
f 310 * * 5/3 5/3 * 2/3 *
Tabelul 6.5.1

Conform instrucţiunilor algoritmului simplex dual, A7 părăseşte baza curentă. Raportând costurile
reduse cj la elementele corespunzătoare, dar negative din linia "A7" a tabelului 6.5.1 găsim că A3
sau A6 trebuie să intre în bază pentru a asigura dual admisibilitatea noii soluţii (adică satisfacerea
testului de optimalitate). Din punct de vedere economic,se impune introducerea lui A3 pentru că
aceasta ar însemna includerea bunului A3 în programul de fabricaţie, bineînţeles în ipoteza că noua
soluţie ar fi şi primal admisibilă!
Înlocuind A7 cu A3 în baza curentă obţinem soluţia dual admisibilă din tabelul 6.5.2 (pivotul
transformării este deja marcat în tabelul 6.5.1):

CB B VVB A1 A2 A3 A4 A5 A6 A7


4 A2 76 - (1/5)b4 0 1 0 4/5 0 -1/5 -1/5
0 A5 (2/5)b4 - 62 0 0 0 -3/5 1 -3/5 2/5
1
3 A b4 - 180 1 0 0 -1 0 0 1
3
2 A 108 - 0 0 1 2/5 0 2/5 -3/5
(3/5)b4
f 130 + b4 * * * 1 * 0 1
Tabelul 6.5.2

Condiţia de admisibilitate primală conduce la inegalităţile:


84 I. PROGRAMARE LINIARA

76  15 b4  0  b4  380 

5 b4  62  0  b4  155
2

  155  b4  180 (6.5.11)


b4  130  0  b4  130 
108  53 b4  0  b4  180 
În concluzie, dacă b4 satisface (6.5.11) atunci soluţia din tabelul 6.5.2 adică:

x1  b4  130 x 2  76  15 b4 x 3  108  53 b4 (6.5.12)

este optimă, aducând firmei, în caz de realizare un profit de 130 + b4 u.m. Toate resursele sunt
prevăzute a fi utilizate integral cu excepţia lui R2 din care rămîn x5  25 b4  62 unităţi.
Observăm că dacă b4 = 155 unităţi din R4, toate resursele sunt folosite, programul de
fabricaţie (6.5.12) va avea componentele:
x1 = 25 x2 = 45 x3 = 15
şi profitul corespunzător ar fi de 130 +155 = 285 u.m.
Pe măsură ce b4 se apropie de valoarea maximă 180 creşte şi profitul către valoarea 130 +
180 = 310 u.m. în acelaşi timp cantitatea nefolosit ă din R2 se măreşte apropiindu-se de valoarea 10
iar producţia bunului A3 tinde către 0. Pentru b4 = 180 regăsim soluţia (6.5.7).
Exemplul 6.5.2 Reluăm problema maximizării profitului firmei X. Care va fi programul de
producţie dacă se impune cerinţa ca cel puţin 8% din venitul firmei să fie realizat din desfacerea
bunului A3?
Folosind preţurile anunţate în exemplul 6.2.2 noua condiţie se formalizează prin inegalitatea:

16 x 3  8
100 (12 x1  18 x 2  16 x 3 )  6 x1  9 x 2  92 x 3  0 (6.5.13)

Introducem variabila de abatere x7 şi eliminăm variabilele bazice x1, x2 folosind relaţiile (6.5.9).
Rezultă egalitatea:
99 x 3  4 x 4  x 6  x 7  660
ai cărei coeficienţi se ataşează tabelului simplex 6.1.4, după care se aplică algoritmul simplex dual
(vezi tabelele 6.5.3 - 6.5.4)
Într-o singură iteraţie se obţine programul optim:

x1**  38 89 x 2**  42 29 x 3**  6 23 (max) f  298 89 (6.5.14)


(valorile variabilelor de abatere: x **
4 x **
6 0,x **
5 5 )
4
9

3 4 2 0 0 0 0
CB B VVB A1 A2 A3 A4 A5 A6 A7
4 A2 40 0 1 -1/3 2/3 0 -1/3 0
0 A5 10 0 0 2/3 -1/3 1 -1/3 0
3 A1 50 1 0 5/3 -1/3 0 2/3 0
0 A7 -660 0 0 -99 -4 0 -1 1
f 310 * * 5/3 5/3 * 2/3 *
A2 380/9
A5 50/9
A1 350/9
A3 20/3
f 2690/9
Tabelele 6.5.3 - 6.5.4
85

Acest exemplu ne oferă ocazia de a semnala şi discuta un aspect nou, care nu a fost avut în
vedere în consideraţiile teoretice dezvoltate până acum. Deoarece firma X produce aparatură
electronică este de presupus că bunurile A1, A2, A3 se măsoară în unităţi indivizibile ca de exemplu
în bucăţi. Dacă bunul A1 este în fapt un calculator, a produce o fracţie din el este lipsit de sens; ori
se fabrică un întreg calculator ori nu. Prin urmare în orice soluţie admisibilă valorile variabilelor x1,
x2, x3 trebuie să fie nu numai nenegative dar şi întregi! Iată de ce soluţia (6.5.14) nu poate fi însuşită.
Vom proceda la rotunjirea componentelor fracţionare în ideea că soluţia optimă întreagă se
află în "apropierea" soluţiei optime "fracţionare". Operaţia de rotunjire trebuie astfel făcută încât
rezultatul să fie o soluţie admisibilă adică să verifice restricţiile problemei. Este firesc să acceptăm
soluţia obţinută în acest mod cel puţin ca soluţie suboptimală - în unele contexte practice acest lucru
este perfect justificat de faptul că valorile permise variabilelor sunt suficient de mari astfel încât
efectul rotunjirii să fie neglijabil.
Rotunjind superior x1** şi inferior x 2** , x 3** se găseşte combinaţia:
x1  39 x 2  42 x3  6
care se încadrează în disponibilele date dar nu verifică restricţia suplimentară (6.5.13), deoarece
valoarea producţiei din A3 reprezintă numai 7,3% din valoarea întregii producţii.
Rotunjind inferior x1** , x 2** şi superior x 3** se obţine o soluţie admisibilă întreagă:
x1  38 x 2  42 x3  7 f ( x )  296 u.m.
care nu este optimă. Cea mai bună soluţie întreagă este:
x10  37 x 20  43 x 30  7 f ( x 0 )  297 u.m. (6.5.15)
În cadrul acestui program, valoarea producţiei din bunul A3 reprezintă 8,4% din valoarea întregii
producţii. Obţinerea acestei soluţii se face prin aplicarea metodelor specifice Programării Liniare în
Numere Întregi (Curs CO anul 2).

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