Sunteți pe pagina 1din 65

Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

CAPITOLUL 2
PROGRAMAREA LINIARĂ

2.1. Probleme de programare liniară

Orice activitate industrială se desfăşoară în condiţiile existenţei


unor resurse limitate de materii prime şi materiale, de resurse umane, iar
folosirea eficientă, a acestora, conduce la rezultate optime atât din punct
de vedere tehnic cât şi economic.
Modelele de programare matematică şi mai ales modelele de
programare liniară, constituie o clasă specială, atât în teorie cât şi în
practica industrială.
Pentru decizii referitoare la structura optimă de producţie, la
cantitatea ce urmează a se produce, la sortimente, abordarea acestora cu
modele ale programării matematice conduce la rezultate optime.
Programarea matematică reprezintă un instrument deosebit de util
fundamentării deciziilor în practica industrială.

2.1.1. Formularea problemei de programare liniară

Principala problemă cu caracter decizional, cu care se confruntă


producţia o constituie determinarea structurii optime de producţie pe
termen mediu şi scurt printr-o folosire eficientă a resurselor.
Condiţiile în care se desfăşoară activitatea de producţie analizată,
conduc la un sistem de relaţii tip ecuaţii şi inecuaţii ce cuprind variabilele
problemei şi coeficienţii tehnico – economici ce o caracterizează .
Modelul matematic de programare liniară se constituie din
mulţimea de activităţi (operaţii){A1, A2, ..Aj,.. An}, (j=1,...,n) pentru
producerea unei unităţi din produsul Pj (ca rezultat al activităţii Aj),
mulţimea de resurse disponibile materiale, financiare, de capacităţi de
producţie {b1, b2, ... bm}, (i = 1,...,m) precum şi din relaţiile tehnico-
economice dintre acestea.
În practica industrială, legătura dintre activităţi (operaţii) şi
resurse este determinată de procesul tehnologic de fabricaţie
corespunzător realizării produsului.
Elementele aij, (i = 1,...,m; j = 1,...,n) se numesc coeficienţi
tehnico-economici, aceştia fiind constanţi într-un interval de timp
determinat şi arată ce cantitate din resursa bi (i = 1,...,m) se consumă
pentru producerea unei unităţi din produsul Pj.

9
Programare liniară
Toate aceste legături (restricţii) definite de vectorii coloană a(j) se
pot organiza într-o matrice A cu m linii şi n coloane (2.1); fiecare linie se
referă la o resursă bi şi fiecare coloană se referă la o activitate aj.

 a11 .........a1n 
 
A  Mm.n; A= ( ai,j ), i = 1,..,m, j= 1,...,n; A =   (2.1)
 a ..........a 
 m1 mn 

 b1 
 
m
 b2 
b R ,b=   (2.2)
.
 
b 
 m

Notând cu xj (j = 1,...,n) (2.3) programul activităţii aj într-o


perioadă dată şi cu bi cantităţile disponibile din resursele bi, se pot scrie
matematic restricţiile tehnico-economice. Aceste restricţii reprezintă –
restricţiile problemei de programare liniară (2.4).
 x1 
 
x 
x R ,x=  2
n
(2.3)
.
 
x 
 n

 a11 x1  a12 x2  ...  a1n xn  b1


 a 21 x1  a 22 x2  ...  a 2n xn  b2

 (2.4)
 
 a m1 x1  a m2 x2  ...  a mn xn  bm

Fiecare restricţie (inecuaţie de tipul „  ”) cuprinde afirmaţia prin


care cantitatea consumată dintr-o resursă nu poate depăşi volumul
disponibil din resursa respectivă.
Obiectivul studiului îl constituie optimizarea unui anumit rezultat
dependent de aceleaşi variabile ce figurează în restricţii.
Obiectivul este sub forma unei funcţii ale cărei valori maxime sau
minime le căutam şi care se numeşte funcţia obiectiv (scop, eficienţă).
În practica industrială, ea reprezintă criteriul de performanţă
urmărit: maximizarea beneficiului, maximizarea producţiei marfă,
minimizarea costului producţiei, maximizarea gradului de încărcare al
10
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

utilajelor sau minimizarea timpului de staţionare al acestora,


maximizarea veniturilor etc.
Variaţia funcţiei obiectiv arată evoluţia volumului activităţilor,
prin intermediul coeficienţilor c j , ce pot fi costuri unitare în cazul
problemelor de minim, sau profituri unitare pentru probleme de maxim
(2.5).

 c1 
 
c 
cj R, c  Rn c =  2  ; c T  (c1 c2 ...c j ...cn ) (2.5)
.
 
c 
 n

Decizia cu scopul unei eficienţe maxime presupune minimizarea


efortului şi maximizarea rezultatului,
Conceptul de optim se defineşte, în acest caz, ca un program
(soluţie) x Rn care minimizează sau maximizează o funcţie obiectiv şi,
în acelaşi timp, satisface toate restricţiile tehnico-economice.
Presupunând că fiecare coeficient .cj măsoară eficienţa unei
unităţi din rezultatul activităţii Aj, atunci se poate introduce funcţia
obiectiv liniară (2.6) :

z = c1x1 + c2x2 + ... + cnxn (2.6)

Sintetizând toate datele de mai sus, obţinem următorul model


(2.7, 2.8, 2.9)de programare liniară.
Relaţiile (2.7), (2.8) şi (2.9) constituie împreună modelul
matematic al unei probleme de programare liniară, având fiecare un rol
specific:
1. relaţia (2.7), denumită funcţia obiectiv a problemei, evaluează
eficienţa/performanţa fiecărei soluţii (program) x;
n
min(max) z   c j x j (2.7)
x j 1
n
  aij  x j  bi 1i  k
 j n1 (2.8)

  aij  x j  bi k 1 i  l
 j 1
 xj  0 1 j  n (2.9)


11
Programare liniară
n
2. relaţiile (2.8) de tipul  aij  x j  bi reprezintă restricţii ce corelează
j 1
volumul consumului activităţilor cu cel al disponibilului pentru
n
fiecare resursă; iar restricţiile de tipul  aij  x j  bi impun un
j 1
consum peste limitele minimale, sunt restricţii tehnico-economice de
tip calitativ;
3. relaţia (2.9) xj  0 j = 1,...,n, numită condiţia de nenegativitate a
variabilelor, asigură obţinerea unei soluţii realizabile în practica
industrială.
Decizia obţinută cu ajutorul modelului nu poate fi recomandată
nemijlocit pentru realizare, deoarece modelul face abstracţie de o serie de
aspecte ale fenomenului studiat, cele ce au la bază o serie de factori ce nu
pot fi formalizaţi.
În practica industrială programarea liniară oferă soluţii care pot
motiva ştiinţific luarea unor decizii de natură strategică, tactică sau a
unor decizii cu conţinut tehnico – organizatoric.

2.1.2. Forme ale problemei de programare liniară

O problemă de programare liniară este, un caz particular al


problemelor de programare matematică şi, ţinând cont de forma oricărei
funcţii liniare, se poate defini forma generală a problemei de programare
liniară.
Funcţia liniară (2.10), notată cu z reprezintă funcţia obiectiv a
problemei.
Relaţiile (2.11) reprezintă sistemul de restricţii ale problemei, iar
membrul stâng al fiecărei relaţii aste o funcţie liniară în variabilele x1,
x2,…,xn, la fel ca şi funcţia obiectiv.
Problema de programare liniară constă în optimizarea unei funcţii
liniare cu restricţii liniare.

 Forma generală a problemei de programare liniară

min(max) z  c1 x1  c 2 x 2  ...  c n x n (2.10)


 a x  a x  ...a x    b
 11 1 12 2 1n n 1
a
 21 1 x  a x
22 2  ...a 2 x n     b 2
 ......................................................

 a m1 x1  a m 2 x 2  ...a mn x n    bm (2.11)

12
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

unde: c j  R ( j  1, n), aij  R (i  1, m, j  1, n), bi  R (i  1, m)


Din analiza mai multor probleme de programare liniara
deducem că într-o astfel de problema pot apare restricţii scrise sub forma
de inegalităţi sau egalităţi, iar criteriul de optimizare ales impune în unele
cazuri maximizarea iar în alte cazuri minimizarea funcţiei obiectiv.
Rezolvarea problemei de programare liniară presupune
determinarea valorilor variabilelor xi, care satisfac restricţiile şi
optimizează funcţia obiectiv a problemei.

 Forma standard a problemei de programare liniară

O problema de programare liniară este dată sub formă standard


dacă toate restricţiile sale sunt date sub formă de ecuaţii (egalităţi) şi
tuturor variabilelor li se impun condiţii de nenegativitate.
Problema de programare liniară dată în formă standard se scrie în
mod explicit (2.12):

 n
 max(min) z   c j xi
 j 1
 n
  aij x j  bi 1 i  m (2.12)
 j 1
 xj  0 1 j  n

Problema de programare liniară în formă standard poate fi scrisă


şi sub formă matricială (2.13) :

min(max) c T x  c, x  R n
 
 Ax  b , unde  A  M ( R ) m,n (2.13)
 x0  b  Rm
 

unde cT reprezintă componentele matricei c transpusă.


Sistemul de restricţii liniare ( Ax=b ) poate fi un sistem
compatibil, compatibil unic determinat sau nedeterminat de m ecuaţii şi n
necunoscute. Pentru ca problema de optimizare să aibă sens, numărul de
ecuaţii trebuie să fie mai mic decât numărul de necunoscute
(m<n)(sistem compatibil nedeterminat).

13
Programare liniară
 Forma canonică a problemei de programare liniară

O restricţie a unei probleme de programare liniară se numeşte


concordantă (neconcordantă) dacă pentru o inegalitate de tip “ " " "
funcţia obiectiv este minimizată sau respectiv pentru o inegalitate de tip
" " " " funcţia obiectiv este maximizată .
O problemă de programare liniară este data sub formă canonică
dacă toate restricţiile sale sunt concordante şi toate variabilele sunt
supuse condiţiei de nenegativitate.
Problema de programare liniară dată în formă canonică se scrie în
mod explicit (2.14):

 n
 min(max) z   c j xi
 j 1
 n

  aij x j  ()bi 1 i  m (2.14)
 j 1
 xj  0 1 j  n



Problema de programare liniară în formă canonică poate fi scrisă
şi sub formă matricială (2.15) :

min(max) c T x C , x  R n
 
 Ax  ()b unde  A  M m,n (2.15)
 x0  b  Rm
 

Orice problemă de programare liniară în formă generală poate fi


adusă la forma standard sau canonică cu ajutorul unor transformări
elementare efectuate asupra operatorului aplicat funcţiei obiectiv
restricţiilor şi variabilelor:

a) o problemă de minimizare în formă matricială se poate transforma


într-o problemă de maximizare şi invers, schimbând semnul
coeficienţilor din funcţia obiectiv, astfel:

max c T x   min(c)T x ; min c T x   max( c)T x (2.16)

14
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

b) o variabilă x arbitrară (variabilă căreia nu i se impune restricţie de


semn) se poate înlocui cu două variabile nenegative x1, x 2 , prin
relaţia :

x  x1  x2 , unde x1 , x2  0 (2.17)

c) o variabilă x supusă condiţiei de nepozitivitate ( x  0 ) se transformă


într-o variabilă nenegativă prin substituţia

x1   x, unde x1  0 (2.18)

d) Restricţiile de tip inecuaţie se transformă în restricţii de tip ecuaţii


ţinând cont de următoarele :

a T x  b a T x  y  b a T x  b a T x  y  b
   şi    (2.19)
 x  0  x , y  0  x  0  x , y  0
unde y se numeşte variabilă ecart.
Variabilele ecart nu apar în funcţia obiectiv sau astfel spus apar în
funcţia obiectiv dar cu coeficienţi nuli:

e e
c j  0 (unde c j  coeficienţi ai variabilelor ecart).

e) sensul unei inegalităţi se schimbă prin înmulţirea cu “–1“.

În aplicaţiile practice apar frecvent situaţii în care modelul


conţine simultan restricţii de toate tipurile (concordante, neconcordante,
egalităţi), problema fiind dată în formă generală, iar rezolvarea ei poate fi
abordată fără a restrânge generalitate.

Exemplul 2.1

Să se scrie formele echivalente ale problemei de programare


liniară:

Problema dată este în forma generală. Pe baza transformărilor


echivalente vom construi formele echivalente ale problemei iniţiale.
Deoarece variabila x3 nu are restricţii de semn, o vom înlocui, cu
diferenţa a două variabile

15
Programare liniară

max 3 x1  x 2  2 x3 
3 x  x  4,
 1 2 (1)
 x1  5 x 2  2 x3  3, (2)

 x1  4 x3  2, (3)
 2 x1  3 x 2  2 x 3  0 , (4 )

 x1 , x 2  0, x3 , oarecare

pozitive: x3 = x4 – x5. Pentru ca problema să aibă forma standard, toate


restricţiile trebuie să fie egalităţi, de aceea în restricţiile (2), (3) şi (4)
vom introduce variabilele de egalizare x6, x7, x8. Forma standard va fi:

max 3 x1  x 2  2 x4  2 x5 
3 x  x  4,
 1 2
 x1  5 x 2  2 x4  2 x5  x6  3,

 x1  4 x4  4 x5  x7  2,
 2 x1  3 x 2  x 4  x 5  x 8  0 ,

 x1 , x 2 ,..., x8  0

Forma canonică se obţine transformând restricţia (1) în două


inegalităţi şi toate inegalităţile „  ” le transformăm în inegalităţi „  ”
deoarece problema este dată de maximizare. Astfel, x3 trebuie înlocuit cu
diferenţa x4 – x5.
Se obţine astfel forma canonică

max 3 x1  x 2  2 x4  2 x5 

3 x1  x 2  4,
 3 x1  x 2  4,

 x1  5 x 2  2 x4  2 x5  3,.
 x  4 x  4 x  2,
 1 4 5
 2 x1  3 x 2  x 4  x 5  0 ,

 x1 , x 2 , x 4 , x 5  0

16
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

2.1.3. Modelul matematic al problemei de programare liniară

Pentru a înţelege modelul matematic al problemelor de


programare liniară sub forma generală, vom analiza câteva exemple din
practica industrială:

 Alocarea optimă a resurselor în producţia industrială


O firmă urmează să producă n tipuri de produse Pj , j  1, n ,
folosind m tipuri de resurse Ri i  1, m .
Se cunosc coeficienţii tehnologici aij ; cantităţile disponibile bi din
resursele Ri ; profitul unitar cj pentru fiecare produs Pj.
Să se întocmească planul optim de producţie al firmei astfel încât
profitul total realizat să fie maxim.

Elaborare modelului matematic al problemei

Condiţii generale de desfăşurare a activităţii analizate :

- restricţiile problemei apar din următoarea condiţie:


cantitatea totala din resursa i folosită pentru producerea celor n produse
nu poate fi mai mare decât cantitatea disponibila:

n
 aij x j  bi , i  1, m (2.20)
j 1

- condiţiile de nenegativitate asigură obţinerea unei soluţii realizabile


din punctul de vedere al logicii practice industriale.

xj  0 , j  1, n (2.21)

Sistemul de inecuaţii (2.20) şi (2.21) poate avea o infinitate de


soluţii, deci putem organiza procesul de producţie pentru realizarea
produsului P într-o infinitate de moduri dar respectând condiţiile
anterioare .
Acest fapt face evidentă imposibilitatea practică a managerului de
a compara toate variantele de plan posibile deci este necesară
introducerea unui alt criteriu.

17
Programare liniară
Adoptarea unei variante de plan (în fapt fundamentarea deciziei)
se face, preferabil, pe baza unui criteriu economic (cel mai uzual –
maximizarea profitului sau în alte cazuri minimizarea costurilor).
Aplicarea acestui criteriu economic, presupune cunoaşterea profitului
total.
n
Deci :  c j x j reprezintă profitul total pentru produsele Pj
j 1
Funcţia obiectiv (scop, eficienţă) va fi :

n
max f   c j x j (2.22)
j 1

Deci, modelul de programare liniară ce urmează a fi rezolvat


pentru determinarea planului optim de producţie astfel încât profitul total
realizat să fie maxim este:

 n
max f  j 1
cjxj


  aij x j  bi (2.23)

 xj  0


 Problema de transport
Un produs omogen P este stocat în m depozite Di, în cantităţile ai ,
i  1, m şi este cerut de spre a fi transportat la n centre de consum Cj ,în
cantităţile bj, j  1, n . Se cunosc costurile cij pe unitatea de produs
transportată de la centrul Di la centrul Cj . Se cere determinarea unui plan
de transport astfel încât costul total de transport să fie minim.

Elaborarea modelului matematic al problemei

Notaţii : ai = cantitatea din produs care se află în depozitul i;


bj = cantitatea cerută de consumatorul j ( 1<j<n);
xij= cantitatea ce urmează a fi transportată de la
depozitul i
la consumatorul j ;
cij= costul unitar al transportului din depozit la
consumator.
18
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

Cu aceste notaţii se pot exprima următoarele mărimi ce ne ajută să


stabilim restricţiile problemei şi funcţia obiectiv:
 cantitatea transportată de la depozitele Di la toate cele n centre de
consum este cantitatea sa disponibilă:

x
j 1
ij  ai , i  1, m (2.24)

 cantitatea transportată de la toate cele m depozite la consumatorul Cj


reprezintă necesarul acestuia, bj , j  1, n .

xi 1
ij  bj j  1, n (2.25)

 pentru scrierea modelului se pleacă de la forma echilibrată a


problemei de transport şi anume cantitatea totală expediată de la cele
m depozite este egală cu cantitatea sa disponibilă:

m n

 ai   b j
i 1 j 1
(2.26)

 variabilele satisfac evident condiţia de nenegativitate :

xij  0 (2.27)

 funcţia obiectiv este următoarea :

m n
min  cij xij (2.28)
i 1 j 1

Se obţine un program liniar, ce se va supune metodelor programării


liniare şi poartă denumirea de program de transport :

19
Programare liniară

 m n
 min( f )    cij xij
 i 1 j 1
 n
  xij  ai , i  1, m
 j 1 (2.29)
 n
  xij  bi , j  1, n
 j 1
 x  0, i  1, m, j  1, n
 ij
 Problemă de repartizare a sarcinilor de producţie
Într-un atelier de montaj echipele E j , j  1, n , pot monta cu
randamente diferite, produsele Pi , i  1, m . Activitatea atelierului este
caracterizată de următoarele date cunoscute: a ij - timpul necesar pentru
montajul unei cantităţi de produs Pi de către echipa E j ; cij - cheltuielile
necesare pentru montajul unei unităţi de produs Pi de către echipa E j ; bi
- cantitatea planificată din produsul Pi , i  1, m ; t j - timpul de lucru
disponibil al echipei E j , j  1, n .
Să se stabilească o repartizare a produselor, echipelor, din
atelierul de montaj astfel încât cheltuielile totale necesare să fie minime.

Elaborarea modelului matematic al problemei:


Variabilele de decizie (necunoscutele) se notează cu xij şi
reprezintă cantitatea din produsul Pi ce trebuie realizată de echipa Ej.
Funcţia obiectiv este o funcţie de cost, respectiv, cheltuielile celor
n echipe, necesare pentru montajul cantităţilor repartizate din cele m
produse; funcţia trebuie minimizată:

m n
min f    cij xij (2.30)
i 1 j 1

Cantitatea de produse de fiecare tip planificată trebuie realizată:

x
j 1
ij  bi , i  1, m (2.31)

Oricare echipă poate executa produse în limita fondului de timp


disponibil:
20
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

a x
i 1
ij ij  t j , j  1, n (2.32)

Variabilele xij se supun condiţiei de nenegativitate:

xij  0, i  1, m, j  1, n (2.33)

Deci, modelul matematic al problemei este:

 m n
 min f    cij xij
i 1 j 1

 n x  b , i  1, m
 j ij i
 1 (2.34)
m
  aij xij  t j , j  1, n
i 1
 xij  0, i  1, m, j  1, n

 Problemă de utilizare a capacităţii utilajelor


O firmă produce n tipuri de produse care pot fi fabricate pe m
utilaje care au capacităţi de producţie limitate pe o anumită perioadă. Se
cunosc: procentul a ij din capacitatea utilajului i necesar pentru
producerea unei unităţi din produsul j; profitul unitar cj al produsului
j  1, n .
Să se stabilească un program de fabricaţie care să permită
utilizarea optimă a capacităţii disponibile a celor m utilaje.

Elaborarea modelului matematic al problemei:


Variabilele problemei sunt cantităţile de produse fabricate în
perioada considerată. Se notează cu xj, numărul de produse de tipul
j  1, n .
Funcţia obiectiv este profitul total obţinut de firmă pentru cele n
tipuri produse; funcţia trebuie maximizată:

n
max f   c j x j (2.35)
j 1

21
Programare liniară
Restricţiile de capacitate ale celor m utilaje se exprimă sub forma:

a
j 1
ij xij  1, i  1, m (2.36)

Variabilele xj se supun condiţiei de nenegativitate:

x j  0, j  1, n (2.37)

Atunci, modelul matematic al problemei este:

 n
max f  j 1
cjxj

m
  aij xij  1, i  1, m (2.38)
 j 1
 x  0, j  1, n
 j

2.2. Consideraţii generale privind problemele de


programarea liniară

2.2.1. Soluţii şi fundamente ale problemei de programare liniară

Fie problema de programare liniară dată în formă


standard matricial:

min(max) c T x C , x  R n
 
 Ax  b , unde  A  M m,n (2.39)
 x0  b  Rm
 

Sistemul de ecuaţii Ax=b are o infinitate de soluţii, deci trebuie să


se găsească în mulţimea soluţiilor o soluţie ce realizează valoarea optimă
(minimă sau maximă ) a funcţiei obiectiv.

 Soluţie admisibilă
Un vector x = x1 x2 ... xn   R n care satisface restricţiile si
condiţia de nenegativitate se numeşte soluţie admisibilă sau posibilă a
problemei de programare liniară.
22
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

Mulţimea soluţiilor admisibile, S, este:


S  x  R n / Ax  b, x  0  (2.40)

Sistemul de ecuaţii, având m ecuaţii şi n necunoscute, cu m<n şi


rang A=m are m necunoscute principale şi n-m necunoscute secundare.
O soluţie de bază se obţine prin anularea celor n-m necunoscute
secundare, deci are cel mult m componente nenule.

 Soluţie admisibilă de bază


Se numeşte soluţie admisibilă de bază pentru sistemul Ax=b,

vectorul x , ce satisface condiţiile :
a) x soluţie a sistemului : Ax=b ;
b) coloanele din A, corespunzătoare componentelor lui x
nenule, formează o mulţime liniar independentă.
În cazul când o soluţie de bază are mai puţin de m componente
diferite de zero, atunci ea se numeşte soluţie degenerată, în caz contrar
ea fiind nedegenerată.

 Soluţie optimală
O soluţie admisibilă care face optimă funcţia z=min(max)c T x se
numeşte soluţie optimală.
Este posibil ca problema de programare liniara să aibă soluţie
optimă unică, să aibă mai multe soluţii optime sau să nu admită soluţie
optimă.

 Soluţie grafică
Acest tip de soluţie va fi studiat detaliat în paragraful 2.2.3.

Teoremele şi definiţiile care urmează, specifică unele


proprietăţi ale soluţiilor ce justifică clasificarea realizată anterior.

Teorema 2.1 (Teorema fundamentală a programării liniare):


Dacă problema de programare liniară în formă standard admite
un program (soluţie admisibilă), atunci ea are cel puţin un program de
bază. Dacă problema are un program optim, atunci are un program
optim de bază.

Demonstraţie:

23
Programare liniară
Fie xS un program al următoarei problemei de programare
liniară:

min c T x

 Ax  b . (2.41)
 x0

Notăm cu p numărul componentelor nenule ale vectorului x.


Fără a restrânge generalitatea problemei putem presupune că cele
p componente nenule sunt chiar primele componente din cele n ale
vectorului x adică:
x = ( x1 , x2 , x3 , …xp , 0, 0 ,0)T (2.42)

 Dacă p = 0, atunci x = 0 deci afirmaţia teoremei este evidentă.


 Dacă p > 0, atunci există două posibilităţi:
- dacă vectorii a1 , a2 , ..ap  A corespunzători celor p
componente nenule ale lui x sunt liniari independenţi, atunci x este
program de bază.
- dacă vectorii a1 , a2 , ..ap  A corespunzători celor p
componente nenule ale
lui x sunt liniari dependenţi atunci există numerele reale: y1, y2,.. …yp nu
toate nule astfel încât să fie satisfăcută relaţia:

a1y1 + a2y2 +…..+apyp = 0 (2.43)

Relaţia (2.43) se poate scrie sub următoarea formă echivalentă :


Ay = 0 cu y 0.
Notăm cu y vectorul cu primele p componente nenule şi
următoarele componente n-p nule: y = (y1, y2 , …yp, 0, 0 .0 )T.
Atunci, obţinem: A( x + y ) = Ax + Ay = b, (  )   R
Deci, x + y este soluţia sistemului Ax=b astfel putem determina
valori ale lui  pentru care x + y este program pentru problema (2.41),
deci este îndeplinită şi condiţia: x + y > 0
Notăm: I1 = mulţimea indicilor i , 1< i < p , yi > 0;
I2 = mulţimea indicilor i , 1< i <p , yi < 0.
Fie:

24
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

 x  x
 max ( i ), I 1    min ( i ), I 2  
1 =  iI1 yi 2 =  iI 2 yi (2.44)
 
  , I1     , I2  

Deci pentru oricare   [1 , 2 ] , avem îndeplinită condiţia: x +


y  0, deci vectorul x + y este program.
Rezultă că c T y  0 ,deoarece în caz contrar alegând pe λ de semn
contrar valorii lui cT y , avem următoarele:
T T T T
c ( x  y)  c x  c y  c x , ceea ce contrazice faptul că x este
program optim. Prin urmare c T ( x  y)  c T x , adică x+ λy este program
optim.
Astfel putem alege o valoare 0 pentru care vectorul x + 0y să
aibă cel mult p-1 componente nenule, deci 0  (1  2 ) ( 1 , 2 nu pot
fi ambele infinit)
x
În caz particular, λ = 0 = min ( i ) deci se va obţine programul
yi 0 yi
soluţie x + 0y cu p-1 componente pozitive şi astfel vom avea două
cazuri :
 Dacă coloanele corespunzătoare componentelor sunt liniar
independente atunci programul anterior este program de bază.
 Dacă coloanele corespunzătoare componentelor sunt liniar
dependente atunci se reia algoritmul într-un număr finit de paşi, cel
mult p până se va ajunge la primul caz şi se obţine un program optim
de bază pentru problema dată.

Definiţia 2.1: Fie V un spaţiu liniar peste corpul R şi x, y doi


vectori din V. Mulţimea vectorilor
x, y  X V / X  (1  ) x  y,0    1  se numeşte segment al lui
V (uneşte vectorul x cu vectorul y ).
Definiţia 2.2: O mulţime M de vectori din V se numeşte mulţime
convexă dacă () x, y  M şi
()   0,1 , atunci  x, y  M .
Deci se poate spune că mulţimea M din V este convexă, dacă
odată cu doi vectori x, y  M conţine şi segmentul determinat de aceşti
vectori.

25
Programare liniară
Definiţia 2.3: Vectorul X  M se numeşte vârf sau punct extrem al
mulţimii M dacă nu există vectorii x, y  M astfel încât
X  (1   ) x  y,0    1 . În caz contrar X se numeşte punct interior
mulţimii M .

Definiţia 2.4 : Prin combinaţie liniară convexă a vectorilor x1 ,x2


…,xm  M se înţelege o expresie de forma 1x1 + 2x2 + …+ mxm cu 
 0,1  şi 1 + 2 + …+ m = 1
Concluzie: Orice punct interior X al unei mulţimi convexe M se
poate exprima ca o combinaţie liniară convexă de un număr finit de
puncte extreme.

Teorema 2.2: Mulţimea soluţiilor admisibile ale unei probleme de


programare liniară este o mulţime convexă .

Demonstraţie :
Fie mulţimea soluţiilor admisibile dată de relaţia (2.40).
Fie două soluţii: x1 , x2  S. Atunci pentru   0,1 avem

x = x1 +(1- )x2 0 (2.45)

Înlocuind relaţia (2.45) în relaţia (2.40) obţinem :

Ax= Ax1 +( 1- )x2=Ax1 + (1- ) Ax2 = b + (1- )b = b+ b


- b = b,

deci mulţimea soluţiilor problemei de programare liniară este o


mulţime convexă.

Teorema 2.3: Orice soluţie admisibilă de bază a unei probleme


de programare liniară este vârf sau punct de extrem al mulţimii soluţiilor
admisibile.

Demonstraţie.
Presupunem că soluţia admisibilă de bază x are forma
x=(x1 x2 … xm 0 …0T.
Aceasta înseamnă că xi  0 (i = 1, m), vectorii p1, p2, …,pm sunt
liniar independenţi şi x satisface sistemul de restricţii, deci

x1P1 + x2P2 +… + xmpm +0pm+1 + … + 0pn = p0 (2.46)

26
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

Trebuie arătat că x este vârf al mulţimii S a soluţiilor admisibile.


Presupunem prin absurd că x nu este vârf, ci punct interior, adică
există doi vectori x' , x' ' S astfel încât: x  x'1   x' ' ,   0,1
Scris pe componente:

x1  x1'  1   x1' , x2  x2'  1   x2'' ,……., xm  xm'  1   xm'' ,.….


…, 0  xn'  1   xn''

Însă   0,1 , deci 1    0 , iar xi'  0 i  1, n şi xi''  0


i  1, n deoarece x' , x' ' S , astfel că, din cele n – m relaţii se obţin:
xm' 1  0 xn'  0 ; xm'' 1  0 xn''  0 şi deci vectorii x' , x' ' au formele:

x'  x1' x2'  xm' 00 x' '  x1'' x2''  xm'' 00
T T
,
(2.47)

Exprimăm faptul că x' , x' ' S verifică restricţiile

x1' p1  x2' p2    xm' pm  p0 (2.48)


x1'' p1  x2'' p2    xm'' pm  p0 (2.49)

Însă vectorii pi ,…,pm sunt liniari independenţi. Rezultă:

x1'  x1'' , x2'  x2'' , xm'  xm'' adică x'  x' ' (2.50)

Aceasta înseamnă că nu există vectorii x' , x' ' S astfel ca


x  x'1   x' '   0,1 prin urmare x este vârf sau punct de extrem în
S.

Teorema 2.4: Funcţia obiectiv a unei probleme de programare


liniară ia valoare optimă într-un punct extrem a mulţimii convexe M a
tuturor soluţiilor admisibile ale problemei de programare liniară.

Demonstraţie:
Presupunem că se cere ca funcţia obiectiv să fie minimizată.
~
Notam cu M = { xi , i  I } mulţimea punctelor extremale ale lui
M şi fie x1 punct extrem pentru care c T x1 = min{c T xi } = z1
iI

27
Programare liniară
Presupunem prin absurd că această afirmaţie nu este adevărată,
~
 
atunci există x0  M  M astfel încât : c T x0 = z0 < z1, deoarece x0 nu
este punct extrem atunci :

x0 =  x
iI
i i , I  0 , 
iI
i =1 (2.51)

Dar z0 = c T x0 =   i c T ' xi >   i c T x1 = cT x1 = z1, ceea ce este


iI iI
o contradicţie. Deci x1 este un program minimal pentru problema de
programare liniară.

Consecinţă :
Dacă funcţia obiectiv ia aceeaşi valoare optimă în mai multe
puncte extremale, atunci orice combinaţie liniară convexă a acestora
este soluţie optimă a problemei de programare liniară.

2.2.2. Baze ale problemei de programare liniară

Fie problema de programare liniară în forma standard (2.13), în


care matricea A are m linii şi n coloane, iar rang A = m < n. Ecuaţiile ce
compun sistemul liniar Ax = b sunt liniar independente, iar sistemul are o
infinitate de soluţii.
Astfel, în matricea A există cel puţin un grup de m coloane liniar
independente, care formează o bază a spaţiului Rm.
Definiţiile ce urmează reprezintă fundamente ce stau la baza
rezolvării modelelor de programare liniară.

Definiţia 2.5 Se numeşte bază a problemei de programare liniară în


formă standard un grup de m coloane liniar independente.
Problema (2.13) are un număr finit de baze şi anume C nm .
Fie B o bază formată cu m coloane, ale matricei A. Matricea A se
poate scrie partiţionat sub forma:

 
A  B, S  , cu B  a i  iI , S  a  j  jJ   (2.52)

unde prin I şi J s-au notat mulţimile de indici corespunzători coloanelor


din baza B şi, respectiv, a celorlalte coloane:

28
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie


I  i  1, n a i   B  (2.53)
J  1,2,..., n/ I

Partiţionarea vectorului x al variabilelor problemei este


următoarea:

xB 
x   S  , cu x B  xi iI , xS  x j  jJ
(2.54)
x 

iar partiţionarea vectorul c al coeficienţilor funcţiei obiectiv este:

c B 
c   S  , cu c B  ci iI ,  
cS  c j jJ
(2.55)
c 

În raport cu baza B aleasă, variabilele xi i  I  se vor numi


variabile de bază, iar x j  j  J  variabile secundare.
Sistemul de ecuaţii Ax = b se poate scrie după partiţionare sub
forma:

x B 
B, S   S   b  Bx B  Sx S  b (2.56)
x 

Matricea B fiind o bază a spaţiului Rm este inversabilă. Astfel prin


înmulţirea relaţiei (2.56) la stânga cu B-1 se obţine forma explicită a
sistemului de ecuaţii:

x B  B 1b  B 1 Sx S (2.57)

Notăm cu:

B
x  B 1b (2.58)
y Bj  B 1a  j  , j  1, n (2.59)

Înlocuind relaţiile (2.58) şi (2.59) în relaţia (2.57) obţinem:

29
Programare liniară

x B  x   y Bj x Bj
B
(2.60)
jJ

Scrisă pe componente relaţia (2.60) devine:


xiB  x i   yijB x Bj , i  I
B
(2.61)
jJ

Definiţia 2.6. Soluţia de bază corespunzătoare bazei B este:

B
x B 
x     Rn (2.62)
 0 

O soluţie de bază este o soluţie admisibilă (program) a unei


B
probleme de programare liniară dacă x  0 .

Definiţia 2.7 Baza B care satisface condiţia

B 1b  0 (2.63)

se numeşte bază primal admisibilă.

Ţinând seama de relaţiile (2.54) şi (2.55), funcţia obiectiv a


problemei de programare liniară, z  c T x , poate fi exprimată prin:

 B S 'x B 
  
z  c c   S   c TB x B  c ST x S  c TB B 1b  B 1 Sx S  c ST x S
x 

z  c TB B 1b  c TB ' B 1 S  cST ' x S  (2.64)

Notăm cu:

B B
z  c TB x (2.65)
z Bj  c TB y Bj , j  1, n (2.66)

Înlocuind relaţiile (2.65) şi (2.66) în relaţia (2.64) obţinem:

z  z   z iB  c j x Bj
B
  (2.67)
jJ

30
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

B
Definiţia 2.7. Constanta z din relaţia (2.67) reprezintă valoarea
funcţiei obiectiv în soluţia asociată bazei B.

Diferentele z Bj  c j  j  J  se mai numesc costuri reduse şi au


rolul esenţial în caracterizarea optimalităţii unei soluţii admisibile de
bază a unei probleme de programare liniară.

2.2.3. Interpretarea geometrică a problemei de programare liniară

O interpretare geometrică a unei probleme de programare liniara


se poate obţine simplu în cazul când problema are două variabile (spaţiu
R2) şi se prezintă sub forma canonică.
Fie modelul de programare liniară (2.11) exprimat în funcţie de
două variabile de decizie x1 şi x2.
1) Restricţiile unui astfel de model pot fi exprimate prin
a) egalităţi : a11x1  a12 x2  b1

a12 x1  a 22 x 2  b2
b) inegalităţi : sau (2.68)
a 21 x1  a 22 x 2  b2

2) Condiţii de nenegativitate : x1  0, x2  0 (2.69)

3) Funcţia obiectiv (2.10) poate fi:


min(max) z  c1 x1  c2 x2 (2.70)

Realizând o analiză din punct de vedere grafic putem observă


următoarele :
 egalitatea a11x1  a12 x2  b1 , reprezintă o dreapta. Mulţimea soluţiilor
x1 x2  , aparţine acestei drepte (d), iar această dreaptă (curbă de
nivel), împarte planul 0 x1 x2  în două semiplane.
 inegalitatea a11x1  a12 x2  b1 , - mulţimea soluţiilor fiind reprezentată
în acest caz printr-o arie, dreapta împarte planul 0 x1 x2  în doua
semiplane ce au o arie comună şi în final un punct comun.
Pentru aflarea soluţiei optime, dacă ea există, trebuie aflată mai
întâi mulţimea soluţiilor admisibile S – mulţime ce satisface sistemul de
restricţii şi condiţiile de nenegativitate.
31
Programare liniară
În reprezentarea grafică acesta va fi o mulţime convexă,
reprezentată printr-un domeniu, numit admisibil.

Exemplul 2.2 Să se rezolve problema de programare liniară:

 z  max( 2 x1  x 2 )
2 x  x  2
 1 2

 x1  2 x 2  2
 x1  x 2  5
x1  0 , x 2  0

Pentru determinarea domeniului admisibil se procedează în modul


următor: se află domeniul care satisface cele trei restricţii şi condiţiile
x1  0, x2  0 .
Se figurează dreptele:

(d1) 2x1- x2 = -2, trece prin A1(-1,0), B1(0,2)


(d2) x1- 2x2 = 2, trece prin A2(2,0), B2(0,-1)
(d3) x1+ x2 = 5, trece prin A3(5,0), B3(0,5)

şi apoi se ia, în cadranul întâi intersecţia domeniilor ce reprezintă


soluţiile, respectiv, ale celor trei inecuaţii, fig. 2.1.
Prin intersecţia celor trei semiplane s-a obţinut domeniul
admisibil, ce este o mulţime convexă. Coordonatele oricărui punct din
acest domeniu satisfac toate restricţiile şi condiţiile de nenegativitate ale
problemei. Conform teoremei 2.4, dacă funcţia obiectiv îşi atinge
valoarea maximă, atunci z ia valoarea maximă într-un vârf ( punct extrem
al mulţimii convexe). Acestea sunt vârfurile poligonului, notate cu: O,
A, B, C, D.
Coordonatele acestor puncte se află uşor astfel:

32
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

x2
d1

C(1,4)

d2

(D
)
D(0,2)

B(4,1)
d3

0 A(2,0) x1

Fig.2.1

 x1  2 x2  2
B  d 2   d3  B4,1
 x1  x2  5
2 x1  2 x2  2
C  d1   d 3  C 1,4
 x1  x2  5

Aflarea soluţiei optime se bazează pe faptul că funcţia obiectiv,


având două variabile se poate reprezenta printr-o dreaptă (D).

(D): c1x1 + c2x2 = z

Adusă la forma y = mx + n unde m este panta, iar n ordonata la


origine, rezultă:

c1 z
(D): x 2   x1 
c2 c1

care reprezintă o mulţime de drepte paralele între ele, având panta


c z
constantă m   1 şi ordonata la origine variabilă, n  .
c2 c1
În problemele de maxim vom alege poziţia care are ordonata la
origine astfel ca ea să furnizeze valoarea maximă pentru z.
Analog pentru problemele de minim.

Pentru exemplul de mai sus rezultă:


(D) : x2 = -2x1 + z ; se alege acea dreaptă ce trece prin unul din
vârfuri, ce are m = -2 şi ordonata n = z = max
33
Programare liniară
Ea este figurată punctat în figura 2.1. Ordonata la origine maximă
corespunde punctului B deci:

x1 = 4 şi x2 = 1 z = 2*4 +1*1 = 9 = max

Deoarece panta dreptei (D) este m = -2 = tg , rezultă că unghiul 


= 116,560.

Exemplul 2.3.
Pentru fabricarea a două produse P1 şi P2, o firmă dispune de patru
 
tipuri de resurse Ri 1,4 . Cantităţile de resurse Ri folosite pentru
fabricarea fiecărei unităţi din produsele P1 şi P2, în unităţi convenţionale
(tone etc) sunt date în tabelul 2.1.
Se mai cunosc cantităţile disponibile ale firmei din fiecare resursă
 
Ri i  1,4 şi beneficiile pentru fiecare unitate din cele două produse.
Să se determine planul de producţie astfel ca beneficiul total să fie
maxim.

Tabelul 2.1
Resurse R1 R1 Disponibil
R1 2 2 12
R2 1 2 8
R3 4 0 16
R4 0 4 12
Beneficiu 2 um 3 um

Introducând variabilele de decizie: x1 = numărul de unităţi din


produsul P1 şi x2 = numărul de unităţi din produsul P2 , rezultă următorul
model matematic de P.L.:

2 x1  2 x 2  12
x  2x  8
 1 2
 x1  0, x2  0, z  2 x1  3 x2  max
4 x1  16
4 x 2  12

Soluţia grafică (2.2) se obţine determinând domeniul admisibil:

34
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

d 1 2 x1  2 x 2  12
d x  2 x  8
 2 1 2

d 3 4 x1  16
d 4 4 x 2  12
(D) 2x1 + 3x2 = z

Se observă că dreptele d1  , d 2  şi d 3  sunt concurente


în punctul B(4,2), iar C  d 2   d 3  are coordonatele C(2,3).

x2

d3
(D

C(2,3) d4
)

D(0,3)

B(4,2)

d1 d2

0 A(4,0) x1

Fig.2.2

Soluţia optimă a problemei este:

x1 = 4; x2 = 2 f(x) = 14 = max

Verificăm soluţia în restricţiile problemei.

Rezultă că resursele R1, R2 şi R3 sunt resurse rare, utilizate în


întregime în timp ce resursa R4 nu a fost în întregime utilizată.
Cantitatea din resursa R4, ce rămâne disponibilă poate fi
determinată şi ulterior folosită cunoscând preţul umbră (dual).
Această analiză urmează a fi detaliată în subcapitolul 2.4.

2.3. Metoda Simplex

Metoda Simplex sau “ metoda îmbunătăţirilor succesive “ evită


cercetarea exhaustivă a tuturor soluţiilor de bază ale unei probleme de
programare liniară, construind succesiv soluţii realizabile de bază din ce

35
Programare liniară
în ce mai bune ale modelului până când este obţinută o soluţie de bază
optimă. Prin soluţie „mai bună” înţelegând soluţia ce dă funcţiei de
eficienţă (obiectiv) o valoare mai mică, respectiv mai mare decât cele
precedente după cum funcţia de eficienţă este de minim sau de maxim.
Deci acest algoritm este o metodă de examinare sistematică a
programelor de bază ce dă funcţiei de eficienţă o valoare optimă.
Această metodă pune în evidenţă cazul în care problema admite
un optim infinit sau mulţimea programelor este vidă.

2.3.1. Fundamente teoretice în aplicarea metodei Simplex

Prezentarea metodei simplex se realizează pe un model de


programare liniară dat în formă standard şi în care funcţia obiectiv este o
funcţie de minimizare.

min c T x C , x  R n
 
 Ax  b , unde  A  M m,n (2.71)
 x0  b  Rm
 

Fie B o bază primal admisibilă extrasă din matricea A şi


B
x  B 1b o soluţie de bază iniţială a problemei de programare liniară.
Pentru ordonarea şi facilitarea calculelor se utilizează în aplicarea
practică a algoritmului tabele ce poartă denumirea de tabele simplex.
Aceste tabele sunt tabele simple ce au m+1 linii şi n+1 coloane şi
cuprind coeficienţii numerici al problemei (2.71) corespunzători bazei
primal admisibile B (tab 2.2).
Tabelul conţine în prima coloană, variabilele de bază (V.B.), în
coloana a doua valoarea variabilelor de bază (V.V.B), iar în următoarele
n coloane vectorii y Bj , j  1, n .
Pe ultima linie a tabelului se trece valoarea funcţiei obiectiv
B
pentru baza B notată cu z şi diferenţele z Bj  c j , j  1, n .
Acestui tabel se ataşează o linie deasupra variabilelor x j şi o
coloană la stânga coloanei V.B cu coeficienţii corespunzători funcţiei
obiectiv c j , j  1, n .

36
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

Tabelul 2.2

Tabelul simplex se ataşează fiecărei baze B din algoritm şi are ca


fundamente rezultatele teoretice ce sunt prezentate în continuare.

Teorema 2.5 Criteriu de optimalitate


Fie B o bază primal admisibilă pentru probleme de programare
liniară (2.71). Dacă z Bj  c j  0 , oricare ar fi j  J , atunci programul de
B
bază asociat bazei B, x  B 1b este o soluţie optimă a problemei de
programare liniară considerată.

Teorema 2.6 Criteriu de infinitudine a soluţiilor


Fie B o bază primal admisibilă pentru probleme de programare
liniară (2.71). Dacă există indicele k  J astfel încât z kB  ck  0 şi
B
yik  0 , oricare ar fi i  I atunci problema are un optim infinit.

Teorema 2.7 Criteriu de îmbunătăţire a soluţiilor


Fie B o bază primal admisibilă pentru probleme de programare
liniară 2.71. Fie k J astfel încât z kB  ck  0 (2.72) şi
 B
I   iI / yik 
 0   . Pentru indicele i  I  determinat cu relaţia:

37
Programare liniară
B B
x x
min i  l (2.73)
B B
i I  y ylk
ik

~
B B
se obţine un nou program de bază x cel puţin la fel de bun ca x ,
~
corespunzător unei noi baze B care are aceleaşi coloane ca şi B, cu
(l ) (k )
excepţia coloanei a ce se înlocuieşte cu coloana a .

Observaţii:
~
 Baza B este primal admisibilă şi verifică toate teoremele
anterioare.
 Relaţia (2.73) reprezintă criteriul de ieşire din bază şi ne arată
indicele l  I  , al coloanei a (l ) ce urmează să părăsească baza B.
 În cazul în care există mai mulţi indici k  J pentru care se
îndeplinesc (2.72) şi (2.73) atunci se pot construi mai multe baze
primal admisibile şi fiecare dintre acestea modifică valoarea funcţiei
obiectiv.
Pentru a obţine mai repede optimul căutat este indicat a alege acel
indice pentru care se verifică relaţia.

B B
B xl xl B
max (( z j  c j ) B )  B ( z k  ck ) (2.74)
j J ylk ylk

În practică utilizându-se pentru evitarea calculelor următorul


criteriu:

B B
max ( z j  c j )  z k  ck (2.75)
j J

 Relaţia 2.75 reprezintă criteriul de intrare în bază şi ne arată


indicele
k  J al coloanei a (k ) ce urmează să intre în baza B.
 Elementul ylk din tabelul simplex poartă denumirea de pivot.
~
Pentru calculul elementelor tabelului simplex asociat bazei B în
raport cu elementele tabelului simplex asociat bazei B se utilizează
formulele de schimbare a bazei în cadrul unei operaţii numită pivotare
gaussină.
38
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

În practică formulele de schimbare a bazei se echivalează cu


următoarele reguli de transformare a tabelelor simplex :
 Elementele situate pe linia pivotului se împart la valoarea
pivotului ;
 Elementele situate pe coloana pivotului devin zero cu excepţia
pivotului ce va avea valoarea unu ;
 Celelalte elemente ale tabelului simplex se transformă după
regula
dreptunghiului. Se consideră dreptunghiul imaginar a cărui diagonală
este determinată de elementul yijB şi pivotul yijB (fig. 2.3) ; noua valoare
~
yijB se obţine împărţind la pivot diferenţa dintre produsul yijB ylkB şi yljB yikB
după formula :

~ yijB ylkB  yljB yikB


yijB  (2.76)
ylkB

elementul de
transformat
y B
ij
y ikB

yijB y ikB

pivotul
Fig.2.3

2.3.2. Algoritmul simplex primal.

Rezultatele teoretice obţinute anterior permit enunţarea


algoritmului simplex. Acest algoritm pentru rezolvarea problemelor de
programare liniară date în formă standard (2.13) este diferit în raport cu
tipul funcţiei obiectiv, respectiv, probleme de minimizare sau
maximizare.
Algoritmul simplex primal pentru probleme de minimizare

 Pasul 1 : Se determină o baza B primal admisibilă.


B B
 Pasul 2 : Se determină următoarele elemente : x , z , z B B
j c j, y j
 Pasul 3 : Se analizează toate diferenţele z Bj  c j :

39
Programare liniară

 Dacă toate diferenţele z Bj  c j  0 , j  1, n atunci programul


B
x este optim.

 Dacă există cel puţin un indice j  J  , J   j  J / z Bj  c j  0 
astfel încât z Bj  c j > 0 se trece la pasul 4.
 Pasul 4 Se determină indicele k  J  cu criteriul de intrare în
bază
z kB  ck  max ( z Bj  c j )
j J 

 Dacă y kB  0 atunci problema are un optim infinit.


 Dacă ()k  J  pentru care y kB  0 se trece la pasul 5.
 Pasul 5: Se determină indicele l  I cu criteriul de ieşire din bază:
 xB  xB
 i  l
min  B   B
i I
 yij  ylk
y B 0
ik
(l )
 Pasul 6 : Se înlocuieşte în baza iniţială B vectorul a cu vectorul
~
a (k ) , obţinându-se astfel o nouă bază B , iar pivotul corespunzător
este y lk .
~
Mărimile tabelului simplex corespunzător noii baze B , se vor
determina cu ajutorul unei reguli denumită regula dreptunghiului
(pivotare în jurul elementului y lk ), după care se trece la Pasul 2.

Algoritmul simplex primal pentru probleme de maximizare

Acest algoritm are paşii 1,2,5,6 identici cu algoritmul pentru


probleme de minimizare.
 Pasul 3 : Se analizează toate diferenţele z Bj  c j :

 Dacă toate diferenţele z Bj  c j  0 , j  1, n atunci programul


B
x este optim.

40
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

 Dacă există cel puţin un indice j  J  , J   j  J / z Bj  c j  0  


astfel încât z Bj  c j < 0 se trece la pasul 4.
 Pasul 4 Se determină indicele k  J  cu criteriul de intrare în
bază
z kB  ck  min ( z Bj  c j )
j J 

 Dacă y kB  0 atunci problema are un optim infinit.


 Dacă ()k  J  pentru care y kB  0 se trece la Pasul 5.
Algoritmul simplex poate fi exprimat sintetic sub următoarea schemă
logică ( fig.2.4).
START

Construieste
tabel simplex
initial

Exista
valori pozitive (negative) pe Nu Indica
linia diferentelor? solutia optima STOP

Da

Determina
coloana pivotului

Exista Nu Indica
valori pozitive in coloana solutia optima STOP
pivotului?

Da

Determina
linia pivotului

Calculeaza un nou
tabel simplex

Fig.2.4

Exemplul 2.4 . Să se rezolve următoarea problemă de programare liniară:

41
Programare liniară

 x1  x 2  4,
3 x  x  18,
 1 2

 x1  2 x 2  6,
x , x  0
 1 2
max 2 x1  x 2 .

Pentru a aplica algoritmul simplex, vom aduce mai întâi problema la


forma standard. În acest scop introducem variabilele ecart x3, x4 şi x5:

 x1  x 2  x3  4,
3 x  x  x  18,
 1 2 4

 x1  2 x 2  x5  6,
 x , x ,..., x  0
 1 2 6

max 2 x1  x 2 .
Iteraţia 1
Pasul 1 Fie B o bază admisibilă a problemei formată din coloanele
matricii A şi anume a3, a4 şi a5:
1 0 0
 
3

4 5
B  a , a , a  0 1 0  
0 0 1
 
Pasul 2 Baza B este matricea – unitate, astfel vom calcula următoarele
elemente:
B
B 1  B  I şi x  B 1b  b  4 18 6 ;
y Bj  B 1 a j  a j , elementele matricii A.
B
z Bj  c j  c '  B 1a j  c j  0 0 0  a j  c j  c j  (2 1 0 0 0)
B
z  c B  B 1b  0.

Cunoscând toate aceste date, putem forma tabelul simplex iniţial (


tab.2.3).
 
Pasul 3. Deoarece există j  J  , J   j  J / z Bj  c j  0 astfel încât

z Bj  c j  0 , baza iniţială nu este optimă.


Pasul 4 Se determină indicele k  J  cu criteriul de intrare în bază

42
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

z kB  ck  min ( z Bj  c j ) =min (  2,1 )=-2. Deci indicele k = 1, astfel


j J 
~
variabila x1 va intra în noua bază B şi ()k  J  pentru care y kB  0 .
Pasul 5: Se determina indicele l  I cu criteriul de ieşire din bază
 xB  xB
 i  l  4 18  4
min  B   B = min  ,   ,
1 3  1
i I
 yij  ylk
y B 0
ik
deci indicele l = 3. Variabila x3 va părăsi baza B. Pivotul este y31= 1
Pasul 6: Se înlocuieşte în baza iniţială B variabila x3 cu variabila x1
~
obţinându-se astfel o noua baza B ceea ce însemnă că se vor transforma
toate mărimile următorului tabel simplex cu regula dreptunghiului.

Interaţia 2 Se realizează un pivotaj în jurul elementului y42 (tab.2.3).

Interaţia 3. Se realizează un pivotaj în jurul elementului y53 (tab.2.3).

Interaţia 4 Deoarece z j  c j  0 pentru toţi j, baza actuală este optimă.


42 36
Deci programul optim al problemei noastre este x1  , x2  ,
5 5
14
x3  , x4  0 , x5  0 ( x 4 şi x5 au valoarea 0, deoarece sunt variabile
5
secundare).

Interpretare geometrică.

Pentru problema examinată mai sus se poate da o interpretare


geometrică simplă în spaţiu R2.
În planul x1Ox2, mulţimea punctelor (x1, x2) care satisfac restricţia
x1  x2  4 constituie unul din semiplanele determinate de dreapta
(d 1 ) : x1  x2  4 , şi anume semiplanul care conţine originea.
Celelalte două restricţii determină analog alte două semiplane.
Mulţimea programelor problemei va fi formată din mulţimea
punctelor din primul cadran x1  0, x2  0 care se află la intersecţia
celor trei semiplane.
Această mulţime este poligonul OABCD (fig. 2.5).

43
Programare liniară
Funcţia obiectiv este max(2x1 +x2). Ecuaţia 2x1 +x2 = z reprezintă
o familie de drepte paralele între ele.
În figura 2.4 sunt reprezentate punctat câteva din aceste drepte.
Pentru z=z2, funcţia obiectiv ia valori mai mari decât pentru z = z1, iar
pentru z = z3 valori şi mai mari.
Tabelul 2.3

2 1 0 0 0

CB
V.B. V.V.B xl x2 x3 x4 x5

0 x3 4 1 -1 1 0 0

0 x4 18 3 -1 0 1 0

0 x5 6 -1 2 0 0 1

0 -2 -1 0 0 0
2 1 0 0 0
C B
V.B. V.V.B xl x2 x3 x4 x5

2 x1 4 1 -1 1 0 0

0 x4 6 0 2 -3 1 0

0 x5 10 0 1
1 1 0

8 0 -3 2 0 0
2 1 0 0 0
CB V.B. V.V.B xl x2 x3 x4 x5

2 x1 7 1 0 -1/2 1/2 0

1 x2 3 0 1 -3/2 1/2 0

0 x5 7 0 0 5/2 -1/2 1

17 0 0 -5/2 -3/2 0

2 1 0 0 0
CB V.B. V.V.B xl x2 x3 x4 x5

2 x1 42/5 1 0 0 2/5 1/5

1 x2 36/5 0 1 0 1/5 3/5


0 x3 14/5 0 0 1 -2/5 2/5

24 0 0 0 1 1

44
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

Fig.2.5

Însă, după cum se vede din figură, nu există nici un program care
să dea funcţiei obiectiv valoarea z3 (dreapta 2x1 +x2 =z3 nu intersectează
poligonul OABCD – domeniul soluţiilor).
Cea mai mare valoare pe care o poate lua z pentru punctele din
poligonul OABCD se obţine atunci când dreapta 2x1 +x2 = z trece prin
punctul C. Valoarea lui z în acest caz este 2. 42/5 + 36/5 = 24.
Când am aplicat algoritmul simplex, drept bază iniţială am luat
baza B = (a3, a4, a5). Variabilele x1 şi x2 sunt variabile secundare, deci au
valoarea 0; reiese că ne-am găsit în vârful O (0,0) al poligonului OABCD,
iar valoarea funcţiei obiectiv era z = 0. În continuare, variabila x1 intră în
bază şi am obţinut programul x1 = 4, x2 = 0.
Geometric aceasta înseamnă că din vârful O ne-am deplasat până
în vârful A (4,0) de-a lungul muchiei OA. În continuare, din vârful A am
ajuns în vârful B, mergând pe muchia AB (variabila x3 a păstrat tot
valoarea 0, deci ne găseam pe dreapta d1). De aici am ajuns în vârful
optim C, urmând muchia BC.
Valoarea funcţiei obiectiv a crescut de la 0 la 8, apoi la 17 (în
vârful B) şi, în sfârşit, la valoarea maximă 24.
Acest lucru este valabil şi în cazul general: fiecărei baze
admisibile a problemei adusă la forma standard îi corespunde un vârf al
domeniului soluţiilor.
Concluzie: Fiecare iteraţie simplex reprezintă o deplasare de la un
vârf al domeniului soluţiilor, pe o muchie, până la un vârf, care conferă
funcţiei obiectiv o valoare „mai bună”.

Exemplul 2.5.
O companie produce trei tipuri de produse A, B, C. Fiecare dintre
aceste produse trebuie prelucrate tehnologic aceeaşi maşină unealtă, timp

45
Programare liniară
de 2 ore, 3 ore respectiv 1 oră. Maşina unealtă este disponibilă pentru
perioada analizată, 400 ore.
Pentru produsele A şi C se folosesc componente speciale, câte o
bucată pentru fiecare produs, firma având un stoc disponibil pe perioada
analizată de 150 de unităţi din aceste componente. Tot pentru produsele
A şi C se utilizează un aliaj special: pentru o unitate din produsul A se
utilizează 2 kg de aliaj special, iar pentru o unitate din produsul C, 4 kg.
Stocul disponibil este de 200 kg din acest aliaj special.
Studiul de piaţă pentru produsul B arată că se pot vinde pe
perioada analizată cel mult 50 de unităţi din acest produs.
Beneficiul unitar al produselor A, B şi C este respectiv: 8 um
(unităţi monetare), 5 um, 10 um.
Compania doreşte să stabilească planul de producţie care
maximizează beneficiul total pe perioada analizată.

Elaborarea modelului matematic


Notăm x1 = numărul de produse A
x2 = numărul de produse B
x3 = numărul de produse C
unde x1, x2, x3 pentru modelul analizat reprezintă variabilele de decizie.
2 x1  3x 2  x3  400
 x  x  150
 1 3

2 x1  4 x3  200
 x 2  50
x1  0 , x2  0 , x3  0
z  max( 8x1  5x2  10 x3 )
Se observă că problema nu are formă standard.
Introducem variabilele de compensare x4, x5, x6, x7 şi înlocuim
max(z)=min(-z), dorind să aplicăm algoritmul simplex pentru probleme
de minim.
Calculele efectuate sunt grupate în tabelele simplex reunite în
tabelul 2.4.
Soluţia optimă este: x = (100, 50, 0, 50, 50, 0, 0), iar funcţia
obiectiv este min (f)= -1050, deci max(z) = 1050
Interpretarea soluţiei:
Variabilele de decizie au valorile : x1 = 100, x2 = 50, x3 = 0

46
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

2 x1  3x 2  x3  x 4  400
 x  x  x  150
 1 3 5

2 x1  4 x3  x6  200
 x 2  x7  50
xi  0 (i  1,7)
f  min( 8x1  5x2  10 x3 )
Matricea coeficienţilor tehnico - economici este:
 2 3 1 1 0 0 0
1 0 1 0 1 0 0 
A 
 2 0 4 0 0 1 0
 
0 1 0 0 0 0 1 
Se vor fabrica 100 unităţi din produsul A, 50 unităţi din produsul
B, zero unităţi din produsul C.
Se va obţine beneficiul maxim, egal cu 1050 unităţi monetare.
Semnificaţia variabilelor de compensare rezultă din modul cum
au fost introduse. Verificând restricţiile iniţiale ale problemei cu soluţia
optimă x1 = 100, x2 = 50, x3 = 0 şi comparând cu sistemul de restricţii în
care s-au introdus variabilele de compensare, rezultă:
- orele de lucru pe maşină nu s-au folosit integral, rămânând
disponibile x4 = 50 ore;
- componentele nu s-au folosit integral, rămânând x5 = 50
unităţi.
- stocul de aliaj după efectuarea prelucrărilor este nul x6 = 0
- este satisfăcută condiţia de vânzare pentru B, x7 = 0.

47
Programare liniară
Tabelul 2.4

-8 -5 -10 0 0 0 0

C B
V.B. V.V.B xl x2 x3 x4 x5 x6 x7

0 x4 400 2 3 1 1 0 0 0

0 x5 150 1 0 1 0 1 0 0

0 x6 200 2 0 4 0 0 1 0
0 x7 50 0 1 0 0 0 0 1
0 8 5 10 0 0 0 0
-8 -5 -10 0 0 0 0
CB V.B. V.V.B xl x2 x3 x4 x5 x6 x7

0 x4 350 3/2 3 0 1 0 -1/4 0


0 x5 100 1/2 0 1
0 0 -1/4 0
-10 x3 50 1/2 0 1 0 0 1/4 0
0 x7 50 0 1 0 0 0 1
0
-500 3 5 0 0 0 5/2 0
-8 -5 -10 0 0 0 0
CB V.B. V.V.B xl x2 x3 x4 x5 x6 x7
0 x4 200 3/2 0 1 0
0 -1/4 -3
0 x5 100 1/2 0 0 0 1 1/4 0
-10 x3 50 1/2 0 1 0 0 1/4 0
-5 x2 50 0 1 0 0 0 0 1
-750 3 0 0 0 0 5/2 -5
-8 -5 -10 0 0 0 0

C B
V.B. V.V.B xl x2 x3 x4 x5 x6 x7
0 x4 50 0 0 -3 1 0 -1 -3
0 x5 50 0 0 -1 0 1 -1/2 0
-8 x1 100 2 0 0 0
1 0 1/2
-5 x2 50 0 1 0 0 0 0 1
-1050 0 0 -6 0 0 -4 -5

2.3.3. Metode de determinarea unei soluţii de bază iniţiale

Algoritmul simplex necesită, pentru pornire, ca problema să fie


dată în forma standard şi să aibă o soluţie admisibilă de bază.
Prima dintre condiţii se realizează folosind transformări utilizate
în programarea liniară.
Pentru cea de-a doua condiţie alegerea la întâmplare a unei baze
formată din m vectori ai matricei A, conduce la soluţii de bază
nerealizabile cu care algoritmul simplex nu poate începe.
Găsirea unei baze pur şi simplu prin încercări repetate nu este
indicată, această căutare putând dura foarte mult.

48
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

Rezolvarea problemei pleacă de la observaţia că singura bază


pentru care calculul de mai sus se poate face imediat este matricea
unitate, caz în care soluţia de bază corespunzătoare este chiar vectorul
termenilor liberi.
Aceasta presupune ca problema să aibă toţi termenii liberi mai
mari sau egali cu 0 şi în matricea A să existe toate coloanele matricei
unitate.
În acest sens plecăm de la observaţia că existenţa unui vector din
matricea unitate este echivalentă cu existenţa unei variabile care apare
doar în ecuaţia corespunzătoare lui 1 din acel vector, cu coeficientul 1.
Acest lucru poate fi obţinut în două moduri:
1) Alegem o nouă funcţie obiectiv care să-şi atingă extremul
printre soluţiile pozitive chiar pentru y = 0 şi în momentul când am
obţinut soluţia respectivă pornim cu aceasta ca soluţie iniţială
algoritmul simplex pentru fosta problemă (Metoda celor două faze).
2) Adăugăm la vechea funcţie obiectiv noi variabile y cu
coeficienţi aleşi astfel încât aportul variabilelor la valoarea funcţiei
să fie contrar scopului dorit (infinit pozitiv într-o problemă de
minim şi infinit negativ într-o problemă de maxim) (Metoda
coeficienţilor de penalizare)
Vom detalia în continuare cele două metode:

Metoda celor două faze


Fie dată problema de programare liniară la forma standard de
maxim:

max c T'  x

 A x  b (2.77)
 x0

în care am aranjat deja ca toţi termenii liberi să fie pozitivi .

Faza 1
Constă în rezolvarea unei probleme de programare liniară auxiliară,
asociată problemei iniţiale. Astfel construim problema:

 f ( x a )  min( x ma 1  x ma  2  ...  x ma  n )

 Ax  I m x a  b (2.78)
 x ,xa  0

49
Programare liniară
unde xa sunt variabilele artificiale ce se introduc în restricţiile
problemei atât cât sunt necesare în scopul formării bazei unitare; Im
matricea unitate de ordin m.
Rezolvăm cu algoritmul simplex această problemă, pornind
rezolvarea de la baza matrice unitate, putem ajunge la două situaţii:

1. minimul funcţiei f este strict pozitiv, aceasta fiind echivalent cu faptul


că egalitatea Ax + Imxa = b se poate obţine doar pentru Imxa > 0 sau altfel
spus Ax > b pentru orice x  0, deci sistemul Ax = b nu are soluţii
admisibile şi în concluzie problema iniţială nu are soluţie.
2. minimul funcţiei f este 0, în acest caz, soluţia optimă obţinută verifică
Ax = b, fiind în concluzie o soluţie admisibilă de bază a primei probleme.

Faza 2
Începând de la soluţia găsită la Faza 1 se rezolvă problema
iniţială cu algoritmul simplex. Se îndepărtează din tabelul simplex toate
elementele corespunzătoare variabilelor artificiale (cu excepţia celor care
rămân în bază), introducând coeficienţii funcţiei obiectiv din problema
iniţială.
Dezavantajul metodei constă în faptul că tabelul simplex final de
la faza 1 trebuie modificat pentru a se obţine tabelul simplex iniţial de la
faza 2, eliminându-se coloanele corespunzătoare lui y şi totodată nu vom
avea în tabelele simplex ale problemei iniţiale inversa bazei (se găsea în
dreptul coloanelor matricei unitate din prima fază) necesară în anumite
variante ale algoritmului simplex.

Metoda coeficienţilor de penalizare


Fie problema de programare liniară la forma standard de
minimizare:
min c T x

 A x  b (2.79)
 x0

în care toţi termenii liberi sunt pozitivi şi matricea A nu conţine nici un


vector coloană unitar.
Construim problema:

50
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

 f  max( c T x  My)

 A x  y  b (2.80)
 x, y  0

în care M este o constantă presupusă foarte mare (mai mare decât


orice constantă care ar putea apare în rezolvarea problemei).
Rezolvăm problema cu algoritmul simplex pornind rezolvarea de
la baza matrice unitate, putând ajunge la trei situaţii:
1) problema are optim infinit, în acest caz, problema iniţială
are optim infinit ( nu prezintă interes din punct de vedere tehnico-
economic).
2) problema are optim finit şi în soluţia de bază avem cel puţin
o variabilă din vectorul y. În acest caz problema iniţială nu are
soluţii admisibile.
3) problema are optim finit şi în soluţia de bază nu avem nici o
variabilă din vectorul y. În acest caz problema iniţială are optim
finit, soluţia optimă şi maximul funcţiei fiind aceleaşi cu cele ale
problemei modificate.
Se remarcă faptul că variabilele y nu au aceeaşi semnificaţie
economică ca celelalte variabile, ele fiind introduse doar ca un artificiu
de calcul pentru a putea porni algoritmul simplex.

Observaţii :
 Dacă matricea restricţiilor conţine vectori unitari, atunci
numărul variabilelor artificiale introduse este egal cu m, numărul
vectorilor unitari, indiferent de tipul funcţiei obiectiv.
 Dacă la aplicarea algoritmului simplex, o variabilă artificială
iese din bază ea nu va mai intra niciodată, ceea ce arată
eliminarea din calculele ulterioare.

Exemplu 2.6
Un atelier de prelucrări mecanice fabrică două produse P1 şi P2.
Din structura de dezagregarea produselor se deduce că pentru
realizarea produsului P1 sunt necesare 3 componente de tip A şi un
component de tip B, iar pentru realizarea produsului P2 sunt necesare 1
component de tip A şi 4 componente de tip B.
Atelierul dispune în stoc de 10 componente de tip A.
Contractele cu furnizorii pentru componentele de tip B, arată că se
poate realiza aprovizionarea cu acesta în cantitate de cel puţin două
componente B.
51
Programare liniară
Beneficiul unitar pentru produsele P1 şi P2 sunt de 2 um, respectiv
de 3um.
Se doreşte să se stabilească planul de producţie care să
maximizeze beneficiul total.

Modelul matematic este următorul:

f  max( 2 x1  3 x 2 )
3 x1  x 2  10

 x1  4 x 2  2
 x ,x 0
 1 2
unde x1 , x2 , reprezintă numărul de produse de tip P1 respectiv P2.
Forma standard a problemei va fi:
max f  2 x1  3 x2
3 x1  x 2  x3  10

 x1  4 x 2  x 4  2
 x ,x ,x ,x 0
 1 2 3 4
În matricea A vom introduce variabila x5 cu coeficientul 1 în a
doua ecuaţie şi împreună cu coeficienţii variabilei x3 în final vom avea de
rezolvat problema prin cele două metode:
Metoda celor două faze Metoda coeficienţilor de
penalizare
min( x5 ) max( 2 x1  3 x 2  Mx5 )
 3 x1  x2  x3  10  3 x1  x 2  x3  10
 
 x1  4 x2  x4  x5  2  x1  4 x 2  x 4  x 5  2
 x ,x ,x ,x ,x  0  x ,x ,x ,x ,x 0
 1 2 3 4 5  1 2 3 4 5

Aplicând Metoda celor două faze vom obţine succesiv tabele:

0 0 0 0 1
cB xB xB x1 x2 x3 x4 x5
0 x3 10 3 1 1 0 0
1 x5 2 1 4 0 -1 1
2 1 4 0 -1 0
0 0 0 0 1
cB xB xB x1 x2 x3 x4 x5
0 x3 19/2 11/4 0 1 1/4 -1/4
0 x2 1/2 1/4 1 0 -1/4 1/4
0 0 0 0 0 -1

52
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

Am obţinut optimul egal cu 0 în soluţia de bază (x3,x2) care va fi


soluţia iniţială pentru algoritmul simplex aplicat problemei iniţiale în a
doua fază.
Eliminăm din tabel coloana lui x5, înlocuim valorile coeficienţilor
funcţiei obiectiv şi deci şi valoarea acesteia, valorile z Bj  c j şi rezolvăm
problema în continuare, plecând de la baza primal admisibilă
determinată, cu algoritmul simplex primal, obţinând tabelele de mai jos:

2 3 0 0
cB xB xB x1 x2 x3 x4
0 x3 19/2 11/4 0 1 1/4
3 x2 1/2 1/4 1 0 -1/4
3/2 -5/4 0 0 -3/4
2 3 0 0
cB xB xB x1 x2 x3 x4
0 x3 4 0 -11 1 3
2 x1 2 1 4 0 -1
4 0 5 0 -2
2 3 0 0
cB xB xB x1 x2 x3 x4
0 x4 4/3 0 -11/3 1/3 1
2 x1 10/3 1 1/3 1/3 0
20/3 0 -7/3 2/3 0
2 3 0 0
cB xB xB x1 x2 x3 x4
0 x4 38 11 0 4 1
3 x2 10 3 1 1 0
30 7 0 3 0

Soluţia optimă a primei probleme este deci x1 = 0 şi x2 = 10 care dă


un maxim al funcţiei egal cu 30.
Aplicând Metoda coeficienţilor de penalizare vom obţine succesiv
următoarele tabele:

2 3 0 0 -M
cB xB xB x1 x2 x3 X4 x5
0 x3 10 3 1 1 0 0
-M x5 2 1 4 0 -1 1
-2M -M -4M 0 M -M
-M-2 -4M-3 0 M 0
2 3 0 0 -M
cB xB xB x1 x2 x3 x4 x5
0 x3 19/2 11/4 0 1 ¼ -1/4
3 x2 1/2 1/4 1 0 -1/4 1/4
3/2 -5/4 0 0 -3/4 M+3/4
53
Programare liniară
2 3 0 0 -M
cB xB xB x1 x2 x3 x4 x5
0 x3 4 0 -11 1 3 -3
2 x1 2 1 4 0 -1 1
4 0 5 0 -2 2+M
2 3 0 0 -M
cB xB xB x1 x2 x3 x4 x5
0 x4 4/3 0 -11/3 1/3 1 -1
2 x1 10/3 10/3 1 1/3 0 0
20/3 0 -7/3 2/3 0 M
2 3 0 0 -M
cB xB xB x1 x2 x3 x4 x5
0 x4 38 11 0 4 1 -1
3 x2 10 3 1 1 0 0
30 7 0 3 0 M

2.3.4. Interpretarea a algoritmului simplex primal

Se consideră problema de optimizare a activităţii unei firme


producătoare. Aceasta realizează n produse , cu un profit unitar cj ,
j  1, n . Firma utilizează mai multe resurse prime Ri , i  1, m ,
disponibile în cantităţile limitate bi. Consumurile specifice de resurse
pentru fiecare produs sunt aij , i  1, m , j  1, n .
Obiectivul firmei este obţinerea unui profit total maxim, cu
restricţiile ce provin din consumul integral al resurselor disponibile .
Modelul de optimizare a activităţii firmei este reprezentat de
problema de programare liniară în forma standard :

(max) z  c T x

 Ax  b (2.81)
 x0

în care xj , j  1, n , este cantitatea din produsul j ce urmează a fi


fabricată.
Consumarea (utilizarea) integrală a resurselor nu este strictă,
deoarece în lista operaţiilor productive se poate include un număr de
operaţii fictive (corespunzătoare variabilelor ecart) ale căror valori să
reprezinte cantitatea din resurse neconsumată.
În soluţia de bază a algoritmului simplex numărul componentelor
nenule nu depăşeşte numărul restricţiilor.

54
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

De aceea, în orice soluţie optimă a problemei, numărul produselor


ce urmează a fi fabricate nu depăşeşte numărul resurselor folosite .
Coloanele a(j) din baza B ce corespund operaţiilor j le vom numi
operaţii de bază, celelalte fiind operaţii secundare.
Programul optim prevede obţinerea, numai prin operaţiile de
bază, a produselor, astfel încât să fie consumate integral resursele
disponibile.
O posibilitate de a obţine un program mai bun constă în
identificarea unor operaţii secundare care să înlocuiască o parte din
operaţiile de bază curente. Pentru acesta este necesar un criteriu de
comparare a operaţiilor secundare cu cele de bază .
În ipoteza că baza B=[a(1), a(2), …..,a(m)], din relaţia (2.59)

yBj=B-1a(j) , j  1, n (2.82)

deducem :

A(j)= ByBj , j  1, n (2.83)

care se poate scrie

A( j )  y1Bj A(1)  y2Bj A( 2)  ...  ymj


B ( m)
A (2.84)

Relaţia de mai sus are următoarea semnificaţie din punct de


vedere tehnico-economic, fabricarea unei unităţi de produs j este
echivalentă cu fabricarea cantităţilor y1B, j , y2Bj ,..., ymj B
din produsele
operaţiilor de bază. Ca urmare, pentru fabricarea unei unităţi din produsul
j este necesar a diminua producţia operaţiilor de bază cu cantităţile
y1Bj , y 2Bj ,..., y mj
B
.
Aportul produsului j la creşterea profitului firmei poate fi
comparat cu aportul valoric al cantităţilor y1B, j , y2Bj ,..., ymj
B
.
În consecinţă, dacă:

z Bj  c j  c1 y1Bj  c2 y2Bj  ...  cm ymj


B
cj  0 (2.85)

fabricarea produsului j nu este rentabilă întrucât nu conduce la o


majorarea valorii (profitului) producţiei curente.
Dacă pentru toate operaţiile secundare avem
55
Programare liniară

z Bj  c j  0, j  1, n (2.86)

atunci programul de fabricaţie curent este optim. Acesta este, criteriul de


optimalitate al algoritmului simplex.
Dacă z Bj  c j  0 , atunci activitatea secundară j conduce la o
majorare a profitului realizabil prin programul curent, egală cu
 ( z Bj  c j ) .
Dintre operaţiile secundare j  J rentabile în raport cu operaţiile
de bază se va alege acea operaţie k care asigură cea mai mare viteză de
creştere a valorii curente a producţiei ( interpretarea criteriului de intrare
în bază).
O altă problemă care se mai pune este stabilirea cantităţii din
produsul j care se poate realiza în condiţiile date.
Fabricarea unei cantităţi  din acest produs implică diminuarea
producţiei din produsele operaţiilor de bază astfel:

x1  x1B  y1Bk , x2  x2B  y2Bk ,..., xm  xmB  ymk


B
(2.87)

Evident, desfăşurarea unei activităţi la un nivel negativ este lipsită


de sens economic.
Astfel este necesar ca :

xi  xiB  yik
B
 0, i  1, m (2.88)

de unde obţinem condiţia:

xiB
   0  min (2.89)
B
i yik
B
y 0
ik

Presupunem că valoarea  0 se obţine pentru indicele 1. Atunci:

xB B
xl  xlB   0 ylk
B
 xlB  l ylk 0 (2.90)
B
ylk

56
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

Ca urmare, operaţia l nu va mai fi folosită, iar în locul ei se va


utiliza operaţia k, care asigură creşterea maximă a valorii curente a
producţiei şi, implicit, maximizează profitului firmei.
Aceasta este interpretarea a criteriului de ieşire din bază al
algoritmului simplex.
Cazul optimului infinit, ca soluţie a problemei de programare
liniară, nu este semnificativ din punct de vedere economic.

2.4. Dualitatea în programarea liniară

2.4.1. Problema duală. Fundamente teoretice.

Problema duală
Dualitatea în programarea liniară ocupă un rol important atât din
punct de vedere teoretic cât şi din punct de vedere practic. Pe teoremele
de dualitatea se bazează mulţi algoritmi de rezolvare a problemelor de
programare liniară.
Fie problema de programare liniara dată sub forma generală
numită problema primală :

 a11 x1  a12 x2  a13 x3  b1


a x  a x  a x  b
 21 1 22 2 31 3 2
 a31 x1  a32 x 2  a33 x3  b3 problema primală (2.91)
 x  0 ; x arbitrar ; x  0
 1
 
2 3
 min c1 x1  c 2 x2  c3 x3

Numim problemă duală a problemei de programare liniara


următoarea problema de programare liniara:


 max b u  b u  b u
  1 1 2 2  3 3

 a11 u1  a 21 u 2  a31 u3  c1
 
a12 u1  a 22u 2  a32u3  c 2 problema duală (2.92)
   
 a13 u1  a 23 u 2  a33 u3  c3
 u1  0 ; u 2 arbitrar ; u3  0

Observăm că duala problemei dualei este chiar problema primală.


Datorită legăturii strânse ce se stabileşte între aceste probleme care sunt

57
Programare liniară
duale una celeilalte, vom spune ca problema (2.91) şi problema (2.92)
formează un cuplu de probleme duale.
Problema duală se obţine din problema primală folosind
următoarele transformări :

- Termenii liberi din problema primală devin coeficienţi ai


funcţiei obiectiv din problema duală.
- Coeficienţii funcţiei obiectiv din problema primală devin
termeni liberi în problema duală.
- O problemă de maximizare primală devine problemă de
minimizare duală.
- Matricea coeficienţilor din problema duală este transpusa
matricei coeficienţilor din problema primală
- Variabilele duale corespunzătoare unor restricţii concordante
din problema primală sunt nenegative, iar cele
corespunzătoare unor restricţii primale neconcordante sunt
nepozitive.
- Variabilele primale negative le corespund în problema duală
restricţii concordante, iar variabilelor primale pozitive le
corespund în problema duală restricţii neconcordante.

- Variabilele duale corespunzătoare restricţiilor primale care


sunt ecuaţii, pot fi de semn oarecare.
- Variabilelor primale oarecare le corespund restricţii duale care
sunt ecuaţii.

Exemplul 2.7 Determinaţi duala problemei de programare liniară:

f = max(2x1 – 5x2 + 4x3)


 x1  x 2  4 x 3  7
 x  5 x  3x  6
 2 1 3

 x1  2 x 3  3
 x 3  2 x1  5 x 2  8
x1  0, x2 oarecare, x3  0

Conform regulilor de mai sus vom avea:


 duala este de minim deoarece primala este de maxim;
 variabilele dualei vor fi:
u1 corespunzătoare restricţiei: x1 – x2 + 4x3  7
u2 corespunzătoare restricţiei: x2 – 5x1 + 3x3 = 6
58
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

u3 corespunzătoare restricţiei: x1 + 2x3  3


u4 corespunzătoare restricţiei: –x3 + 2x1 - 5x2  8

 funcţia obiectiv a dualei va fi produsul dintre termenii liberi ai


restricţiilor primalei cu variabilele corespunzătoare din duală:
g = 7u1 + 6u2 + 3u3 + 8u4
 duala va avea 3 restricţii, câte variabile are primala, ele obţinându-se
astfel:
Prima restricţie (asociată variabilei x1)
- termenul stâng al restricţiei se obţine înmulţind coeficienţii
variabilei x1 din cele 4 restricţii ale primalei cu variabilele
corespunzătoare acestora din duală: u1 –5u2 + u3 + 2u4
- termenul liber al restricţiei va fi coeficientul lui x1 din funcţia
obiectiv a primalei, adică b1 = c1 = 2
- deoarece variabila corespunzătoare acestei restricţii, x1, este
negativă, restricţia va fi neconcordantă şi deoarece duala este problemă
de minim rezultă că va fi cu .
În concluzie, prima restricţie va fi: u1 –5u2 + u3 + 2u4  2
Analog se vor determina şi celelalte două restricţii:
-u1 + u2 - 5u4 = -5
4u1 + 3u2 + 2u3 - u4  4
 restricţiile de semn ale variabilelor dualei vor fi:
 u1  0, deoarece restricţia corespunzătoare este neconcordantă;
 u2 oarecare, deoarece restricţia corespunzătoare este egalitate;
 u3  0, deoarece restricţia corespunzătoare este concordantă;
 u4  0, deoarece restricţia corespunzătoare este neconcordantă.
În final, problema duală este:

(min) 7u1 + 6u2 + 3u3 + 8u4


 u1  5u 2  u3  2u 4  4

  u1  u 2  5u 4  5
4u  3u  2u  u  4
 1 2 3 4
u1  0, u2 oarecare, u3  0, u4  0

Exemplul 2.8

Să se scrie duala problemei de programare liniară dată în formă canonică:

59
Programare liniară

max 3x1  2 x 2  5 x3  x 4 
 x  x  3x  x  15
 1 2 3 4

2 x1  x3  x 4  5
 x  2 x  x  10
 2 3 4

 x1 ,..., x 4  0

Se construieşte tabelul cu datele problemei iniţiale:


max
min 3 2 5 1
u1 1 -1 3 1 15
u2 2 0 -1 -1 5
u3 0 1 2 -1 10
x1 x2 x3 x4

Aşadar, problema duală este:

min 15u1  5u 2  10u 3 


u  u  3
 1 2

 u1  u 3  2

3u1  u 2  2u 3  5
u1  u 2  u 3  1

u1 , u 2 , x3  0

Fundamente teoretice
Fără a restrânge din generalitate ne vom ocupa în continuare de
cuplul de probleme duale (2.91) - (2.92), prima fiind considerată
problema primală, iar cea de-a doua, problema duală.
Se notează


P  x  R n Ax  b, x  0  (2.93)

D  u  R m AT u  c, u  0  2.94)
Mulţimile soluţiilor admisibile (sau programelor) ale problemei
primale (2.91), respectiv, duale (2.92).
Teorema 2.8. Dacă x  P şi u  D , atunci c T x  bT u .

60
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

Teorema 2.9. Fie x *  P , u *  D şi c T x *  bT u * . Atunci x* nu este


soluţie optimă a problemei primale, iar u* este soluţie optimă a
problemei duale

Propoziţia 2.1. Dacă L este o matrice antisimetrică (LT = -L), atunci


sistemul de inegalităţi liniare

l  t  0
 (2.95)
t  0

are cel puţin o soluţie t astfel încât

Lt  0 (2.96)

Teorema 2.10. (Teorema fundamentală a dualităţii) Fie cuplul de


probleme duale (2.91) - (2.92). Atunci una şi numai una din următoarele
situaţii este posibilă :
a) Ambele probleme au soluţii admisibile. În acest caz, ambele
probleme au soluţii optime şi valori optime ale funcţiilor obiectiv
sunt egale.
b) Una din probleme are soluţii admisibile, iar cealaltă nu are (este
incompatibilă). În acest caz, problema compatibilă are optim
infinit.
c) Nici una dintre probleme nu are soluţii admisibile.

Teorema 2.11. (Teorema ecarturilor complementare). Fie cuplul de


probleme duale canonice (2.91) - (2.92). Atunci x  P şi u  D sunt
soluţii optime pentru cele două probleme dacă şi numai dacă:

 
u T A x  b  0
(2.97)
 T

u c  AT u  0 
Exemplul 2.9
Într-un atelier mecanic se produc două de tipuri de piese P1, P2.
Timpii unitari de prelucrarea celor două piese pe cele două maşini
unelte M1, M2, profitul unitar şi disponibilul de timp al maşinilor unelte
sunt date în tabelul de mai jos:

61
Programare liniară
P1 P2 Disponibil
resurse
M1 4 3 16sp
M2 1 2 6sp
Profit 3um 7um
unitar

Modelul matematic pentru problema dată este:

 f  max( 3 x1  7 x 2 )
4 x  3 x  16
 1 2

 x1  2 x 2  6
 x1 , x 2  0

Mulţimea soluţiilor admisibile ale problemei (primale) este


reprezentată în fig. 2.6.
* *
Problema admite soluţia optimă x1  0 , x 2  3 , pentru fiecare
funcţia obiectiv are valoarea f max  21 .

x2

d1

C(0,3)

B(14/5,8/5)

d2

0 A(4,0) x1

Fig.2.6
Problema duală este:
 g  min(16 u1  6 u 2 )
4u  u  3
 1 2

3u1  2u 2  7
u1 , u 2  0

Mulţimea soluţiilor admisibile ale problemei duale este


reprezentată în fig.2.7.

62
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

u2

d2
d1

0 A(0,3/4) B(0,7/2) u1

Fig.2.7

* *
Problema admite soluţia optimă u 1  0 , u 2  7 / 2 .Valoarea
funcţiei obiectiv este g min  21 , evident aceeaşi ca şi în cazul problemei
primale.
Din cele arătate se constată că prin rezolvarea uneia dintre cele
două probleme duale se poate determina şi soluţia celeilalte. Tabelul
simplex final corespunzător uneia dintre probleme conţine componentele
soluţiilor optime ale ambelor probleme.
Aceste rezultate teoretice se utilizează în practica industrială în
cazul când planul de producţie conţine o varietate mare de produse ce se
fabrică în aceleaşi condiţii tehnico economice.

2.4.2. Algoritmul simplex dual

Fie problema de programare liniară în forma standard

min c T x

 Ax  b (2.98)
x  0

unde x, c  R n , b  R m , A  M mn , cu rang A = m < n.
Duala acestei probleme este :

max b T u
 '
A u  c (2.99)
u arbitrar


63
Programare liniară
Definiţia 2.9 O bază B formată cu m coloane liniar independente a lui A
se numeşte dual admisibilă dacă sunt satisfăcute condiţiile

z Bj  c j  0, j  1, n (2.100)

Propoziţia 2.2. Dacă B este o bază dual admisibilă, atunci

u BT  c BT B 1 (2.101)

este o soluţie a problemei duale (2.98).

Teorema 2.12. (Teorema de optimalitate). Fie B o bază dual admisibilă


 B

pentru problema primală (2.98). Fie mulţimea I _  i  I x i  0 I_=,
B
atunci soluţia de bază asociată bazei B, x  B 1b , este o soluţie optimă
a problemei (2.98).

Teorema 2.13. (Teorema de incompatibilitate a problemei primale). Fie


B o bază dual admisibilă pentru problema primală (2.92), iar I_,
Deci există i  I _ astfel încât yijB  0, j  J , atunci problema (2.92) nu
are soluţii.

Teorema 2.14. (Teorema de îmbunătăţire a soluţiei) Fie B o bază dual


admisibilă pentru problema primală (4.29), iar I_. Dacă pentru orice
i  I _ există j  J astfel încât yijB  0 , şi dacă se alege l  I _
arbitrar, iar k  J astfel încât să fie satisfăcută condiţia :


zj  cj 
B
 z k  ck
B
min  B  (2.102)
j
B
ylj 0

 y lj 
 ylkB

atunci matricea B’ obţinută din B prin înlocuirea coloanei A(l) cu


coloana A(k) este o bază dual admisibilă, iar programul dual asociat uB’
este cel puţin la fel de bun ca programul uB

Algoritmul simplex dual

Pentru problema primală de minimizare sau maximizare este:

64
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

Pasul 1. Se determină o bază dual admisibilă iniţială B.

B B
Pasul 2. Se calculează x , z , y Bj , z Bj ,  c j , j  1, n .

Pasul 3. Se determină mulţimea



I _  i  I xi  0
B

B
Dacă I_, atunci STOP : x este program optim al problemei; astfel se
trece la pasul următor.

Pasul 4. Se determină indicele k  I _ cu criteriul de ieşire din bază

B
min x i  x l
iI _
B

Dacă yijB  0, j  1, n , atunci STOP : problema nu are soluţii; astfel se


determină indicele k  J cu criteriul de intrare în bază:


 zj cj
B

 z k  ck
B
min  B 
j
 ylj  ylkB
yljB 0  

Pasul 5. Fie baza B’ obţinută din B prin înlocuirea coloanei A(l) cu


coloana A(k).
Se trece la Pasul 2, înlocuind peste tot baza B cu baza B’.

Algoritmul simplex dual poate fi exprimat sintetic sub forma


schemei logice din fig.2.8

65
Programare liniară
START

Construieste
tabel simplex
initial

Exista Nu
variabile de baza cu valori Indica STOP
negative ? solutia optima

Da
Determina
linia pivotului

Exista Nu
valori negative in linia Nu exista STOP
pivotului? solutii

Da
Determina
coloana pivotului

Calculeaza un nou
tabel simplex

Fig.2.8

Exemplul 2.10

Să se rezolve problema de programare liniară:

max  3x1  2 x 2 
 x  2 x  3x  4
 1 2 3

2 x1  x 2  x3  2
 x1 , x 2 , x3  0

Se aduce problema la forma standard prin introducerea variabilelor de


compensare x4, x5 şi se înmulţesc cu –1 cele două restricţii:

max  3x1  2 x 2 
 x  2 x  3x  x  4
 1 2 3 4

 2 x1  x 2  x3  x5  2
 x1 ,..., x5  0

66
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

Baza iniţială B este matricea unitate formată cu coloanele A(4), A(5) .


Tabelul simplex asociat are ca variabile de bază pe x4 şi x5:

-3 -2 0 0 0
cB V.B. V.V.B. x1 x2 x3 x4 x5
0 x4 -4 -1 2 -1 1 0
0 x5 -2 -2 -1 1 0 1
0 3 2 0 0 0

Baza iniţială este dual admisibilă deoarece z Bj  c j  0 . Se poate


aplica deci algoritmul simplex dual. Soluţia asociată bazei B admisibilă
întrucât: x1  x 2  x 3  0 , x 4  4 , x 5  2 .
Mulţimea I _  4,5 . Conform criteriului de ieşire din bază

avem: min x i  min  4,2  4  x 4 ; se obţine l  4 , deci din bază
iI _
B B

va ieşi vectorul A(4). Conform criteriului de intrare în bază avem:

 z Bj  c j   3 0  zB  c
min   = min  ,  0 3 B 3 ;
 y4B jj 0   1  1 
B
j
y4B j 0 
 y4 j y43

se obţine k = 3, deci în bază va intra vectorul corespunzător variabilei x3.


Noul tabel simplex este:
-3 -2 0 0 0
cB V.B. V.V.B. x1 x2 x3 x4 x5
0 x4 4 1 -2 1 -1 0
0 x5 -6 -3 1 0 1 1
0 3 2 0 0 0

Soluţia nu este optimă întrucât x 5  6 . Din bază va ieşi vectorul


corespunzător variabilei x3=5 şi va intra vectorul corespunzător variabilei
x1. Se obţine tabelul simplex :

67
Programare liniară

-3 -2 0 0 0
cB V.B. V.V.B. x1 x2 x3 x4 x5
0 x4 2 0 -5/3 1 -2/3 1/3
-3 x5 2 1 -1/3 0 -1/3 -1/3
0 0 3 0 1 1

2.4.3 Interpretarea economică a dualităţii

Introducerea dualităţii este motivată din mai multe puncte de vedere:

Teoretic. Una din problemele centrale ale programării matematice este


caracterizarea situaţiilor în care există optimul unei probleme şi găsirea
unor metode prin care să recunoaştem optimalitatea unei soluţii.
Teorema fundamentală a dualităţii şi teorema ecarturilor
complementare reprezintă rezultate chiar în acest sens, în care se
foloseşte dualitatea.
Practic. Putem rezolva o problemă rezolvând problema duală a acesteia
sau cunoscând soluţia dualei.
În unele cazuri, rezolvarea dualei este mult mai uşoară decât
rezolvarea primalei, de exemplu când numărul de restricţii al primalei
este mai mare decât numărul de variabile al acesteia sau când primala
necesită mai multe variabile suplimentare decât duala.
Economic. În cele mai multe probleme economice, a căror rezolvare se
face printr-un model de programare liniară, soluţia dualei aduce o serie
de informaţii suplimentare despre problema studiată.
Semnificaţia economică a soluţiei dualei depinde de specificul problemei
şi trebuie găsită de la caz la caz.
Având în vedere că max[f(x)] = min [g(u)], rezultă că, dacă,
cantitatea disponibilă din resursa Ri creşte cu o unitate, atunci valoarea
funcţiei obiectiv creşte cu ui, deci ui măsoară creşterea valorii funcţiei
obiectiv determinată de creşterea cu o unitate a cantităţii disponibile bi.
Aceste evaluări obţinute dintr-un program optim au fost denumite
în literatura de specialitate "preţuri umbră"(„shadow price”).
Preţul umbră ui arată cu cât se modifică funcţia obiectiv a
problemei duale, atunci când termenul liber al restricţiei Ri se "relaxează"
cu o unitate. A "relaxa" are semnificaţia de a spori cantitatea disponibilă
bi a unei resurse deficitare sau, pentru restricţiile de tip calitativ cu limită
n
inferioară impusă (  a ij x j  bi), de a reduce nivelul termenului liber bi.
j1

68
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

Este evident că, dacă o resursă nu este utilizată în întregime


n
pentru satisfacerea programului optimal xB (  a ij x j < bi), atunci ui = 0
j1
iar funcţia obiectiv nu este afectată de sporire a cantităţii disponibile bi.
Preţurile umbră (preţuri duale) aduc informaţii suplimentare pentru
analiza eficienţei economice a resurselor şi a diferiţilor indicatori
economici sau tehnici care apar în restricţiile unei probleme de
programare liniară.
Pe baza lor se pot fundamenta deciziile privind alocarea
judicioasă a resurselor, se pot stabili măsuri de stimulare a consumului
raţional al resurselor, se determină cât mai corect nivelul minim şi maxim
al diferiţilor indicatori tehnici şi economici de care depinde structura
planului optim.
Soluţia optimă obţinută prin utilizarea datelor iniţiale poate
constitui un punct de plecare pentru analiza economică privind alocarea
eficientă a resurselor.
Pentru problemele în care se cere maximizarea funcţiei f(x),
indicatorii zj reprezintă costul unitar de fabricaţie al produsului j, rezultat
din evaluarea coeficienţilor aij prin preţurile umbră ataşate restricţii1or.
Rezultă că, prin calcularea diferenţei zj-cj, se compară acest cost
unitar cu coeficientul cj (preţ unitar, beneficiu unitar etc.) din funcţia
obiectiv.
Dacă există diferenţe negative (zj-cj < 0) înseamnă că, la
activităţile respective, preţul umbră al produsului j (costul unitar de
fabricaţie exprimat în indicatori ui) este mai mic decât venitul realizat şi
de aceea activitatea aj este eficientă.
Aşa se explică faptul că va intra în bază vectorul a(k) ce
corespunde diferenţei (zj-cj) minime.
În momentul în care toate diferenţele sunt pozitive (zj-cj  0)
rezultă că nu mai există activităţi eficiente şi prin urmare soluţia de bază
analizată este optimă.
În cazul problemelor de minim, indicatorii zj se pot interpreta ca
venituri, exprimate în preţurile umbră ale restricţiilor, ce se obţin prin
realizarea unei unităţi din produsul j.
Prin urmare, dacă există diferenţe pozitive (zj-cj > 0), activităţile
aj corespunzătoare sunt eficiente, deoarece se realizează un venit unitar
mai mare decât costul unitar de fabricaţie (zj > cj).
De aceea, va intra în bază activitatea ak, corespunzătoare
diferenţei maxime, iar soluţia de bază se consideră optimă atunci când
toate diferenţele (zj-cj) sunt nepozitive .

69
Programare liniară
Exemplul 2.11

O firmă fabrică trei tipuri de produse P1, P2, P3, utilizând patru
tipuri de resurse R1, R2, R3, R4.
Procesul tehnologic de realizare a celor trei produse, timpul
disponibil al fiecărei resurse, cererea minimă şi maximă din fiecare
produs conform studiului de marketing, precum şi profitul unitar sunt
date în tabelul 2.5.
Tabelul 2.5
Produs Cerere Timp de prelucrare pe Profitul
unitatea de produs unitar
min max R1 R2 R3 R4 um/buc
SN FU32 RU320 Banc
400 de
control
P1 20 200 0.10 0.06 0.18 0.13 10
P2 0 100 0.12 0.05 0 0.10 12
P3 70 180 0.15 0.09 0.07 0.08 15
Timp disponibil pe 36 30 37 38 -
resursă

Să se determine programul de producţie astfel încât să se asigure


satisfacerea cererii cu un profit total maxim.

Notă m cu x1, x2 x3 variabilele de decizie ce reprezintă cantităţile


din produsele P1, P2 respectiv P3 ce trebuie fabricate astfel încât să se
atingă obiectivul propus.
Modelul matematic liniar al problemei cuprinde restricţiile
problemei, ce provin din limitarea disponibilităţii resurselor şi a cererii
produselor pe piaţă, funcţia obiectiv ce maximizează profitul total şi
condiţiile de nenegativitate care sunt evidente din punct de vedere
economic.

Modelul matematic al problemei este următorul:

70
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

 f  max( 10 x1  12 x 2  15 x3 )
 0.1x  0.12 x  0.15 x  36
 1 2 3
0.06 x1  0.05 x 2  0.09 x3  30

 0.18 x1  0.07 x 2  37

 0.13 x1  0.1x 2  0.08 x3  38
 20  x1  200

 0  x 2  100
 70  x3  180

 x1 , x 2 , x 3  0

Programul de producţie este dat de variabilele de decizie şi este


următorul:

 x1  135
 x 2  100


 x3  70
 F .O.  3.600u.m

Din produsul P1 se produc 135 unităţi, din produsul P2 se produc


100 unităţi, din produsul P3 se produc 70 unităţi. În aceste condiţii
valoarea funcţiei obiectiv este de 3.600 unităţi monetare.
Variabilele de compensare (ecart) arată utilizarea resurselor astfel:
 x4  0, Y1  100 - preţ umbră
0.1  135  0.12  100  0.15  70  36  36
Prima restricţie este satisfăcută cu semnul „=” ceea ce înseamnă
că resursa R1 este utilizată în totalitate, deci R2 este o resursă rară –
resursă a cărei lipsă / indisponibil ar limita sau modifica.
În acelaşi timp dacă în prima restricţie mărim timpul disponibil cu
o unitate (din 36u.t. la 37u.t.), valoarea F.O. se modifică în sens pozitiv
tocmai cu valoarea preţului umbră, deci profitul va fi de 3.700 u.m.
 x5  10.6 Y2  0 - preţ umbră
0.06  135  0.05  100  0.09  70  19.4  30 cu 10.6 u.t.
A doua restricţie este satisfăcută cu semnul „<”, deci din resursa
R2 rămâne un timp disponibil de 10.6 u.t. care nu este utilizat în procesul
de producţie, astfel resursa R2 nu este o resursă rară însă lipsa ei poate
limita producţia, preţul ei umbră fiind nul.

71
Programare liniară
 x6  5.7 Y3  0 - preţ umbră
0.18  135  0.07  100  31.3  37 cu 5.7 u.t.
A treia restricţie este satisfăcută cu semnul „<”, deci din resursa
R3 rămâne un timp disponibil de 5.7 u.t. care nu este utilizat în procesul
de producţie, astfel resursa R3 nu este o resursă rară însă lipsa ei poate
limita producţia, preţul ei umbră fiind nul.
 x7  4.85 Y4  0 - preţ umbră
0.13  135  0.1  100  0.08  70  33.15  38 cu 4.85 u.t.
A patra restricţie este satisfăcută cu semnul „<”, deci din resursa
R4 rămâne un timp disponibil de 4.85 u.t. care nu este utilizat în procesul
de producţie, astfel resursa R4 nu este o resursă rară însă lipsa ei poate
limita producţia, preţul ei umbră fiind nul.
 x8  65 Y5  0 - preţ umbră
1  135  135  200 cu 65 unităţi de produs P1.
Restricţia cinci este satisfăcută cu semnul „<”, deci din produsul
P1 rămân nevândute o cantitate de 65 unităţi de produs (u.p), astfel P1 nu
este o resursă rară deci are preţul umbră nul.
 x9  115 Y6  0 - preţ umbră
1  135  135  20 cu 115 unităţi de produs P1.
Restricţia şase este satisfăcută cu semnul „>”, deci produsul P1
are o cerere maximă de 115 u.p., astfel P1 nu este o resursă rară deci are
preţul umbră nul.
 x10  0 Y7  0 - preţ umbră
1  100  100  100
Restricţia şapte este satisfăcută cu semnul „=” ceea ce arată că
produsul P2 este vândut în totalitate – deci este o resursa rară, deci preţul
umbră ar trebui să fie nenul. El totuşi este nul, lucru uşor de explicat din
teorema ecarturilor complementare: condiţia necesară şi suficientă ca
două soluţii admisibile X,Y să fie soluţii optime respectiv la problema
primală şi duală este să fie simultan satisfăcute relaţiile:
Y T ( P0  AX )  0
 T
 (Y A  C ) X  0
Pentru ca un produs să fie zero este necesar ca un termen sa fie
zero sau ambii egali cu zero. Prin creşterea cu o unitate a restricţiei în loc
de 100 să avem 101 valoarea funcţiei obiectiv rămâne aceeaşi
F.O.=3.600u.m.
 x11  110 Y8  0 - preţ umbră
1  70  70  180 cu 110 unităţi de produs P3

72
Cercetări Operaţionale- Fundamentarea deciziilor în managementul sistemelor de producţie

Restricţia opt este satisfăcută cu semnul „<”, deci din produsul P 3


rămân nevândute o cantitate de 110 unităţi de produs (u.p), astfel P3 nu
este o resursă rară deci are preţul umbră nul.
 x12  0 Y9  0 - preţ umbră
1  70  70  70
Restricţia şapte este satisfăcută cu semnul „=” ceea ce arată că
produsul P3 este vândut în totalitate şi cererea maximă este corectă – deci
este o resursa rară, deci preţul umbră ar trebui să fie nenul.
El totuşi este nul, lucru uşor de explicat din teorema ecarturilor
complementare. Prin creşterea cu o unitate a restricţiei în loc de 70 să
avem 71 valoarea funcţiei obiectiv rămâne aceeaşi F.O.=3.600u.m.

În concluzie acelaşi plan de producţie se putea face, cu acelaşi


profit şi dacă restricţiile problemei erau următoarele:

 f  max( 10 x1  12 x 2  15 x3 )
 0.1x  0.12 x  0.15 x  36
 1 2 3
0.06 x1  0.05 x 2  0.09 x3  19.4

 0.18 x1  0.07 x 2  31.3

0.13 x1  0.1x 2  0.08 x3  33.15
 115  x1  135

 0  x 2  100
 65  x3  70

 x1 , x 2 , x 3  0

73

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