Sunteți pe pagina 1din 51

0. Introducere.

Disciplină matematică de dată relativ recentă, cercetarea operaţională şi-a

câştigat dreptul la existenţă prin importanţa sa practică, fiind solicitată permanent

să furnizeze metode şi instrumente matematice pentru rezolvarea problemelor de

conducere şi organizare, tehnologice şi economice.

Cercetarea operaţională este o metodă de observare a fenomenelor şi de

analiză matematică a raporturilor lor, permiţând folosirea cea mai economică a

unor mijloace pentru obţinerea unui obiectiv economic; ea se constituie într-un

ansamblu de metode şi tehnici raţionale de analiză şi de sinteză a fenomenelor de

organizare în vederea elaborării celei mai bune decizii.

Metodele matematice stau la baza gestiunii sau a conducerii ştiinţifice a

întreprinderilor, la studiul balanţelor economiilor şi a planurilor de dezvoltare.

Metodele cercetării operaţionale se referă la probleme care au un număr

mare sau o infinitate de soluţii admisibile, oferind procedeul de selecţie, din spaţiul

soluţiilor, a unei singure soluţii, numită soluţia optimă, şi care satisface una sau

mai multe cerinţe fundamentale. Astfel, metodele cercetării operaţionale devin

auxiliare preţioase ale deciziei.

1. Generalităţi. Clasificări.

 
O mare parte din problemele care se pun în conducerea economică a

agenţilor economici sunt problemele de optimizare.

Modelarea matematică a acestor probleme oferă posibilitatea determinării

soluţiilor optime, contribuind pe această cale la ridicarea eficienţei economice a

agenţilor economici respectivi. În multe cazuri concrete problemele economice pot

fi transformate în probleme matematice în modul următor.

Dacă notăm prin xj, 1£j£n, nivelele (necunoscute iniţial) la care trebuie să

se desfăşoare cele n activităţi luate în considerare şi prin f(x1,x2,...,xn), funcţia

obiectiv (sau funcţia de eficienţă sau funcţia criteriu ), problema poate fi pusă

astfel:

Să se afle valorile variabilelor x i, 1 £ i £ n, astfel încât f(x1,x,,...,xn) să ia

valoarea maximă (minimă):

max f(x1,x,,...,xn) (0.1)

şi să fie respectate condiţiile:

fj(x1,x2,...,xn) ³ 0, 1 £ j £ m , (0.2)

care se numesc restricţiile problemei.

Această formulare a problemei este cunoscută sub numele de problema

programării neliniare. Dacă în locul inecuaţiilor (0.2) avem egalităţi, atunci se

obţine problema clasică a extremului cu legături.

O clasă separată o constituie problemele de optimizare discretă.

Dacă SÌ{1,2,...,n} şi M este o submulţime finită de numere întregi,

problema se enunţă astfel:


max f(x1,x2,...,xn) (0.3)

fj(x1,x2,...,xn) ³ 0, 1 £ j £ m , (0.4)

xsÎM, sÎS . (0.5)

Dacă S={1,2,...,n}, problema (0.3), (0.4), (0.5) este o problemă de

programare în numere întregi. Dacă M={0,1} avem o problemă în variabile

bivalente. Dacă S este o submulţime strictă a mulţimii {1,2,...,n}, avem o

problemă mixtă cu variabile continue şi întregi, respectiv bivalente.

Unele fenomene şi activităţi care apar în domeniul conducerii economice a

agenţilor economici pot fi numite procese de decizie în mai multe etape şi pot fi în

genere formulate ca probleme de programare liniară sau neliniară; datorită

dimensiunilor mari, rezolvarea lor este dificilă cu metodele cunoscute.

Metoda care vine să suplinească acest lucru este metoda programări

dinamice, bazată pe folosirea unor ecuaţii funcţionale şi pe principiul de

optimalitate al lui Bellman.

O problemă deosebit de dificilă apare în cazul în care unul sau mai mulţi

parametri dintre cei ce intervin în funcţiile f şi fj , 1 £ j £ m, sunt necunoscuţi a

priori sau sunt variabile aleatoare ale căror funcţii de repartiţii se pot determina; în

acest caz avem o problemă de programare stochastică.

În multe probleme de organizare şi conducere economică apar situaţii

conflictuale analoge cu problema determinării strategiei cu ajutorul căreia se poate

obţine câştigul maxim într-un joc; teoria jocurilor are numeroase aplicaţii practice

în acest domeniu.
Teoria grafurilor şi reţelelor de transport are aplicaţii deosebit de

importante în organizarea raţională a transporturilor, în conducerea economică a

lucrărilor complexe, precum şi în alte probleme cu caracter combinatoriu.


CAPITOLUL I

PROGRAMARE LINIARĂ

1.1. Exemple de probleme care conduc la

programare liniară.

a) Folosirea eficientă a resurselor limitate.

Un manager de agent economic trebuie să rezolve destul de des următoarea

problemă:

Avem la dispoziţie mai multe resurse (materie primă, forţă de muncă,

maşini-unelte, resurse financiare etc.) care ne sunt date în cantităţi limitate. Vom

nota cu i numărul de ordine al resursei şi cu bi cantităţile disponibile din resursa

i. Cu ajutorul acestor resurse se pot desfăşura mai multe activităţi (de exemplu:

procese de producţie). Vom nota cu j numărul de ordine al activităţii desfăşurate

şi cu xj nivelul (necunoscut) la care trebuie să se desfăşoare această activitate. De

exemplu: dacă avem procesul de producţie j, care constă în fabricarea unui anumit

produs, vom nota cu xj cantitatea ce va fi produsă. Notăm cu aij cantitatea din

resursa i necesară producerii unei unităţi din produsul j. Presupunem că aij nu

depinde decât de tipul resursei (i) şi de tipul produsului realizat (j) şi nu de

cantităţile produse, ceea ce constituie evident o simplificare a situaţiei reale.

Cu aceste notaţii punem mărimile ce ne vor interesa:


- cantitatea din resursa i folosită pentru producerea cantităţii xj, care este: aijxj;

- cantitatea totală din resursa i folosită pentru producţia totală formată din n

produse:

ai1x1+ai2x2+...+ainxn .

Deoarece nu putem consuma din resursa i mai mult decât cantitatea

pe care o avem la dispoziţie, trebuie să fie respectată condiţia:

ai1x1+ai2x2+...+ainxn £ bi , (") 1 £ i £ m, sau

a
j 1
ij x j  bi
, iÎ{1, 2,..., m}. (1.1) Deoarece xj

reprezintă cantitatea ce trebuie pusă din sortimentul j, ea nu poate fi un număr

negativ:

xj ³ 0, jÎ{1, 2,..., m}. (1.2)

Inecuaţiile (1.1) se numesc restricţiile problemei, iar (1.2) condiţiile de

nenegativitate.

Sistemul de inecuaţii liniare (1.1) şi (1.2) poate avea o infinitate de soluţii, o

soluţie sau nici una. Pentru problemele corect puse cel mai frecvent este cazul cu o

infinitate de soluţii.

Adoptarea unei variante de plan (luarea unei decizii) se face pe baza unui

criteriu economic, ca de exemplu venitul sau beneficiul maxim.

Dacă notăm cu cj preţul de vânzare al unei unităţi din produsul j şi cu dj

costul unitar pentru acelaşi produs (vom presupune, pentru simplificarea

problemei, că atât preţul de vânzare cât şi costul nu depind de cantitatea produsă,


n

c x
j 1
j j
ceea ce nu prea este în concordanţă cu realitatea) atunci venitul total va fi:

d x
j 1
j j
, iar cheltuielile de producţie , şi deci beneficiul obţinut va fi:

n n n

 c x   d x   (c
j 1
j j
j 1
j j
j 1
j  d j )x j
.

 (cj 1
j  d j )x j
. (1.3)

Problema care se pune acum este de a determina acea variantă de plan, adică

acea soluţie a sistemului de inegalităţi (1.1), (1.2) care dă pentru beneficiarul (1.3)

valoarea maximă. În acest moment din acea problemă economică am obţinut

următoarea problemă matematică:

 n

 max  (c j  d j ) x j
 n j 1

 aij x j  bi
 j 1
x j  0

 (1.4)

Aceasta este o problemă de programare liniară sau program liniar.

b) O problemă de transport.

Avem m centre de aprovizionare (depozite) şi n centre de consum (puncte

de lucru, uzine, magazine etc.). Dorim să determinăm un plan de transport pentru


un produs omogen care se află în cantitatea ai la depozitul i (1 £ i £ m) şi este

cerut în cantitatea bj la centrul j (1 £ j £ n). Să notăm cu xij cantitatea

necunoscută ce va fi transportată de la depozitul i la centrul de consum j şi cu cij

costul transportului unei unităţi din produsul considerat de la depozitul i la centrul

j (presupunem pentru simplificare că acest cost unitar nu depinde de cantitatea

transportată pe ruta respectivă).

Se pot exprima atunci următoarele mărimi:

- cantitatea cerută de la depozitul i la toate cele n centre de consum

ai = xi1+ xi2+...+ xin = cantitatea aflată la depozitul i , (1.7)

- cantitatea transportată de la toate cele m depozite la centrul de consum j

bj = x1j+ x2j+...+ xmj = necesarul la centrul de consum (1.8)

- costul transportului de la depozitul i la centrul de consum j este cijxij.

O condiţie evidentă este

xij ³ 0, 1 £ i £ m, 1 £ j £ n . (1.9)

Costul total al transportului de la toate cele m depozite la toate cele n

m n

 c x
i 1 j 1
ij ij
centre de consum este .
m n

 a  b
i 1
i
j 1
j
Pentru a putea efectua transportul este necesar ca .

Sistemul de ecuaţii (1.7), (1.8) are o infinitate de soluţii. Dintre

acestea trebuie alese cele care dau costului total de transport valoarea minimă.

Obţinem astfel un program liniar:


m n

 c x
i 1 j 1
ij ij
min (1.10)

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

x ij  bj
i 1 , 1£j£n (1.12)

xij ³ 0, 1 £ i £ m, 1 £ j £ n, (1.13)

care se numeşte program de transport.

Programe liniare de acelaşi tip pot să apară şi în următoarea situaţie:

Trebuie aprovizionat un grup de uzine dirijate de un centru comun, având la

dispoziţie m centre de aprovizionare, n puncte de consum şi se cere determinarea

unui plan de transport (xij), 1 £ i £ m, 1 £ j £ n, care să minimizeze cheltuielile

totale de transport:

m n

 c x
i 1 j 1
ij ij
min , (1.14)

în condiţiile

x ij  ai
j 1
, 1£i£m (1.15)

x ij  bj
i 1 , 1£j£n (1.16)

xij ³ 0, 1£i£m, 1 £ j £ n, (1.17)


unde ai, 1 £ i £ m, sunt capacităţile centrelor de depozitare, bj, 1 £ j £ n, sunt

cantităţile necesare uzinelor, iar cij este costul unitar de transport de la depozitul i

m n

 a  b
i 1
i
j 1
j
la uzina j. Pentru a avea soluţii trebuie ca .

Problema se poate pune şi invers, considerând problema unui plan de

transport de la mai multe uzine i la punctele de desfacere j.

Dacă ai , 1 £ i £ m, reprezintă acum capacităţile de producţie ale uzinelor,

bj , 1 £ j £ n, capacităţile de depozitare ale punctelor de desfacere, se obţine un

model similar în care grupurile de inecuaţii (1.15), (1.16) îşi schimbă sensul.

c) O problemă de investiţii.

Avem la dispoziţie o sumă totală S care poate fi investită în diverse activităţi

j, 1 £ j £ n, fiecare producând un anumit beneficiu unitar aj ,

1 £ j £ n. Dacă xj, 1 £ j £ n, este suma investită pentru activitatea j, problema

este

a x
j 1
j j
max (1.18)

x
j 1
j S
(1.19)

xj ³ 0, 1£j£n. (1.20)
Problema mai poate fi complicată dând anumite reguli suplimentare în

legătură cu posibilitatea de investiţie, cu existenţa unui risc al investiţiilor şi

nelinearitatea beneficiului total.

1.2. Diferite forme ale problemelor de

programare liniară

Scrisă matriceal, cea mai generală problemă de programare liniară are forma

 A11 x1  A12 x 2  A13 x 3  b1



 A21 x  A22 x  A23 x  b2
1 2 3

 A x1  A x 2  A x 3  b
 31 32 33 3
(2.1)

x1 ³ 0, x2 oarecare, x3 £ 0

min(max) c1x  c2 x  c3 x


1 2 3

unde x1 este vectorul variabilelor asupra cărora se impun condiţii de

nenegativitate, x2 - vectorul variabilelor asupra cărora nu se impun condiţii de

semn, iar x3 - vectorul variabilelor asupra cărora se impun condiţii de

nepozitivitate.

Se spune că o problemă are forma standard dacă toate restricţiile sunt

ecuaţii şi tuturor variabilelor li se impun condiţii de nenegativitate

 Ax  b

x  0
min(max)cx

n
cx   ci xi
i 1 (2.2)
Se spune că o problemă are forma canonică dacă toate restricţiile sunt

inegalităţi de acelaşi sens şi tuturor variabilelor li se impun condiţii de

nenegativitate

 Ax  b

x  0
min cx
 (2.3)

 Ax  b

x  0
max cx
 (2.3')

Observaţie: Orice problemă de forma (2.1) poate fi adusa la forma standard sau

forma canonică folosind următoarele transformări:

i) i)    transformarea maximului în minim şi invers se bazează pe următoarea

egalitate:

max f ( x)   min f ( x)
xX xX

ii) ii) transformarea sensului unei inegalităţi se realizează prin înmulţirea cu 1

iii) iii) o variabilă x căreia nu i se impun condiţii de semn se înlocuieşte cu

diferenţa a două variabile nenegative x = x1x2 , x1 ³ 0 , x2 ³ 0

iv) iv) o variabilă x £ 0 se înlocuieşte cu o variabilă nenegativă x

v) v)  transformarea ecuaţiilor în inecuaţii

ax  b
ax  b  
ax  b

vi) vi) transformarea inecuaţiilor în ecuaţii


      a'x £ b se poate scrie ca o ecuaţie a'x+y=b, introducând o variabilă y ³

0 numită variabilă ecart;

      a'x ³ b se poate scrie ca o ecuaţie a'xy=b, y ³ 0.

Variabilele ecart nu apar în funcţia obiectiv (sau apar cu coeficenţi nuli).

1.3. Algoritmul simplex

Se aplică problemelor de programare liniară sub forma standard.

Definim câteva noţiuni de bază.

Fie sistemul de ecuaţii Ax = b, AÎMm,n(R), rang A = m. Fie

BÎMm,n(R) o matrice pătratică nesingulară extrasă din A şi notăm xB vectorul

variabilelor corespunzătoare coloanelor lui B. Notăm cu S partea din matricea A

care mai rămâne şi cu xS variabilele corespunzătoare. Sistemul Ax = b devine

xB 
 BS    3   b
x  sau BxB + SxS = b. (3.1)

Astfel, în (3.1) luăm xB variabile principale şi celelalte exprimate în funcţie de ele

şi avem

xB = B1bB1SxS .

Anulând variabilele secundare avem

xB = B1b , xS=0.

O astfel de soluţie se numeşte soluţie de bază (deoarece B fiind

nesingulară, coloanele sale constituie o bază în Rm).


Variabilele principale se numesc variabile de bază.

Se numeşte soluţie nedegenerată o soluţie de bază care are exact m

componente nenule.

Se numeşte soluţie degenerată o soluţie de bază care are şi componente

nule.

Se numeşte soluţie admisibilă sau program o soluţie a sistemului de

ecuaţii şi inecuaţii (2.2) ce verifică şi condiţia de nenegativitate.

Notăm P = {xÎRn x program}, z* = min{c'x½xÎR} .

Convenim să punem z* = +¥ dacă P = F.

Dacă z* = ¥, spunem că problema are optim infinit.

Dacă z* este finit, atunci x*Î P cu proprietatea că z* = c'x se numeşte

soluţie optimă sau program optim.

Notăm cu P * mulţimea soluţiilor optime.

Soluţia de bază a problemei de programare liniară sub forma standard (2.2)

se numeşte program de bază (x=0 este program de bază dacă x=0 este program).

Teorema 1. Dacă problema (2.2) are un program, atunci are cel puţin un program

de bază.

Demonstraţie: [CZ, pag. 101].

Teorema 2. Dacă problema (2.2) are un program optim, atunci are şi un program

de bază optim.

Demonstraţie: [CZ, pag. 101].

 
1.4. Fundamentele algoritmului simplex (Danzig

1951)

Din teoremele 1 şi 2 rezultă că putem determina soluţia problemei (2.2)

astfel:

pentru toate bazele B din matricea A (aceste sunt, evident, în număr finit),

calculăm soluţia de bază corespunzătoare B1b, reţinem dintre acestea doar pe

acelea care sunt programe de bază (B1b ³ 0) şi alegem pe aceea care dă funcţiei

obiectiv valoarea optimă (cea mai mică sau cea mai mare).

Dezavantajul ce apare constă în volumul mare de calcule, chiar şi atunci

când problemele sunt de dimensiuni mici.

Algoritmul simplex dă o metodă de explorare sistematică şi economică a

programelor de bază, mai precis de trecere de la un program de bază la altul care

dă funcţiei obiectiv o valoare mai mare sau mai mică, după cum problema este de

maximizare sau minimizare. De asemenea, algoritmul furnizează criterii pentru

cazurile în care problema (2.2) nu are programe sau are optim infinit.

Astfel, dacă B este o bază (să presupunem că B1b ³ 0), sistemul Ax=b se

poate scrie

xB= B1b B1SxS

sau

x B  x B   y Bj x j
jS
(4.1)
sau pe componente

xiB  xiB   yijB x j


jS
, iÎB, unde (4.1')

x B  B 1b (4.2)

y Bj  B 1a j
, (4.3)

unde aj este coloana j a matricei A ,

S={indicii variabilelor secundare}, B={indicii variabilelor de bază}.

y Bj  B 1a j  e j
Observaţie: Pentru jÎ B, , ej fiind vectorul unitate.

Folosind (4.1), putem exprima funcţia obiectiv prin variabilele secundare xS

astfel

n    
z   c j x j   c j x j   ci  xB   yijB x j    ci xiB     ci yijB  c j  x j
j 1 jS iB  jS  iB jS  iB 

sau

z  z B    z Bj  c j  x j
jS
, unde (4.4)

z B   ci xiB  cB  x B
iB (4.5)

z Bj   ci yij  cB  y Bj
iB . (4.6)

Pentru simplificarea scrierii renunţăm la indicele superior B, înţelegându-se

că este vorba de elementele corespunzătoare bazei.


La baza algoritmului simplex stau următoarele observaţii ce rezultă din

teoremele prezentate în continuare.

Teorema 3. Dacă zjcj £ 0, (")jÎS, atunci programul de bază corespunzător bazei

B, (xB=B-1b, xS =0) este optim.

Demonstraţie: [CZ, pag. 106].

Teorema 4. Dacă ($)kÎS cu zk-ck > 0, atunci programul asociat bazei B nu este

optim (cu excepţia cazului când programul este degenerat) şi poate fi îmbunătăţit

dacă xk ia valori pozitive.

Demonstraţie: [CZ, pag. 107].

Teorema 5. Dacă ($)kÎS cu zk-ck > 0, şi dacă yik £ 0, pentru (")iÎB, atunci

problema are optim infinit.

Demonstraţie: [CZ, pag. 107].

Teorema 6. Dacă zk-ck > 0, dar ($)yik > 0, atunci xk poate creşte până la

valoarea:

xi x
min  l
i yik 0 y y lk ,
ik (4.7)
~
pentru care se obţine un nou program de bază asociat bazei B dedusă din B prin

înlocuirea coloanei al cu coloana ak.

Demonstraţie: [CZ, pag. 107].

Observaţie: Dacă există mai mulţi indici k pentru care z k-ck > 0, ar fi preferabil să

xl
 zk  ck 
se aleagă acela pentru care ylk are cea mai mare valoare, ceea ce
asigură, în general, o scădere mai rapidă a funcţiei obiectiv şi dă un număr mai

mic de iteraţii (o iteraţie reprezintă o trecere de la un program de bază la altul).

Practic, se ia drept criteriu de alegere a lui k , acel k pentru care zk-ck=maxim.

Acest criteriu se mai numeşte şi criteriu de intrare în bază.

Criteriul dat de (4.7) reprezintă criteriul de ieşire din bază.

1.5. Enunţul algoritmului simplex

Fie problema de programare liniară

min c  x

 Ax  b
 x0

sub forma standard. Pentru această problemă algoritmul simplex are următorul

enunţ.

Pas 0. Se determină o bază B în matricea A, se calculează x  B b , z  cB x ,


B 1 B B

y Bj  B 1a j z Bj
j
(a - coloanele din A), -cj, 1 £ j £ n.

Pas 1. a) Criteriu de intrare în bază

z Bj
1) dacă toţi -cj £ 0, jÎB, programul este optim. Stop !

z Bj
2) dacă ($) -cj > 0, se determină k astfel încât

zk-ck= max{zj-cj}.

b) Criteriu de ieşire din bază

1) dacă toţi yik £ 0, problema are optim infinit.


2) dacă ($) yik > 0, se determină l astfel încât

xl x 
 min  i 
ylk i yik 0  yik 
.

Pas 2. Se înlocuieşte în baza B vectorul al cu vectorul ak, adică se calculează

~ ~ ~ ~
x B , z B , y Bj z jB  c j
, 1 £ j £ n, , 1 £ j £ n, şi se trece la pasul 1,

~
înlocuind baza B cu baza B .

Observaţie: Pentru o problemă de maximizare:

 Ax  b

x  0
max cx

trebuie modificat criteriul de intrare în bază:

a'1) dacă toţi zj-cj ³ 0, programul este optim.

a'2) dacă ($)zj-cj < 0, se determină k astfel încât zk-ck= min{zj-cj}.

1.6. Ordonarea calculelor. Tabloul simplex şi

transformarea sa

Presupunem că pentru o bază B am calculat xi , z , zj-cj, yij şi le dispunem

într-un tablou numit tabel simplex. Presupunem că baza B este formată din

primele m coloane ale matricei A.

        coeficienţii funcţiei obiectiv  

        c1   cl   cm cm+1   ck   cn Alegem min


xi
  CVB VB VVB x1   xl   xm xm+1   xk   xn
yik

c1 x1 x1 1 ... 0 ... 0 y1,m+1 ... y1,k ... y1,n  

Coeficienţii                      
variabilelor
de bază în cl xl xl 0 ... 1 ... 0 yl,m+1 ... yl,k ... yl,n  
funcţia
obiectiv                      

cm xm xm 0 ... 0 ... 1 ym,m+1 ... ym,k ... ym,n  

valoarea alegem max


  funcţiei z                    
obiectiv zj-cj>0

      zj-cj  

Prima coloană (CVB) conţine coeficienţii din funcţia obiectiv ai variabilelor

de bază.

A doua coloană (VB) conţine variabilele de bază.

A treia coloană (VVB) conţine valorile variabilelor de bază, ultima linie

fiind valoarea funcţiei obiectiv pentru programul de bază corespunzător bazei B,

B
adică z .

y Bj
Coloanele următoare conţin vectorii (având grijă că pentru variabilele

y Bj
de bază =ej), iar ultima linie conţine diferenţele zj-cj= cB yi-cj.

Observaţie: Pentru variabilele de bază,


zj-cj= cB ej-cj=cj-cj=0.

z Bj B
Pentru calculul elementelor -cj şi z ale primului tablou este util să

trecem coeficienţii cj din funcţia obiectiv în partea de sus a coloanelor respective.

Să presupunem că ak trebuie să intre în bază în locul lui al. Elementul ylk

se numeşte pivot şi îl evidenţiem încercuindu-l.

Pentru fiecare bază se alcătuieşte câte un tabel simplex.

Cum se calculează elementele noului tabel corespunzător noii baze.

~ xl ~ y
xkB  ; ykjB  lj
ylk ylk (6.1)

~ xl ~ y lj
xiB  xi  yik i  l ; yijB  yij  yik i  l
ylk y lk (6.2)

y lj
; z jB  c j   z j  c j    z k  ck 
~ xl ~
z B  z B   z k  ck 
ylk y lk (6.3)

Relaţia (6.1) arată că elementele liniei l se împart la pivotul ylk.

În noul tabel în loc de xl este trecut xk în coloana VB.


~ ~

Deoarece xk este variabilă de bază, y k  ek , z k  ck  0 , aşa cum rezultă


B B

şi din (6.2) şi (6.3).

Relaţiile (6.2) şi (6.3) arată că toate celelalte elemente se transformă după

regula dreptunghiului cu diagonală principală cea a pivotului.

În algoritmul simplex revizuit se fac calcule doar pentru elementele tabloului

strict necesare.

 
1.7. Exemplu

Din studiile efectuate, s-a dedus că din timpul lunar de lucru al unor maşini

M1, M2, M3 ce lucrează într-o secţie a unei întreprinderi, ele nu sunt folosite 8 ore,

24 de ore şi respectiv 18 ore. Se ia hotărârea să se folosească şi acest timp,

punându-le să lucreze la fabricarea a 2 produse suplimentare, P1 şi P2, ca produse

anexe ale secţiei, care aduc un beneficiu la unitatea de produs fabricat de 4 şi

respectiv 3 unităţi monetare. Timpul necesar de lucru la fiecare maşină este, pe

fiecare produs, dat de:

  P1 P2

M1 2 1

M2 3 2

M3 1 3
 

Să se determine planul de producţie al secţiei pentru produsele P1 şi P2 care

să dea un beneficiu maxim.

Rezolvare:

a) Modelarea problemei. Fie x1, x2 cantităţile din produsele P1 şi P2 ce trebuie

produse.
Formularea matematică a problemei este

2 x1  x2  8
3x  2 x  24
 1 2

 x1  3 x2  18
x , x  0
 1 2
max z  4 x1  3x2

În cele 3 inecuaţii ale sistemului de restricţii introducem variabilele de

compensare, astfel încât problema devine

max z  4 x1  3x2
2 x  x  x  8
 1 2 3

3x1  2 x2  x4  24
 x  3 x  x  18
 1 2 5

 xi  0, i 1,5

b) Tabelul simplex şi calculele aferente

      4 3 0 0 0 Alegem min

xi
CVB VB VVB x1 x2 x3 x4 x5
yik

0 8
x3 8 2 1 1 0 0 4
2

24
0 x4 24 3 2 0 1 0 8
3

18
0 x5 18 1 3 0 0 1  18
1

valoarea
alegem min
funcţiei 0 -4 -3 0 0 0
zj-cj<0
obiectiv z
1 1
4 x1 4 1 0 0 8
2 2

1 1
0 x4 12 0  1 0 24
2 2

0 5 1 28
x5 14 0  0 1
2 2 5

valoarea
alegem min
funcţiei 16 0 -1 2 0 0
zj-cj<0
obiectiv z

La prim iteraţie a ieşit din bază x3 şi a intrat x1 , iar la iteraţia a doua a ieşit
din bază x5 şi a intrat x2 .

      4 3 0 0 0 Alegem min

xi
CVB VB VVB x1 x2 x3 x4 x5
yik

6 3 1
4 x1 1 0 0  8
5 5 5

46 2 1
0 x4 0 0  1  24
5 5 5

28 1 2 28
3 x2 0 1  0
5 5 5 5

valoarea
alegem min
9 2
funcţiei 23,2 0 0 0
5 5
zj-cj < 0
obiectiv z
 
c) Culegerea rezultatelor din tabelul simplex final
Maximul funcţiei de optimizat este 23,2 şi se obţine pentru
x1=1,2 ; x2=5,6 ; x3=0 .
Soluţia de bază este nedegenerată.
Valorile variabilelor auxiliare
x3=0 ; x4=9,2 ; x5=0 ,
arată că soluţia optimă face egalităţi doar restricţiile 1 şi 3 , adică se foloseşte
integral timpul la aceste maşini, iar cea de-a doua inegalitate arată că prin aceasta
soluţie nu se utilizează integral timpul celei de-a doua maşini.
 

1.8. Convergenţa algoritmului simplex

Degenerare şi ciclare

Dacă în cursul aplicării algoritmului simplex valoare funcţiei obiectiv scade

la fiecare iteraţie, atunci nici o bază nu se poate repeta (fiecărei baze îi corespunde

un program de bază, deci o valoare bine determinată a funcţiei obiectiv). Deoarece

m
numărul bazelor este finit (cel mult Cn ), rezultă că într-un număr finit de iteraţii

se ajunge la una din situaţiile a.1) sau b.1) din enunţul algoritmului simplex.

Dacă valoarea funcţiei obiectiv nu se modifică în cursul câtorva iteraţii

succesive, este posibil să revenim la una din bazele prin care am trecut deja, şi

atunci procesul infinit fără a conduce la soluţie. Această situaţie se numeşte

ciclare.

xl
 zk  ck 
y
Variaţia funcţiei obiectiv la o iteraţie este lk şi această expresie

este nulă dacă şi numai dacă xl =0, adică dacă programul este degenerat.
Pentru o problemă nedegenerată, convergenţa algoritmului simplex, mai

precis faptul că el conduce la o soluţie într-un număr finit de iteraţii, este asigurată.

Pentru o problemă degenerată, adică având cel puţin un program degenerat,

este posibilă, în principiu, ciclarea.

Observaţie: Degenerarea nu implică în mod necesar ciclarea: cu toate că foarte

multe probleme practice sunt degenerate, nici una nu a ciclat, exemplele de

ciclare fiind construite nu fără dificultate.

Pentru demonstrarea valabilităţii generale a algoritmului simplex este totuşi

necesară o regulă care să facă posibilă înlăturarea ciclicităţii.

Degenerarea apare în afara cazului în care vectorul b are componente nule,

atunci când criteriul de ieşire al algoritmului simplex, mai precis minimul (4.7), nu

defineşte în mod unic variabila care iese din bază. Presupunem că acest minim se

xl x
 h
atinge pentru 2 indici l şi h, adică ylk yhk , şi presupunem că alegem variabila

~ yhk
xhB  xh  xl 0
xl să părăsească baza. Atunci ylk , şi deci noul program de bază va

fi degenerat.

Dacă programul iniţial nu va fi degenerat, degenerarea poate apărea numai

în acest caz.

Pentru îndepărtarea pericolului de ciclare există 2 metode:

      metoda perturbării lui A. Charnes


      metoda lexicografică a lui Dantzig şi Wolfe .

Observaţie: O regula practică de evitare a ciclajului este următoarea: se divid

liniile corespunzătoare variabilelor nule din tabelul simplex prin pivoţii posibili,

mergând de la stânga spre dreapta; în momentul când unul dintre rapoarte este

mai mic decât celelalte, precizăm variabila care iese din bază ca fiind cea care

corespunde raportului minim.

1.9. Interpretarea economică a

algoritmului simplex

Revenim la problema "folosirii eficiente a resurselor limitate" şi

presupunem că restricţiile sunt sub formă de egalitate Ax=b. Observăm că cele n

activităţi de producţie se asociază câte m, în grupe de activităţi de bază,

corespunzătoare programelor de bază. Deoarece programul optim este un program

de bază, rezultă concluzia interesantă că într-o organizare optimă a producţiei nu se

vor desfăşura toate cele n activităţi posibile (deci nu se vor produce toate cele n

sortimente), ci cel mult m (cazul programului nedegenerat). Această concluzie

este dedusă din considerente pur matematice şi în afara oricăror considerente

economice.

Presupunem că activitatea k nu face parte din grupul activităţilor de bază

corespunzător unei baze B (adică xk nu este variabilă de bază, xk=0, adică în


această variantă sortimentul nu se produce). Dacă dorim să mărim nivelul acestei

activităţi, adică să producem sortimentul k în cantitatea

xk > 0, producţiile celorlalte sortimente de bază se vor modifica conform cu (4.1');

unele vor trebui reduse, şi cum nu pot fi reduse decât cel mult până la 0, rezultă că

xk poate creşte cel mult până la valoarea dată de (4.7), pentru care activitatea de

bază l atinge nivelul 0. Aceasta este interpretarea criteriului de ieşire.

Creşterea lui xk cu o unitate implică variaţii de -yik ale celorlalte activităţi

şi deci şi o variaţie a funcţiei obiectiv

z  ck   ci   yik   ck  zk
iB

ţinând seama că creşterea lui xk cu o unitate aduce, în acelaşi timp, un beneficiu

suplimentar ck-zk. Dacă zk-ck < 0 (pentru problema de maximizare a beneficiilor),

atunci Dz > 0 şi, deci, introducerea activităţii k în bază, adică producerea

sortimentului k, aduce o îmbunătăţire a funcţiei obiectiv, adică o sporire a

beneficiului total. Regăsim astfel "criteriul de intrare" în bază al algoritmului

simplex.

Aplicarea algoritmului simplex revine deci la o explorare sistematică a

diverselor variante de m "activităţi de bază" ; la fiecare iteraţie se înlocuieşte o

activitate l printr-o activitate k, obţinându-se o creştere a beneficiului total, până

când, pentru toate activităţile care nu sunt în bază, avem zk-ck ³ 0, şi deci nici o

creştere a beneficiului nu mai este posibilă.

 
1.10. Determinarea unui program de bază iniţial.

Metoda celor două faze

Metoda celor două faze permite obţinerea unui program de bază de plecare

în rezolvarea problemei de programare iniţială sub forma standard (2.2), adică

min cx

 Ax  b
x  0
 . (10.1)

Putem presupune că bi ³ 0, 1£ i £ m ; dacă nu, se înmulţeşte linia

a
respectivă cu -1. Adăugăm la fiecare ecuaţie câte o variabilă artificială xi şi

obţinem:

 Ax  Ix a : b

x  0
xa  0
 (10.2)

Problema (2.2) are programe dacă (10.2) are programe (x, xa), cu xa=0.

Dacă obţinem un astfel de program de bază cu xa=0, atunci x corespunzător este

un program de bază pentru (10.1). Pentru a obţine un program de bază al

sistemului (10.2), rezolvăm problema de programare liniară

min  xia  W

 Ax  Ix  0
a


 xi  0, 1  i  n
 x aj  0, 1  j  m
 Faza I (10.3)

folosind algoritmul simplex obişnuit.


Observăm că pentru problema (10.3) dispunem de programul de bază iniţial

x=0, xa=b (³0), corespunzător bazei I din matricea acestui sistem [A,I].

a
Deoarece xi ³ 0 Þ xa
i 0
, şi deci minW ³ 0. Sunt posibile 2 cazuri:

(i)(i)  dacă minW > 0, atunci problema (10.1) nu are program de bază (dacă ar

avea, atunci (10.3) ar avea programe cu xa=0 şi deci minW=0)


a
(ii) (ii) dacă minW=0, am obţinut un program cu xi =0, 1 £ i £ m, deci un

program de bază al problemei (10.3), şi se trece la rezolvarea acestei probleme

 Ax  b

x  0
min cx
 . Faza a II-a
a
Observaţie: Faza I constă din eliminarea din bază a variabilelor artificiale xi şi

înlocuirea lor cu variabilele xj. Când toate variabilele au fost eliminate din bază,

adică la sfârşitul fazei I, coloanele acestora sunt şterse din tabelul simplex şi se

începe faza a II-a pornind de la acest tabel simplex, în care calculăm doar

elementele liniei zj-cj corespunzătoare funcţiei obiectiv din faza a II-a.

În cele prezentate până acum am presupus că rangA=m. Introducerea

variabilelor artificiale face ca rangul matricei [A,I] să fie sigur m.

Dacă rangA<m sau dacă problema este degenerată, atunci când se ajunge la

min 
a
x i
=0, este posibil să mai rămână în bază câteva variabile artificiale,

desigur cu valoarea 0. Faza I se consideră încheiata atunci când toate variabilele

xia au fost eliminate şi anume:


a
(i)(i)  dacă rangA=m (dar problema este degenerată), variabilele xi =0 pot fi

întotdeauna înlocuite cu variabilele xj care intră în bază tot cu valoarea 0, fără

să producă vreo modificare în funcţia obiectiv.

(ii) (ii) dacă rangA<m, nu este posibilă eliminarea tuturor variabilelor xia

(câteva rămân în bază cu valoarea 0). În acest caz, liniile corespunzătoare ale

matricei A sunt combinaţii ale celorlalte, adică restricţiile corespunzătoare

a'ix=b sunt consecinţe ale celorlalte şi se pot elimina.

Această discuţie arată că nu este necesar să se impună rangA=m.

Dacă în problema (10.2) cu b ³ 0 există xj care apare într-o singură ecuaţie

şi cu coeficient pozitiv, adică matricea A conţine un vector unitate, atunci în

ecuaţia respectivă nu este necesară introducerea unei variabile auxiliare, variabila

xj putând fi luată în baza iniţială. Desigur că dacă există k astfel de variabile vom

introduce doar n-k variabile artificiale, ceea ce scurtează Faza I.

Uneori este necesară cunoaşterea inversei bazei curente a problemei de

programare. În acest caz, la sfârşitul fazei I nu mai înlăturăm din tabel coloanele

corespunzătoare variabilelor artificiale. În fiecare tabel al Fazei a II-a, în aceste

coloane se găseşte matricea B-1I=B-1, adică inversa bazei curente B.

Exemplu: O balastieră are 3 linii de sortare S1, S2, S3, pentru 2 tipuri de agregate

A1, A2 şi trebuie să sorteze 300 tone din primul tip şi 372 tone din al doilea tip.

Beneficiul încasat de pe urma sortării materialelor diferă de la o linie la alta

precum diferă şi cantităţile ce pot fi sortate conform cu tabelul următor.

Agregat A1 A2 Beneficiu
Linie
de sortare
S1 2 1 5 u. m.
S2 3 2 4 u. m.
S3 1 2 6 u. m.
Cantitatea ce 300 tone 372 tone u. m. unităţi
trebuie sortată monetare
 

Să se determine repartiţia optimă pe liniile de sortare a agregatului astfel

încât beneficiul obţinut să fie maxim.

Rezolvare:

a) Modelarea problemei

Fie x1, x2 , x3 cantităţile sortate pe liniile S1 , S2 , S3 respectiv. Atunci

funcţia de optimizat este f = 5x1+4x2+6x3 .

Trebuie determinat maximul acestei funcţii cu restricţiile

 2 x1  3 x2  x3  300

 x1  2 x2  2 x3  372
 x , x , x 0
 1 2 3 .

 2 3 1
A   
Deoarece matricea  1 2 3  a restricţiilor nu are o bază evidenţiată,

se aplică metoda celor două faze.

b) Metoda celor două faze.

i) Faza I

Se aplică algoritmul simplex problemei

min  x1  x1 
a a
 2 x1  3x2  x3  x1a  300

 x1  2 x2  2 x3  x2  372
a

 x , x , x , xa , xa  0
 1 2 3 1 2

      0 0 0 1 1 Alegem min

xi
CVB VB VVB x1 x2 x3 x1a x2a
yik

1 300
x1a 300 2 3 1 1 0  100
3

372
1 x2a 372 1 2 2 0 1  186
2

valoarea alegem max


funcţiei 672 3 5 3 0 0
obiectiv z zj-cj>0

100
2 1  300
0 x2 100 1   0 1
3 3
3

1 172
1 4  129
x a
2 172  0   1 4
3 3
3

valoarea 1 7 alegem max


funcţiei 172  0   0
obiectiv z 3 3 zj-cj>0

3
0 x2 57 1 0     8
4
1
0 x3 129  0 1     24
4

valoarea alegem max


funcţiei 0 0 0 0    
obiectiv z zj-cj>0
 
a
La prim iteraţie a ieşit din bază x1 şi a intrat x2 , iar la iteraţia a doua a
a
ieşit din bază x2 şi a intrat x3.
ii) Faza II

Se aplică algoritmul simplex problemei

max {5x1+4x2+6x3 }

 4
 x1  3 x2  57
 1
 x2  x3  57
3
 x1 , x2 , x3  0


      5 4 6 Alegem min

xi
CVB VB VVB x1 x2 x3
yik

4 3 228
x2 57 1 0
4 3

1
6 x3 129  0 1 24
4

valoarea 8 alegem min


funcţiei 0  0 0
obiectiv z 3 zj-cj<0

4
5 x1 76 1 0  
3
6 x3 148 0 0 1  

valoarea alegem min


funcţiei 1268 0 0 0
obiectiv z zj-cj<0
 

b) Culegerea şi interpretarea rezultatelor

Algoritmul se opreşte cu optim finit, anume, beneficiul maxim este 1268,

obţinut pentru x1=76 , x3=148 , x3=0 care constituie o soluţie de bază

nedegenerată.

1.11. Dualitatea în programarea liniară

Dualitatea ocupă, în programarea liniară, un loc important, atât din punct de

vedere teoretic cât şi practic.

Fie problema de programare liniară sub forma generală

min  c1x1  c2 x 2  c3 x 3 



 A11 x  A12 x  A13 x  b1
1 2 3

 A21x  A22 x  A23 x  b2


1 2 3

 A x1  A x 2  A x 3  b
 31 32 33 3

 x  0, x  arbitrar , x  0
1 2 3
. (11.1)

Aceasta se mai numeşte şi problema primală. Numim problemă duală

problemei (11.1) următoarea problemă de programare liniară


max b1u 1  b2u 2  b3u 3 
 t 1
 A11u  A12u  A13u  c1
t 2 t 3

 A21u  A22u  A23u  c2


t 1 t 2 t 3

 At u 1  At u 2  At u 3  c
 31 32 33 3

u  0, u  arbitrar , u 3  0
1 2
. (11.2)

Duala dualei este chiar problema iniţială. De aceea, (11.1) şi (11.2) formează

un cuplu de probleme duale.

Din examinarea cuplului de probleme duale, rezultă că una dintre probleme

se obţine în următorul mod:

a) a)   termenii liberi din problema primală devin coeficienţi ai funcţiei obiectiv în

problema duală,

b) b)  coeficienţii funcţiei obiectiv din problema primala devin termeni liberi în

problema duală,

c) c)  o problemă de maximizare (minimizare) se transformă într-o problemă de

minimizare (maximizare),

d) d)  matricea coeficienţilor sistemului de restricţii pentru problema duală este

transpusa matricei coeficienţilor sistemului de restricţii al problemei primale,

e) e)   variabilele duale (primale) asociate unor restricţii primale (duale)

concordante sunt supuse condiţiei de nenegativitate,

f) f)    variabilele duale (primale) asociate unor restricţii primale (duale) care sunt

ecuaţii nu sunt supuse nici unei condiţii privind semnul.

Din definiţia dată rezultă că:

      duala unei probleme de programare sub forma standard


min cx

 Ax  b
x  0
 (11.3)

este problema de programare liniară

max bu
 t
A u  c
u  arbitrar
 (11.4)

      duala unei probleme de programare sub forma canonică

min cx

 Ax  b
x  0
 (11.5)

este următoarea problemă de programare liniară

max bu
 t
A u  c
u  0
 (11.6)

      duala unei probleme mixte

min cx
 A1 x  b1

 A2 x  b2
 x  0
(11.7)

este problema

max(b1u1  b2u 2 )
 t 1
 A1 u  A2u  c
t 2

u1  0, u 2  arbitrar
 . (11.8) În

continuare sunt enunţate teoremele care stabilesc conexiunile fundamentale între

cele 2 probleme duale.


Teorema fundamentală a dualităţii. Fiind dat cuplul de probleme simetrice (11.5)

şi (11.6), una şi numai una din următoarele afirmaţii este adevărată:

a) a)    ambele probleme au programe; în acest caz, ambele probleme au programe

optime, şi valorile optime ale funcţiilor obiectiv sunt egale

b) b)    una dintre probleme are programe, iar cealaltă nu are; în acest caz,

problema care are programe are optim infinit

c) c)     nici una dintre probleme nu are programe.

Corolar. Dacă într-un cuplu de probleme duale, una dintre probleme are un

program optim, atunci şi cealaltă problema are un program optim, şi valorile

valorile optime ale funcţiilor obiectiv sunt egale.

Teorema ecarturilor complementare. O condiţie necesară şi suficientă ca

programele x* şi u* să fie optime pentru problemele duale (11.5) şi (11.6) este

u'*(Ax*-b)=0 ş i (c-Atu* )x'* =0 . (11.9)

Condiţiile Kuhn-Tucker în programarea liniară.

Condiţia necesară şi suficientă pentru ca x *ÎRn să fie un program optim al

problemei (11.5) este să existe u*ÎRm astfel încât:

b-Ax* £ 0 u* ³ 0 u'*(b-Ax* )=0 şi (11.10)

x³0 c-Atu* ³ 0 x'*(c-Atu* )=0 .

Definiţie. Se numeşte lagrangian asociat problemei de programare liniară (11.5)

funcţia de m+n variabile

F(x,u)=c'x+b'u-u'Ax (11.11)

definită pentru x ³ 0 , u ³ 0 , xÎRn, uÎRm.


Prin analogie cu extremul cu legături, şi din faptul că
m

 u  b  ax 
i i i
F(x,u)=c'x+ i 1 (11.12)

variabilele ui se numesc multiplicatorii lui Lagrange.

Teorema lagrangianului. Condiţia necesară şi suficientă pentru ca x* ³ 0 să fie

un program al problemei (11.5) este să existe u* ³ 0 astfel încât

(x*, u* ) să fie un punct şa al lagrangianului, adică

F(x*, u) £ F(x*, u* ) £ F(x, u* ) (11.13)

pentru orice x ³ 0 şi orice u ³ 0. În aceste condiţii, u* este program optim al

problemei duale (11.6) şi sunt satisfăcute condiţiile teoremei ecarturilor.

Teorema 7. Fie problemele:

min cx

 Ax  b
x  0
 (forma standard) (11.14)

max u b

u A  c
u  arbitrar
 (duala formei standard) (11.15)

O condiţie suficientă (şi necesară dacă (11.14) nu este degenerată) pentru ca baza

B din matricea A să fie optimă este ca B -1b ³ 0, c'BB-1A-c' £ 0. În aceste condiţii,

soluţiile problemelor duale (11.14)-(11.15), sunt: xB=B-1b, xS=0 şi u'B=c'BB-1.

1.12. Algoritmul simplex dual

Prin aplicarea algoritmului simplex la problema duală se obţine un nou

algoritm pentru problema iniţială numit algoritmul simplex dual.


Algoritmul simplex explorează bazele care satisfac condiţia B-1·b³0 (baze

admisibile) până când se ajunge la o bază care satisface condiţiile

cB  B 1  A  c  0 şi care este optimă.

Algoritmul simplex dual explorează bazele satisfăcând condiţia

cB  B 1  A  c  0 (baze dual admisibile) până se ajunge la o bază B care satisface

B-1·b³0 şi care este optimă.

În algoritmul simplex se obţine o succesiune de programe de bază

(B-1·b³0) , iar în algoritmul simplex dual se obţine o succesiune de soluţii de

bază care nu sunt programe (B-1·b nu are toate componentele nenegative).

Pentru o problemă de minimizare în algoritmul simplex funcţia

obiectiv descreşte spre minim, în timp ce algoritmul simplex dual funcţia obiectiv

creşte spre maxim.

Enunţul algoritmului simplex dual

Pentru problema de minimizare (10.14), algoritmul simplex dual constă din

următorii paşi.

Pas 0. Se determină o bază dual admisibilă B , se calculează


B B B
x , z , y Bj , 1  i  n , z j  c j , 1  j  n
.

Pas 1. a) Criteriu de ieşire din bază

1) dacă toţi xi  0 , atunci programul este optim. Stop!

2) dacă   xi  0 , atunci se determină l astfel încât



xl  min xi xi  0  .

b) Criteriu de intrare în bază

1) dacă toţi ylj ³ 0 , atunci problema nu are programe. Stop!

2) dacă
  ylj  0 , atunci se determină k astfel încât

z k  ck zj  cj
 min
ylk j ylj 0 ylj
.

Pas 2. Se înlocuieşte în baza B coloana k cu coloana l obţinându-se noua


~
bază B . Se calculează
~ ~ ~ ~
B B B
x , z , y Bj , 1  i  n , z j  c j , 1  j  n

~
şi se trece la pas înlocuind B cu B .

Determinarea unei soluţii dual admisibile

Dacă toţi coeficienţii funcţiei obiectiv sunt nenegativi, atunci variabilele

ecart formează o soluţie de bază dual admisibilă, deoarece în acest caz zi-ci= ci £ 0.

Dacă nu toţi coeficienţii funcţiei obiectiv sunt nenegativi, se introduce o

restricţie nouă

xn1  x1  x 2  ...  x k  M


,

x r , 1  r  k
cu M suficient de mare, xn+1 o nouă variabilă, iar , fiind

c r  0
variabilele care corespund coeficienţilor .
Dacă

c f  max c j c j  0  , se înlocuieşte x f
din restricţia suplimentară

x f
în funcţia obiectiv. Se obţine o mulţime de n variabile ( xn+1 înlocuieşte )

astfel încât toţi coeficienţii funcţiei obiectiv să fie nenegativi şi numărul

restricţiilor a crescut cu o unitate.

Exemplu.

Probleme propuse

1. Într-o staţie de betoane se pot produce 3 tipuri de betoane (B150, B200,

B300). Staţia este organizată astfel încât fiecare betonieră poate produce orice

marcă de betoane, capacitatea zilnică maximă a staţiei este de 600 m3 . Betonul se

transportă cu ajutorul a 20 de autobetoniere de 5 m3 capacitate fiecare, duratele

ciclurilor de transport pentru cele 3 mărci de betoane fiind de 0,1 ; 0,2 şi 0.1 zile

respectiv. Consumurile normate de ciment pe cele trei mărci de beton sunt

respectiv 200, 300 şi 400 kg/m3 . Staţia este aprovizionată zilnic cu o cantitate de

180 tone de ciment . Ca urmare a organizării staţiei se obţin următoarele economii

pe mărci de beton: 1 ; 1,2 şi 0,8 unităţi monetare /m3 .

Se cere găsirea soluţiei care aduce maximum de beneficiu staţiei ştiind că se

cere beton în cantităţi mai mari decât posibilităţile de preparare.

Rezolvare

Modelare problemei

Notăm cu x1 , x2 , x3 , cantităţile de beton din fiecare marcă ce se cer a fi

determinate astfel încât funcţia obiectiv


z = f(x1 , x2 , x3 ) = 1·x1 + 1,2·x2 + 0,8·x3 ,

să fie maximă sub restricţiile

x1 + x2 + x3 £ 600 ( nu se poate depăşi capacitatea de producţie a staţiei )

0,1·x1 +0,2·x2 +0,1·x3 £ 20·5 ( nu se poate depăşi capacitatea zilnică de

transport )

200·x1 +300·x2 + 400·x3 £ 600 ( nu se poate depăşi cantitatea de ciment cu

care este aprovizionată zilnic staţia )

S-a obţinut următoarea problemă de programare liniară sub forma canonică

max x1  1,2 x2  0,8 x3 


 x  x  x  600
 1 2 3

 x1  2 x2  x3  1000
2 x  3 x  4 x  1800
 1 2 3

 xi  0 , i  1, 2, 3

Prin introducerea variabilelor ecart se aduce problema la forma standard

căreia i se aplică algoritmul simplex.

max x1  1,2 x2  0,8 x3 


 x  x  x  x  600
 1 2 3 4

 x1  2 x2  x3  x5  1000
2 x  3 x  4 x  x  1800
 1 2 3 6

 xi  0 , i  1,6

Tabelul simplex asociat

 
 

      1 1,2 0,8 0 0 0 Alegem min

xi
CVB VB VVB x1 x2 x3 x4 x5 x6
yik

0 x4 600 1 1 1 1 0 0 600

0 1000
x5 1000 1 2 1 0 1 0  500
2

1800
0 x6 1800 2 3 4 0 0 1  600
3

valoarea
alegem min
funcţiei 0 -1 -1,2 -0,8 0 0 0
zj-cj<0
obiectiv z

0 1 1 1
x4 100 0 1  0 200
2 2 2

1 1 1
1,2 x2 500 1 0 0 1000
2 2 2

1 5 3
0 x6 300 0 0  1 600
2 2 2

valoarea
alegem min
funcţiei 600 -0,4 0 -0,2 0 0,6 0
zj-cj<0
obiectiv z

      1 1,2 0,8 0 0 0 Alegem min


xi
CVB VB VVB x1 x2 x3 x4 x5 x6
yik

1 1
x1 200 1 0 1 1  0 200
2

1
1,2 x2 400 0 1 0 0 0 1000
2

3
0 x6 200 0 0 2 0  1 600
2

valoarea
alegem min
funcţiei 680 0 0 0,2 0,8 0,2 0
zj-cj<0
obiectiv z

Culegerea rezultatelor din tabelul simplex final

max f=680 obţinut pentru x1=200 , x2=400 , x3=0 .

Variabilele auxiliare x4=0 , x5=0 , x6=200 , arată că primele două restricţii

se verifică pentru soluţia de mai sus cu egalităţi, iar cea de-a treia cu inegalitate.

Beneficiul este maxim dacă nu se produce beton de tipul B300.

2. Într-o secţie a unei întreprinderi se produc trei tipuri de produse P1, P2 ,

P3 , folosind rezerve de forţă de muncă (F) şi resurse financiare (B) limitate

conform tabelului următor

Tip produs P1 P1 P1 Disponibil

Rezerve
F 2 3 2 15
B 1 2 3 12
Beneficiu 1,5 4 3  
 

care conţine şi consumurile din aceste rezerve la unitatea de produs pentru fiecare

tip, precum şi beneficiile aduse de o unitate de fiecare tip de produs. Datorită

condiţiilor impuse de stocare întreaga producţie nu trebuie să depăşească 8 unităţi.

Să se determine planul optim de producţie care în condiţiile date să

dea un beneficiu total maxim pe secţie.

R. În urma modelării acestei probleme se obţine următorul program liniar:

max f = max{1,5x1+4x2+3x3}

2 x1  3 x2  2 x3  15
 x  2 x  3x  12
 1 2 3

 x1  x2  x3  8
 xi , i  1,3
.

Se obţine soluţia max f=20,4 pentru

x1 = 0 ; x2 = 4,2 ; x3 = 1,2 .

3. La o secţie de producţie a unei întreprinderi de construcţii, unde se

lucrează în flux continuu de banda, sunt necesare pentru fabricarea de panouri

pentru cofraje 4 tipuri de materii prime (panel (P), scândură de brad (SB), dulapi

(D), cuie (C)) care sunt prelucrate la 3 standuri. Repartiţia materiilor prime şi a

cheltuielilor de munca necesare prelucrării pe cele 3 standuri este dată de tabelul

următor.

Materie primă P SB D C Nr. necesar


Stand de panouri
S1 1 1 0 1 2
S2 1 2 1 0 4
S3 0 1 1 1 3
Cheltuieli de muncă 6 8 12 10  
 

Să se determine un plan de producţie astfel încât cheltuielile să fie

minime.

R. Modelând problema se obţine următoarea problemă de programare

liniară.

min f = min {6x1+8x2+12x3+10x4}

 x1  x2  x4  2
x  2x  x  4
 1 2 4

 x 2  x3  x 4  3
 xi  0 , i  1,4
.

Se obţine soluţia min f = 29 , pentru nivelurile de consum de materiale

x1=0 , x2=1,5 , x3=1 , x4=0,5 .

4. O secţie a unei întreprinderi are în fabricaţie 7 tipuri de produse, P1-P7 .

Două materii prime (M1 , M2 ) necesare realizării acestor produse sunt în cantităţi

limitate, 200 şi respectiv 300 unităţi, celelalte fiind în cantităţi suficiente oricărui

plan de producţie. Consumurile de materii prime M1 , M2 pe unitatea de produs

pentru fiecare tip, precum şi beneficiile nete aduse de producerea unei unităţi din

fiecare tip de produs sunt date în tabelul următor.


Produs P1 P2 P3 P4 P5 P6 P7
Materie
M1 3 4 2 3 5 2 3
M2 5 3 1 4 2 4 3
Beneficiu 6 5 2 6 6 5 6
Datorită unei cereri mari de produse P1 , P2 s-a propus ca măcar 25% din

întreaga producţie a secţiei să fie reprezentată de aceste produse. Să se determine

un plan de producţie care să respecte condiţiile impuse şi care să aducă un

beneficiu total maxim în secţia respectivă.

R. Trebuie rezolvată următoarea problemă de programare liniară.

max f = max{6x1+5x2+2x3+6x4+6x5+5x6+6x7}

3x1  4 x2  2 x3  3x4  5 x5  2 x6  3 x7  200


5 x  3 x  x  4 x  2 x  4 x  3x  300
 1 2 3 4 5 6 7

 3x1  3 x2  x3  x4  x5  x6  x7  0
 xi  0 , i  1,7

Se obţine max f =430,77 pentru

x1=19,23 ; x2= x3= x4= x5=0 ; x2=30,77 ; x2=26,92 .

5. Problema dietei alimentare ( de amestec)

Un meniu trebuie sa asigure necesarul în substanţele S1 , S2 , S3 , cu ajutorul

alimentelor A1 , A2 , A3 . Cantităţile de substanţele S1 , S2 , S3 , ce se găsesc într-o

unitate de aliment de fiecare fel, cantităţile minime necesare organismului în cele 3

substanţe precum şi preţurile celor 3 alimente sunt trecute în tabelul următor.

Aliment A1 A2 A3 Necesar
Substanţă
S1 4 3 2 24
S1 5 7 2 35
S1 1 5 4 40
Preţ 8 7 5  
 

Să se determine cantităţile ce trebuie incluse în meniu din cele 3 alimente

astfel încât costul total al meniului să fie minim .

R. În urma modelării se obţine problema de programare liniară sub forma

canonică

min f = min{8x1+7x2+5x3}

4 x1  3x2  2 x3  24
5 x  7 x  2 x  35
 1 2 3

 x1  5 x2  4 x3  40
 xi  0 , i  1,3
.

După introducerea variabilelor de compensare se obţine problema sub forma

standard, dar nu are o bază canonică evidenţiată. De aceea se aplică metoda în

două faze.

min f = min{8x1+7x2+5x3}

4 x1  3x2  2 x3  x4  24
5 x  7 x  2 x  x  35
 1 2 3 5

 x1  5 x2  4 x3  x6  40
 xi  0 , i  1,6
.

Se obţine min f = 56 , meniul constă din 8 unităţi din alimentul al doilea şi

conţinutul în substanţa S2 depăşeşte minimul necesar cu 21 unităţi, adică x1=0 ,

x2=8 , x3=0 , x4=0 , x5=21 , x6=0 .

6. Substanţele S1 , S2 , S3 , S4 , conţin în cantităţi diferite elementele E1 , E2 ,

E3 , E4 . Din cele 4 substanţe trebuie făcut un amestec care să conţină cel puţin 28 ,
30 , 25 şi respectiv 25 unităţi din cele 4 elemente. Câte o unitate din fiecare tip de

substanţă costă 6 , 3 , 4 şi respectiv5 unităţi băneşti.

Conţinutul unei unităţi din fiecare substanţă în cele 4 elemente este dat de

tabelul următor.

Substanţă S1 S2 S3 S4
Element
E1 3 2 1 3
E2 4 0 3 1
E3 0 3 0 4
E4 5 0 3 1
 

Conţinutul substanţelor S1 , S2 în alte elemente ce aduc amestecului

anumite proprietăţi speciale cer ca acest amestec să conţină cel puţin 3 unităţi din

S1 şi cel puţin 3 unităţi din S2 .

Să se determine cantităţile ce trebuie amestecate din cele 4 substanţe astfel

încât să fie îndeplinite toate condiţiile impuse, iar costul total al amestecului să fie

minim.

R. Modelând problema se obţine

min f = min {6x1+3x2+4x3+5x4}


3x1  2 x2  x3  3 x4  28
4 x  3 x  x  30
 1 3 4

3x2  4 x4  25

5 x1  3x3  x4  25
x  3
 1
 x2  2
 x  0 , i  1,4
 i .

Pentru a reduce numărul restricţiilor problemei liniare obţinute se poate face

schimbarea de variabile

y1 = x1-3 , y2 = x2-2 , y3 = x3 , y4 = x4 .

Se obţine problema

min g =min {6y1+3y2+4y3+5y4+24}

3 y1  2 y 2  y3  3 y 4  15
4 y  3 y  y  18
 1 3 4

3 y 2  4 y 4  19
5 y  3 y  y  10
 1 3 4

 yi  0 , i  1,4
.

După aducerea la forma standard, se aplică metoda în două faze şi după

revenirea la variabilele xi se obţine soluţia:

min f =65,416 , pentru x1=3 , x2=2 , x3=4,416 , x4=4,75 .

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