Sunteți pe pagina 1din 41

PROGRAMARE LINIARĂ

#1. Scurt istoric.


Progamarea liniară, ca disciplină matematică, a apărut la mijlocul
secolului nostru, primele lucrări fiind publicate de L. Kantorovici (1939) şi F.
Hitchcock (1941).
Primele probleme rezolvate se refereau la organizarea optimă a
transporturilor maritime, necesităţile de aprovizionare a frontului, planificarea
misiunilor aviaţiei de bombardament.
În 1947 G. Dantzig şi J. Von Newmann creează metoda simplex care stă
la baza rezolvării problemelor de programare liniară. Ulterior programarea
liniară a cunoscut un mare avânt prin lucrările unor matematicieni şi economişti
ca T. Koopmans, L. Ford, D. Fulkerson, W. Cooper, H. Kuhn, găsindu-şi un
câmp foarte larg de aplicaţii în economie.
Necesităţile reale ale vieţii economice au condus la apariţia şi
dezvoltarea altor tipuri de programări, cum ar fi:
 programarea pătratică,
 programarea convexă,
 programarea în numere întregi,
 programarea stohastică,
 programarea dinamică,
toate acestea fiind înglobate în termenul generic de programare matematică.

#2. Exemple de probleme de programare liniară

a) Problema planului optim de producţie.


Fie maşinile M1 , M2 ,..., Mn care fabrică sau consumă produsele
P1 , P2 ,..., Pm , în cantităţi date pe unitatea de timp, anume aij din Pi pentru
maşina M j , 1  i  m, 1  j  n . (Dacă M j produce în unitatea de timp
cantitatea aij din Pi atunci aij  0 , dacă consumă atunci aij  0 , iar dacă
aij  0 , M j nu produce şi nu consumă Pi ). Producţia (respectiv consumul)
produsului Pi nu trebuie să fie sub limita (respectiv să depăşească)
bi , bi  0 (respectiv bi dacă bi  0 ) pentru 1  i  m .

1
Fie x j timpul de funcţionare al maşinii M j , iar c j beneficiul obţinut
prin funcţionarea lui M j în unitatea de timp, 1  j  n . Un sistem de numere

reale  x1 , x2 ,..., xn  constituie un plan optim de producţie, dacă maximizeză


beneficiul total adică funcţia:
n
f   c j x j în condiţiile restrictive:
j 1
n

a x
j 1
ij j  bi , 1  i  m şi x j  0 .

Dacă c j reprezintă costul funcţionării maşinii M j în unitatea de timp,


n
atunci se va cere minimizarea funcţiei de cost f   cj x j .
j 1

b) Problema dietei (a amestecului).


Să se determine cantităţile x j din alimentele Aj , 1  j  n , alcătuind o
n
dietă  x1 ,..., xn  astfel încât costul acesteia f   c j x j să fie minim, unde
j 1

c j reprezintă costul unitar al alimentului A j , dacă se mai cunoaşte componenţa


în substanţe nutritive S1 , S2 ,..., Sm (cum ar fi: glucide, lipide, vitamine) a
alimentelor Aj , 1  j  n , dată prin matricea: a  ij 1 i  m
1 j  n
unde aij este
cantitatea de substanţă Si conţinută în unitatea din alimentul A j şi se cere ca
fiecare dietă să conţină cel puţin cantităţile bi din substanţa Si , 1  i  m .
Deci, matematic problema se transcrie:

 n

 min  c j x j in conditiile restrictive


 j1
 n


 a ij x j  b i , 1  i  m
 j1
x  0 j  1,2,...,n
 j


2
c) Problema folosirii optime a resurselor.
O unitate economică trebuie să producă produsele P1 , P2 ,..., Pn având
la dispoziţie cel mult cantităţile b1 , b2 ,..., bm din resursele R1 , R2 ,..., Rm .
Ştiind că producerea unei unităţi din produsul Pj necesită cantitatea aij din
resursa Ri şi că prin livrarea unei unităţi din acelaşi produs se obţine beneficiul
C j , 1  i  n se cere să se determine cantităţile x1 , x 2 ,..., x n din produsele
P1 , P2 ,..., Pn astfel ca beneficiul să fie maxim. Deci:
 n

 max  c j x j in conditiile
 j 1
 n


 aij x j  bi , 1  i  m
 j 1
 x  0 j  1,2,...,n
 j


d) Problema de transport.
Se dau depozitele D1 , D2 ,..., Dn , având disponibilă o marfă în
cantităţile b1 , b2 ,..., bn ; consumatorii C1 , C2 ,..., Cm solicitând marfa în
cantităţile b'1, b'2, ..., b'm; şi costul unitar cij de transport al mărfii de la
depozitul Di la consumatorul C j .
Se cere să se găsească un sistem de numere nenegative
x , i  1,2,..., n; j  1,2,..., m unde
ij xij este cantitatea de marfă
transportată de la Di la C j , care să facă minim costul de transport, adică
n m
funcţia f    cij xij şi să nu depăşească disponibilul din nici un depozit,
i 1 j 1
m
adică: x
j 1
ij  bi , i  1,..., n şi să satisfacă măcar cererea fiecărui
m
consumator, adică: x ij  b 'j , j  1,..., m
i 1

Sistemul x , i  1,2,..., n; j  1,2,..., m care îndeplineşte aceste


ij

condiţii se numeşte program de transport. Evident, existenţa unui program de

3
transport impune condiţia ca disponibilul total să depăşească sau să fie măcar
egal cu cererea totală, adică:
n m
1  b   b'
i 1
i
j 1
j

Dacă restricţiile problemei sunt date ca egalităţi atunci şi relaţia (1)


devine egalitate, şi în acest caz problema de transport se numeşte echilibrată.
În caz contrar spunem că avem o problemă de transport neechilibrată.
Datele problemei de transport pot fi înscrise într-un tablou de forma:

Tabelul (T)
Consumatori C1 C2 ... Cm Disponibil
Depozite
D1 c11 c12 ... c1m b1
c21 c22 ... c2 m
D2 b2
   
 
cn1 cn 2 ... cnm
Dn bn
Cerere b'1 b'2 ... b'm

#3. Noţiuni generale privind problema programării liniare

Exemplele prezentate conduc la rezolvarea unor probleme matemetice


asemănătoare. Forma standard a unei probleme de programare liniară de minim
(sau program liniar de minimizare) se prezintă astfel:

 n

 min f  
c j x j in conditiilerestrictive
 j 1

2 PL  min n

 aij x j  bi , 1  i  m, bi  0
 j 1
 x j  0, 1  i  n


iar a unui program liniar de maximizare:

4
 n

 max f  
c j x j in conditiile
 j 1

3 PL  max n

 aij x j  bi , 1  i  m, bi  0
 j 1
 x j  0, 1  j  n

Condiţiile restrictive se mai numesc şi restricţiile programului liniar.
Dacă notăm:
 x1 , x2 ,..., xn  T  X ; a 
ij 1i  m
1 j  n
A

b1 ,b2 ,...,bm T  L; c1 , c2 ,..., cn   C


PL  min se transcrie matriceal astfel:
atunci
min f  x   C T  X
2'  A  X  L
 X 0

iar PL  max :
max f  x   C T  X
3'  A  X  L
 X 0

Evident că sistemul de restricţii A  X  L poate fi:
 incompatibil
 compatibil unic determinat (numai în cazul m  n )
 compatibil nedeterminat.
Ultimul caz interesează cel mai mult pentru că aici se pune problema de
a alege dintre mai multe soluţii pe cea mai bună.
Pentru modelele de PL care nu au forma standard există modalităţi de
construire a unor forme standard echivalente. Acestea sunt prezentate în II.5.
Să presupunem că rangul lui A este m.Dacă notăm coloanele matricei A
cu a j , 1  j  n atunci restricţiile problemei se transcriu:
4 a1x1  a 2 x2 ...a n xn  L

Definiţia II.3.1. Un vector X  R , ale cărui componente satisfac


n

restricţiile unei probleme de programare liniară, se numeşte program admisibil


(sau soluţie admisibilă, sau soluţie posibilă)

5

Definiţia II.3.2 Un program admisibil X care minimizează (sau
maximizează, în funcţie de problemă) funcţia liniară asociată acelei probleme se
numeşte program optim (sau soluţie optimă).

X   x1 , x2 ,..., xn  se numeşte program


T
Definiţia II.3.3.Un program
de bază dacă vectorii coloană a j , corespunzători componentelor x j nenule
x j 
 0 , sunt liniar independenţi.
Deoarece rang A  m un program de bază are cel mult m componente
nenule;

Definiţia II.3.4. Dacă un program de bază are exact m componente


nenule (m= rang A), atunci programul de bază se numeşte nedegenerat. În caz
contrar, degenerat.

Definiţia II.3.5. Matricea B de tipul m x m formată din coloanele lui A


corespunzătoare componentelor nenule ale unui program de bază nedegenerat X
se numeşte bază a programului X.

Exemplul II.3.1. Problema de programare liniară:

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

 x j  0, 1  j  4.

se transcrie matriceal astfel:


T
min ( 2 -3 -3 1 ) . ( x1 x2 x3 x4 )

  x1 
  
1 1 1 1   x 2    2 
1 1 -3 1   x 3   4 
  
  x4 
 X  0, rang A = 2

Sistemul liniar de restricţii se transcrie şi sub forma:

6
 1  1  1  1  2
   x1    x2     x3   x4   
 1  1  3  1   4
    
a1 a2 a3 a4 L

Programe ale problemei sunt de pildă:

 3  3 5
     
0 1 1
X  ; X  ; X  
1   2   3
 0  0 1
     
 1  0 1
1 1
primele două fiind şi programe de bază nedegenerate cu bazele B 1   ;
1 1 
1 1
respectiv B 2  
1 1
1 1 4 2 1

 (sau cu notaţiile anterioare B  a , a ; B  a , a .
2
  
Valorile funcţiei obiectiv, corespunzătoare celor trei programe sunt:
     
f X 1  7, f X 2  3, f X 3  5. Programul X
3
nu este de bază deoarece
vectorii coloană corespunzători componentelor nenule, respectiv:
1 2 3 4
a , a , a , a sunt liniar dependenţi.
1
 
0
Vectorul X 4   , deşi verifică sistemul de restricţii nu este program
 1
 
0
admisibil deoarece nu are toate componentele nenegative.
Notăm cu P mulţimea soluţiilor posibile ale unei probleme PL - min.
Deci  
P  x  Rn AX  L, X  0 şi notăm cu P mulţimea programelor
optime ale acestei probleme:

P  X   P CT  X   CT  X ;  X  P . 

Teorema II.3.1. Mulţimile P şi P sunt convexe.

Demonstraţie: Să demonstrăm că P este convexă, adică


  X , Y  P si      0,1 avem  X + 1- Y  P si  X + 1- Y  0
Faptul că   X + 1- Y  0 este evident.
Deoarece X  P  A  X  L siY  P implicã AY = L. Deci:
A    X  1  Y   A X  1    AY   L  1   L  L .
Deci:  X  1  Y  P

7
Pentru a demonstra este că
convexă, P fie
 
X , Y  P deci C  X  C  Y  min C  X  º i 0    1. Avem:
  T   T  T
 XP 
 
C T  X   1  Y     C T X   1    C T Y     min C T X 
XP

1    min C T X  min C T X


XP XP

Deci  X  1     Y
 
este optim.

Teorema II.3.2. Dacă o problemă de programare liniară admite


programe atunci admite şi programe de bază.

Teorema II.3.3. Dacă un program liniar are optim, atunci are şi un


program optim de bază.

Pentru demonstraţia acestor două teoreme avem nevoie de următoarea


lemă:

Lema II.3.1. Oricare ar fi sistemele de numere reale:


 xi   
xi  0, 1  i  n si yi 1  i  n, yi nu toate nule se poate determina un
număr   0 astfel încât xi   yi  0 pentru orice     ,   , 1  i  n şi
pentru cel puţin un indice j, 1 j  n, să avem
x j    y j  0 sau x j    y j  0

Demonstraţia lemei. Grupăm indicii 1,2,...,n după semnul


numerelor yi astfel încât I1  i yi  0 si I 2  i yi  0 . Cum nu toţi yi
sunt nuli, 1  i  n , avem I 1  I 2  . Dacă I 1   si I 2   comparăm
rapoartele xi / yi cu i  I1 şi apoi pe cele cu i  I 2 . Găsim r  I1 şi s  I 2
astfel încât:
xr xi
0   min
y r i I 1 y i
xr xi
0    max
yr i I 2 y i

Vom lua   min ,  iar j astfel:


 xr 
- dacă     luam j  r si vom avea x r   y r  0 cãci  =  = 
 yr 

8
 -x s 
- dacă     luam j  s si vom avea x s   y s  0 cãci  =   = 
 ys 
 xi 
Observând că    min  vom avea în ambele cazuri
i I 2  y i 

xi   yi  0   1  i  n si       ,   .
Dacă I 1   si I 2   luăm    iar dacă I 1   si I 2  
luăm    .
Demonstraţia lemei este încheiată.

Demonstraţia teoremei II.3.2. Vom demonstra că un program de bază


este un program admisibil cu un număr minim de componente nenule.
Fie X programul admisibil cu numărul minim de componente nenule. Fie
r numărul componentelor sale nenule. (Orice alt program admisibil va avea cel
puţin r componente nenule).
Dacă r = 0 atunci X = 0 este program de bază. Dacă r > 0, fie
x i1 
, xi2 ,..., xir componentele strict pozitive ale lui X. (restul sunt nule).
i i i
Dacă a 1 , a 2 ,..., a r sunt liniar independenţi atunci X este program de bază. Să
i i i
presupunem prin reducere la absurd că a 1 , a 2 ,..., a r sunt liniar dependenţi ,
adică există yi1 , yi2 ,..., yir  R nu toţi nuli astfel încât:
(5) yi1 ai1  yi2 ai2 ... yir air  0
Considerând Y  Rn cu yi  0 pentru
i  1,2,..., n  i1 , i2 ,..., ir  si y i  yik pentru i  i1 , i2 ,..., ir ; k  1,2,..., r.
atunci folosind (5) putem scrie A  Y  0 . Atunci:
(6) A X   Y   AX   AY  AX  L     R
Acum aplicăm lema II.3.1. pentru sistemele
x ,..., x  si y ,..., y . Deci există   0 astfel încât, pentru un
i1 ir i1 ir

  ,   să avem xik    yik  0,1  k  r , si xi j    yi j  0


pentru măcar un j 1,2,..., r . Atunci X   Y devine un program
admisibil dar cu cel mult r  1 componente nenule, contrar ipotezei. Deci
relaţia (5) nu este posibilă, rezultă că X este program de bază.

Demonstraţia teoremei II.3.3. Fie X  P un program optim pentru


 

PL - min care are un număr minim r de componente nenule. Dacă r = 0 atunci


X   0 este program optim de bază. Dacă r > 0, fie ai1 , ai2 ,..., air coloanele

9
lui A corespunzătoare celor r componente nenule din X  . Dacă aceste coloane

sunt liniar independente atunci X este program optim de bază. Presupunem
prin absurd că aceste coloane ar fi liniar dependente. Cu aceleaşi notaţii ca în
Y  Rn satisfăcând AY  0.
demonstraţia precedentă găsim un
Dacă C  Y  0 am putea alege un  0  ,   astfel încât
T

X     Y  P si    C T Y  0;atunci
 
C T X     Y  C T X     C T Y  C T X  contrar faptului că X este
program optim; deci C Y  0.T

Atunci alegând un    ,   astfel ca X     Y  P să aibă cel


mult r-1 componente nenule găsim că X     Y  P 0 ceea ce contrazice faptul
că r este numărul minim de componente nenule pentru un program optim. Deci
X  este program optim de bază.
În concluzie, un program optim de bază este un program optim cu un
număr minim de componente nenule.

Teoremele II.3.2. şi II.3.3. reduc căutarea soluţiei optime a unei


probleme de programare liniară printre programele de bază, al căror număr este
finit. Cu algoritmul simplex se porneşte de la un program de bază care nu este
optim şi se construieşte un alt program de bază în care funcţia obiectiv să aibă o
valoare mai mică sau mai mare, după cum este un PL - min sau PL - max.

# 4. Algoritmul simplex

Se consideră problema de programare (2) şi un program de bază


nedegenerat X  . După unele renumerotări şi rearanjări putem considera
 
T
X   x1 , x2 ,..., xm ,0,0,...,0 ; deci variabilele x1 , x2 ,..., xm sunt

principale iar xm1 ,..., xn secundare, iar vectorii coloană a1 , a 2 ,..., a m


formează baza B a programului de bază  
X  . Fie N  a m1 , a m 2 ,..., a n .
Mai notând:
 x1   x m1   c1  cm1 
       
X p    ; X s    ; C p    ; C s     problema (2) poate fi
       
 xm   xn   cm   cn 
scrisă:

10
min f  X   CpT X p  CsT X s

 7  B  X p  N  Xs  L
 X 0

Înmulţind BX p  NX s  L la stânga cu B 1 obţinem:
8 E  X p  B1  N  X s  B1 L
care reprezintă transcrierea sistemului de restricţii în baza B, căci dacă scriem
m
a j   zij a i , 1  j  n (exprimarea vectorilor coloană în funcţie de
i 1
vectorii bazei B) vom avea:
zij   ij pentru 1  i, j  m si z ij  0 pentru m+ 1  j  n. Corespunzător

programului X problema (2) devine:
 m
f X 

   ci x i
i 1
 9  n

 xi  
z ij x j  x i
 j  m1

Deci xi sunt componentele vectorului L în baza B.


L  B  X   B 1 L  X  iar zij   1 i  m
m 1 j  n
 B1  N
Deci relaţia (8) devine:
10 X p  B1 NX s  X  de unde
11 X p  X   B1 NX s şi atunci
 
: f  X   CTp X p  CsT X s  CTp X   B1NX s  CsT X s  CTp X   CsT  CTp B1N X s  
sau explicit:
m n  m 
12 f  X  c x 
i i   c   c z j j ij x j

i 1 j  m1 i 1
m m
Notând: c x 
i i  Z  si c z i ij  Z j , m  1  j  n atunci:
i 1 i 1

 c 
n
13 f  X   Z  j  Zj xj
j  m 1

Observăm că  
Z  f X  si Z  CpT  B1 L.
Acum putem asocia problemei PL- min următorul tabel:

11
Cp B c1 c2 cn X
  a1 a2 an 
vectorii z11 z12 ... z1n componentele
(S) bazei nenule ale lui
  
X
zm1 zm2 ... zmm

Cj  Z j ..................................
.......
 
f X


Teorema II.4.1. Dacă X este un program de bază nedegenerat pentru
PL - min şi în tabelul asociat (S) avem c j  Z j  0   m  1  j  n atunci
X  este program optim.
Demonstraţie: Din (13) avem:

   cj 
 Z j xj  f  X 
n
f  X  f X   pentru orice program admisibil X.

j m1
0 0

Deci X este optim.

Teorema II.4.2. Dacă X este un program de bază nedegenerat şi în
tabelul simplex asociat (S) există un t, m  1  t  n, astfel încât
ct  Zt  0 si z it  0   1  i  m , atunci PL - min nu are optim finit.

 
T
Demonstraţie: Fie: X  x1 , x 2 ,..., x n unde:
x t  ,   R
x i  xi  zit  ; 1 i  m
x j  0; m  1  j  n, j  t
Astfel avem x j  0   1  j  n.
Pentru 1  i  m avem:
a  x 
n m n m m m

a a a a a

ij x j  ij x j  ij x j  ij

j  z jt    a it   ij x j  ij z jt   a it   
j 1 j 1 j  m1 j 1 j 1 j 1
m  n  m
(folosind (9))  a  x ij j  z jh h    
x

a ij z jt  ait  
j 1 hm1 j 1

12
m m  n  m m n
 a ij x j  a   z
ij jh x h  

 ait  ait   a ij x j   a ij z jh x h 
j 1 j 1 h m1 j 1 j 1 h m1

m n m m n  m  m
  aij x j   aij z jh x h   aij x j    xh
  aij z jh   a ij x j 
j 1 h m1 j 1 j 1 h m1 j 1  j 1
n m n n
  x h aih  (renotã m pe h cu j)   aij x j   x j aij  a ij x j  bi
h m1 j 1 j  m1 j 1

Deci X este soluţie admisibilă. Avem:


 c 
m n m
  
f X  c j x j  j  Zj xj  c x   cj

j t  Zt   
j 1 j m1 j 1

din definirea lui X .


Deoarece   0 si ct  Zt  0 atunci  
f X 

  , adică
funcţia obiectiv nu are optim finit.


Teorema II.4.3. Dacă X este un program de bază nedegenerat pentru
PL - min, iar în tabelul simplex asociat (S) există un t,
m  1  t  n cu ct  Z t  0 şi cel puţin un indice i, 1  i  m , astfel încât
zit  0 , atunci alegând s, 1  s  m , după criteriul:
xs  x 
14  min i / 1  i  m, zit  0
zst  zit 
s t
se poate substitui în baza B vectorul a cu vectorul a , obţinând o bază B' ,
corespunzătoare unui program de bază X ' care ameliorează valoarea funcţiei
obiectiv.

Demonstraţie. Deoarece z st  0, folosind lema substituţiei rezultă că


înlocuind a s în B cu a t sistemul de vectori nou obţinut B' , este o bază. Soluţia
de bază corespunzătoare lui B' este dată tot de lema substituţiei:
 x s
 x i'  x i   z , 1  i  m, i  s
 z st it
 x '  0
 15
s
 
 ' xs
 x t  0
z st

 x 'j  0, m  1  j  n, j  t
cu toate componentele nenegative (pentru 1  i  m, i  s dacă zit  0 atunci

13
x s
xi'  xi     zit  , deci o sumă de numere nenegative; iar dacă zit  0
z st
 xi xs 
avem x  zit    şi ţinând seama de (14) înseamnă că xi' este produs
'

 zit zst 
i

de două numere nenegative).

 
T
Deci X '  x1' , x2' ,..., xn' este o soluţie de bază. Valoarea funcţiei obiectiv
pentru X ' este:
   c j  Z j x 'j  f  X     ct  Z t   xt'  f  X  .
n
f  X '  f X  
j  m1

Acum putem prezenta algoritmul simplex pentru o problemă PL - min în


formă standard.
-Pasul 10: Se găseşte un program de bază nedegenerat X  cu baza B; se
construieşte tabelul simplex (S).
-Pasul2 : Se verifică dacă diferenţele c j  Z j  0 pentru orice j ,1  j  n .
Dacă DA se trece la pasul 5; dacă NU, dintre toate diferenţele c j  Z j ,
negative, se alege cea mai mică. Indicele j corespunzător să-l notăm cu t. (Dacă
există mai mulţi t se alege primul de la stânga la dreapta). Vectorul a t va intra
în bază. Se cercetează dacă zit  0 pentru 1  i  m. Dacă DA, se trece la
pasul 4, dacă NU, se trece la pasul 3.
xs  x 
-Pasul  min i / 1  i  m, zit  0 .
3 : Se alege s, astfel încât
zst  zit 
s
Vectorul a va ieşi din bază. Elementul zst devine pivot. Se construieşte un nou
tabel simplex folosind regula dreptunghiului:
a) se împarte linia pivotului la pivot.
b) în coloana pivotului, elementele zsj cu j  t se înlocuiesc cu 0
zit  zsj
c) elementele zij , cu i  s, j  t se înlocuiesc cu z 'ij  zij  .
zst
Se obţine un alt program de bază X ' cu baza B' şi o nouă valoare a funcţiei
obiectiv.

Se revine la pasul 2 cu B  B' şi X   X '
-Pasul 40 .Concluzie: “PL - min nu are optim finit” şI algoritmul se opreşte.

14
-Pasul 5 .Concluzie: “PL - min are optim X  iar valoarea minimă f  X   ".
STOP.
Exemplul II.4.1. Fie problema:

min f  5x1  7 x 2  9 x 3  2 x 4  x 5
 3x1  2 x 2  x 3  5 x 4  3x 5  7
 xj  0 j  1,2,...,5
 2 x1  x 2  x 3  3x 4  x 5  4
Alegem X   1,2,0,0,0 . Avem:
T

 3 2 1 5 3


a 1   ; a 2   ; a 3   ; a 4   ; a 5   
2  1 1 3 1

B  a1 , a 2 
 1  0
Coordonatele vectorilor a1 si a 2 în baza B sunt   , respectiv   .
 0  1
Pentru a afla coordonatele lui a 3 se procedează astfel: punem
a 3   1a 1   2 a 2 ,  1,  2  R , deci:
 3 2  1 3 1 2 2  1
 1    2       ceea ce ne dă  1 1,  2  1 .
2  1 1 2 1  2  1
1 1 1
Deci în baza B, a B3    . Analog se găsesc: a B4   , a 5B   
 1 1 3
Aşadar tabelul simplex corespunzător bazei B are forma:

5 7 9 2 1
1 2 3 4
a a a a a5
5 a1 1 0 1 1 -1 1
7 a2 3 2
0 1 -1 1
cj  Z j 0 0 11 -10 -15 19
Deci a 5 intră în bază, a 2 iese din bază, z25 - pivot. Se execută pivotajul
şi obţinem:

 5 / 3
5 a1 1 1/3 2/3 4/3 0 5/ 3  0 
1 a5 2/3  
0 1/3 -1/3 1/3 1 X '  0  f  X '  9
 0 
cj  Z j 0 5 6 -5 0 9  
 2 / 3

Intră în baza a 4 şi iese a 1 .

15
2 a4 3/ 4 1/ 4 1/ 2 1 0 5/ 4
1 a 5
1 / 4 1 / 4 1 / 2 0 1 1/ 4
cj  Z j 15/4 25/4 17/2 0 0 11 / 4

Şi am obţinut c j  Z j  0   1  j  5. Deci programul optim este


11
 0,0,0,5 / 4,1 / 4 T . cu min f =
4
Algoritmul se aplică şi problemelor PL - max în forma
standard cu observaţia că max f   min  f  . De asemenea algoritmul se
n
aplică şi în cazul în care funcţia obiectiv are forma f  c x j j   ,  R ,
j 1
deoarece punctele de extrem ale acesteia sunt aceleaşi cu punctele de extrem ale
n
funcţiei: g  c x . j j
j 1

# 5. Tratarea problemelor de programare liniară care nu au forma


standard. Metoda bazei artificiale.

Dacă sistemul de restricţii conţine inecuaţii de forma


n  n 
 
: aij x j  bi sau aij x j  bi , 1  i  m atunci acestea se transformă în
 
j 1  j 1 
egalităţi dacă se adaugă (respectiv se scade) în primul membru o necunoscută
auxiliară yi , yi  0, numită şi variabilă de egalizare sau de compensare.
n n
Deci:  aij x j  yi  bi (respectiv a ij x j  yi  bi ).
j 1 j 1
Dacă o componentă a termenului liber bi , i  1,2,..., m este negativă
atunci se înmulţeşte egalitatea sau inegalitatea respectivă cu -1.
Dacă nu toate componentele lui X  R n sunt constrânse să fie
nenegative atunci facem substituirea acestora cu variabile ce satisfac condiţia de
' '
nenegativitate astfel: dacă x j  0 atunci punem: x j   x j cu x j  0; dacă
' '' ' ''
x j este liberă, neconstrânsă atunci punem: x j  x j  x j cu x j , x j  0.
Aceste substituţii se înlocuiesc atât în funcţia obiectiv cât şi în

16
restricţiile problemei.

Exemplul II.5.1. Problema:


max f  2 x1  x 2
2 x  x  4
 1 2

 P   x1  x 2  4

 x 2  0, x1  R
se transformă în:
' ''
min  f  2 x1  2 x1  x 2
 2 x '  2 x ''  x  y  4
 1 1 2 1
 '
 P '   x1  x1  x 2  y 2  4
''


 x1' , x1'' , x 2 , y1 , y 2  0

care este o problemă standard PL - min. Se rezolvă problema (P') şi apoi se


reţine soluţia pentru problema (P).
În cazul în care nu dispunem de un program de bază se utilizează metoda
celor două faze pentru determinarea unui astfel de program.

Faza I: Programului liniar:


 n
 min f 

cjxj 
j 1

 n
 16 
PL  min  a j x j  bi , 1  i  m
 j 1

 x j  0, 1  j  m


i se asociază programul liniar auxiliar, cu variabilele artificiale x1a , x2a ,..., xma :

17
 m
 min g 


xi
a

i 1

 n
 17 a

 j 1

PL  min  a ij x j  x i  bi , 1  i  m
a


 x j  0, x ia  0, 1  j  n, 1  i  m.


Sistemul de restricţii este un sistem de m ecuaţii cu n + m necunoscute.
 T a
Se observă că 0,0, ...,0, b1 , b2 ,..., bm este o soluţie de bază pentru PL  min
cu care se poate pleca în algoritmul simplex. Deoarece funcţia obiectiv g este
pozitivă, vom găsi cu certitudine un program optim de bază pentru care
a
min g  0. Dacă min g = 0 atunci componentele x i în programul optim de bază
pentru (17) sunt nule şi eliminându-se aceste zerouri, corespunzătoare
variabilelor xia din acest program optim de bază al PLa  min , se obţine un

program de bază X pentru (16).
Faza a II-a: În continuare se aplică algoritmul simplex pentru (16) cu
programul de bază X0. Dacă min g > 0 atunci (16) nu are soluţii admisibile.

Exemplul II.5.2.

min f  x1  6 x 2 
2 x  x  x  3
 1 2 3

 x1  3 x 2  x 4  4

 x i  0 i  1,2,3,4

Faza I:

 1
 min g  x a  x a
2 
 a
 2 x1  x 2  x 3  x1  3
PL  min 
a

 x  3x  x  x a  4
 1 2 4 2

x  0 a a
i  1,2,3,4, x1 , x 2  0
 i
Care are soluţia de bază  0,0,0,0,3,4 . Aplicăm algoritmul simplex:
T

0 0 0 0 1 1
a1 a2 a3 a4 a5 a6

18
1 a5 2 1 -1 0 1 0 3
1 a6 1 3 0 -1 0 1 4
-3 -4 1 1 0 0 7
1 a5 5/3 0 -1 1/3 1 -1/3 5/3
0 a2 1/3 1 0 -1/3 0 1/3 4/3
-5/3 0 1 -1/3 0 4/3 5/3
0 a1 1 0 -3/5 1/5 3/5 -1/5 1
0 a2 0 1 1/5 -2/5 -1/5 2/5 1
0 0 0 0 1 1 0

Am obţinut programul optim de bază


 1,1,0,0,0,0 T pentru PLa  min cu min g  0 . Faza întâi s-a încheiat.
Faza a II-a. Reţinem ca program de bază 11
, ,0,0 (componentele
T

corespunzătoare, respectiv, lui x1 , x2 , x3 , x4 , din programul optim de bază


obţinut la faza I) pentru problema iniţială şi aplicăm algoritmul simplex.

#.6. Eliminarea degenerării

Este posibil ca după câteva iteraţii în aplicarea algoritmului simplex să


revenim la una din bazele prin care am trecut deja, şi atunci procesul continuă la
infinit fără a conduce la o soluţie. Această situaţie se numeşte ciclare. Această
situaţie poate apărea atunci când problema de programare liniară admite soluţii
de bază degenerate (vezi definiţia II.3.4.). Nu întotdeauna degenerarea implică
neapărat ciclare. În practică, ciclarea apare foarte rar.
Pentru înlăturarea degenerării se foloseşte aşa numita "tehnică a
perturbării cu  ".
Fie o problemă PL - min şi X  un program de bază degenerat. Deci
 
T
X  are r componente nenule, r  m . Fie X   x1 , x 2 ,..., x r , 0,...,0 .
Aceasta înseamnă că în iteraţia algoritmului simplex care conduce la
 
x
 

obţinerea lui X s-a întâlnit situaţia: min i 1  i  m, zit  0 se atinge în
 it
 z 

mai multe puncte (pentru mai mulţi indici i). Fie s şi u indicii pentru care avem
xs xu
 .
zst zut

19
Se pune întrebarea cum alegem în acest caz pivotul (linia pivotului)?
Vom înlocui X  cu:
n
X    X     a j unde   0 este un număr
  j
(18)
j 1

foarte mic, iar a , 1  j  n sunt vectorii coloană ai sistemului de restricţii.


j

   a
j j
Deci este o combinaţie liniară de vectorii a j cu coeficienţii
j 1

 ,  ,  3 ,...,  n .
2

Componentele lui X    vor fi:


n
(19) xk    xk    j zkj ,   0,   0
j 1

Observaţie: Aici prin  înţelegem puterea a j  a a lui . Dacă alegem 


j

diferit de rădăcinile ecuaţiei:

xs   xu  
(20)  atunci pentru acest    vom avea:
zst zut

(21)
xs    x  

u

zst zut
Împărţind (19) la zst dacă k  s şi la zut dacă k = u obţinem:

(22)
xs   x 
s
  
n
j zsj
zst zst n 1 zst

(23)
x 

u   x 
u
  
n
j zuj
zut zut n 1 zut
j
Din relaţiile (22) şi (23), comparând coeficienţii lui  , obţinem compararea
celor două linii, care este o comparare lexicografică: dacă j este primul indice
zsj zuj xs   xu  
pentru care  atunci şi  adică
zst zut zst zut

20
 
 x   
1  i  m, zit  0 se atinge pentru i  s . Deci pivotul va fi
i
min zst ,iar
 zit 
linia s este linia pivotului.
Făcând   0 se revine la problema iniţială.
xs xu
În practică, dacă am ajuns la un pas în care avem:  se
zst zut
procedează astfel:

1 Se împart elementele de pe linia s la zst şi cele de pe linia u la zut . Se


formează două linii de rapoarte.

2 Se compară rapoartele corespunzătoare de pe cele două linii. Linia pe care


apare primul raport mai mic se alege ca linie pivot.

Exemplul II.6.1. Fie situaţia:

2 1 1 1
1 2 3
a a a a4
2 a1 1 0 0 4/5 12 / 5 12 / 5
2
3
1 a 0 1 0 2/5 6/5 4/5
6/ 5
1 a3 8 3
0 0 1 2 2/5
cj  z j 0 0 0 -3 14

Împărţim prima linie la 4/5 şi cea de-a doua la 2/5. Obţinem:

5/ 4 0 0 1
0 5/ 2 0 1
Primul raport mai mic apare pe linia a doua, deci z24 este pivotul.

#.7. Algoritmul simplex dual

Problemei de programare liniară:

21
 min f  X   C T  X

(24)  A X  L

 X 0

i se asociază problema:

 y1 
 max g Y   LT  Y  
 y2
(25)  AT  Y  C unde Y   
   
 Y0  
 ym 
Problema (24) se va numi primală iar problema (25) duala problemei
(24) şi reciproc.
Exemplul II.7.1
min f  x1  2 x 2  2 x 3
 x1  2 x 2  x 3  x 4  1

2 x1  x 2  x 3  x 4  2

 x1  x 2  x 3  x 4  1
 xi  0, i  1,2,3,4
Folosind tabelul:
X L
x1 x2 x3 x4
Y
y1 1 2 1 1 1
y2 2 1 1 1 2
y3 1 1 1 1 1
 1 2 2 0 C
găsim duala:

max g Y   y1  2 y2  y3
 y1  2 y2  y3  1

2 y1  y2  y3  2
 y1  y2  y3  2

y  y2  y3  0
 1
 yi  0, i  1,2,3

22
Teorema II.7.1. Fie X o soluţie posibilă pentru problema (24) şi Y o
soluţie posibilă pentru problema (25). Atunci f  X   gY 

Demonstraţie: Din AX  L, înmulţind la stânga cu Y T  0 obţinem:


Y  A  X  Y T  L  LT  Y  g Y 
T

Pe de altă parte: AT  Y  C  X T  AT  Y  X T  C  C T  X  f  X 
Dar cum Y T  A  X   A  X   Y  X T  A T  Y
T
ajungem la concluzia
g Y   f  X  .

Teorema II.7.2. Dacă (24) are optim finit atunci (25) are optim finit şi
 
avem max g Y   min f X    sau C T
 X   LT  Y   unde X  este o
soluţie optimă pentru (24) iar Y  o soluţie optimă pentru (25).

Demonstaţie: Din teorema II.7.1. pentru orice pereche de programe


duale X,Y, avem g Y   f  X  . Deci are loc şi max g Y   f  X  . Cum f
este o funcţie liniară, deci continuă, atunci min f  X  există şi are loc
max g Y   min f  X  .
Pe de altă parte folosind (13) şi teorema II.4.1. avem
 
min f  X   f X   Z C Tp  B 1  L . Se demonstrează că Y   B 1  C p  0
este un program optim pentru duala (25). Atunci:

min f  X   C Tp  B 1  L  B 1  C p 
T
 
 L  Y T  L  LT  Y   g Y   max g Y .

Teorema II.7.3. (teorema ecarturilor complementare)


Fie X,Y soluţii ale problemelor (24), respectiv (25). Atunci X,Y sunt
soluţii optime dacă şi numai dacă au loc relaţiile:
Y T   L  AX   0; 
X T AT  Y  C  0 
Demonstraţie. Avem:
L  Y  Y T  L  Y T AX  X T  AT  Y  X T  C  C T  X
T

Folosind teoremele II.7.2. şi II.7.1. obţinem că X,Y sunt programe


optime dacă şi numai dacă L  Y  C  X ceea ce conduce la:
T T

Y T L  Y T A  X  X T AT  Y  X T C
sau: Y T  L  AX   0; 
X T AT Y  C  0. 
Dualitatea se foloseşte cel mai frecvent în cazul în care problema
primală necesită calcule multe:

23
Exemplul II.7.2.
min f  3x1  x 2
2 x1  x 2  1

 x1  x 2  1
3x1  2 x 2  3.

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

Pentru a rezolva această problemă cu algoritmul simplex trebuie


introduse patru variabile de egalizare, dar scriind problema duală:

max g  y1  y 2  3 y 3  y 4
2 y  y  3 y  2 y  3
 1 2 3 4
 y1  y 2  2 y 3  3 y 4  1

 yi  0 i  1,4
aceasta necesită numai două variabile de egalizare. Obţinem:

1 1 3 1 0 0
a1 a 2 a3 a4 a5 a6
0 a5 2 1 3 2 1 0 3
a6 1
0 1 1 2 3 0 1
-1 -1 -3 -1 0 0 0
0 a 5 1/2 -1/2 0 -5/2 1 -3/2 3/ 2
1/ 2
3 a3
1/2 1/2 1 3/2 0 1/2
1/2 1/2 0 7/2 0 3/2 -3/2

deci max g  3 / 2  min f .


Pentru a putea formula duala unei probleme de minim am văzut că
restricţiile trebuie să aibă forma (24). În acest caz, restricţiile " " sunt numite
concordante, iar cele " " neconcordante. Pentru problema primală de maxim,
restricţiile " " sunt cele concordante iar " " cele neconcordante.
În caz că nu au această formă pot fi aduse la forma (24) după
următoarele reguli:

modelul dat modelul dual


număr de variabile număr de restricţii

24
număr de restricţii număr de variabile
minim maxim
maxim minim
termeni liberi ai restricţiilor coeficienţii funcţiei obiectiv
coeficienţii funcţiei obiectiv termenii liberi ai restricţiilor
coloanele matricii restricţiilor liniile matricii restricţiilor
restricţie concordantă variabilă nenegativă
restricţie neconcordantă variabilă nepozitivă
restricţie egalitate variabilă liberă
variabilă nenegativă restricţie concordantă
variabilă nepozitivă restricţie neconcordantă
variabilă liberă restricţie egalitate
Exemplul II.7.3.

min f  3x1  2 x2  x3  x4
2 x1  x2  x3  x4  5

 x1  2 x2  x3  2 x4  10

 x1  x2  2 x3  x4  10

 x1/ 2  0, x3  0, x4  R

Duala va fi:
max g  5y1  10 y 2  10 y 3
2 y1  y 2  y3  3

 y1  2 y2  y 3  2
 y1  y 2  2 y3  1

 y1  2 y 2  y3  1
 y1  0, y 2  0, y3  R

25
#.8 Problema transportului

O problemă de transport, echilibrată, corespunzătoare tabelului (T) (vezi


II.2), are forma:

 n m
 min f  X  

cij xij  26
i 1 j 1
m


 x  b , 1 i  n
ij i  27
j 1

 n

 PT :  xij  b 'j , 1  j  m
 j 1
 28
m n


 b' 
j 
bi  29
j 1 i 1

 xij  0   i , j


numită şi forma standard.
m n
În cazul în care avem  b   b , atunci în tabelul (T)
i 1
'
j
i 1
i

n m
introducem coloana (m+1)-a cu bm' 1  b  b i
'
j º i ci ,m1  0   1  i  n;
i 1 j 1
m n
iar in cazul cã  b 'j  b i introducem linia (n+1)-a cu
j 1 i 1
m n
bn' 1  
j 1
b 'j  b
i 1
i si cn1, j  0 1  j  m.

Din (27) şi (28) avem m  n relaţii cu m  n necunoscute. Din (29)


rezultă că între ecuaţiile (27) şi (28) mai există cel puţin o relaţie şi atunci
rangul matricii sistemului (27) + (28) este ce mult m  n  1

Definiţia II.8.1. Dacă rangul matricii sistemului (27)+(28) este m+n-1,


iar un program de bază are exact m+n-1 componente pozitive (restul nule)
atunci programul se numeşte nedegenerat.

26
O problemă de transport se poate rezolva prin metoda simplex dar există
şi metode specifice.
Pentru început vom prezenta două metode specifice pentru obţinerea
unui program de bază; în cazul unui exemplu concret:

1* - Metoda colţului N-V (nord-vest)


2* - Metoda elementului minim din linie sau coloană.

Problemă: Din trei depozite


D1 , D2 , D3 trebuie transportată acelaşi tip
de marfă la trei magazine C1 , C2 , C3 . Costurile unitare de transport,
disponibilul (D) şi necesarul (N) sunt date în tabelul:

C1 C2 C3  D
D1 2 5 3 100
D2 4 2 1 120
D3 7 8 3 70
N 80 110 100

Observăm că problema este echilibrată.

Metoda 1 .În colţul din N-V se trece min D1 , N1  min100,80  80.
Deoarece necesarul N 1 s-a epuizat se trece 0 (sau se lasă libere, sau se
haşurează) celelalte căsuţe de pe prima coloană. Iar D1 devine 100  80  20 .
Obţinem tabelul:

C1 C2 C3  D
D1 80 20
D2 /////////// 120
D3 /////////// 70
N 110 100

Cu coloanele C2 , C3 rămase procedăm la fel. În colţul N-V (căsuţa (1,2) din


tabel) înscriem min D1 , N 2   min20,110  20. Deoarece disponibilul D1 s-a
epuizat se trece 0 în restul căsuţelor de pe prima linie; iar necesarul N 2 a
devenit 110  20  90 . Obţinem tabelul:

27
c C2 C3  D
D1 80 20 ///////////
D2 /////////// 120
D3 /////////// 70
N 90 100

Cu căsuţele rămase libere se procedează ca mai sus şi se obţine, în final,


programul de bază:

80 20 0
0 90 30
0 0 70
care este nedegenerat (are m  n  1componente; în cazul de faţă m=3, n=3).

Metoda 2 Metoda minimului pe linie:
Căutăm costul minim din prima linie; îl găsim pe poziţia c11  2. În căsuţa
respectivă , trecem min N1 , D1  min80,100  80 . Deoarece N 1 s-a epuizat
haşurăm celelalte căsuţe ale coloanei C1 ; iar D1 a devenit 100-20=80.
Tabelul s-a transformat în:

C1 C2 C3  D
D1 80 20
D2 /////////// 120
D3 /////////// 70
(N) 110 100

În tabelul rămas, compus din coloanele C2 şi C3 căutăm din nou cel mai
mic cost de pe prima linie: găsim c13  3 . În căsuţa corespunzătoare trecem
min D1 , N 3   min20,100  20. Deoarece D1 s-a epuizat, haşurăm căsuţele
libere din prima linie, iar N 3 a devenit 100-20=80. Obţinem tabelul:

C1 C2 C3  D
D1 80 /////////// 20
D2 /////////// 120

28
D3 /////////// 70
(N) 110 80

În continuare procedăm la fel şi obţinem programul de bază:

80 0 20
0 110 10
0 0 70
care este diferit de cel obţinut prin metoda colţului N-V. Lucrurile se petrec la
fel dacă căutăm costul minim de transport de pe o coloană.
De regulă în rezolvarea unei probleme de transport, după ce i s-a
determinat un program de bază, se foloseşte duala sa:

 n m
 max g 
 i 1

bi ui 
j 1
b 'j v j 
 n m

PT d :  
 i 1 j 1
ui  v j  cij

u , v  R , 1  i  n, 1  j  m
 i j

Conform teoremelor dualităţii avem:
g Y   f  X  pentru orice pereche de soluţii duale X,Y.
max g Y   min f  X  în cazul în care avem optim.
Înlocuind în gY  valorile bi , 1  i  n şi b'j , 1  j  m cu
expresiile date de modelul primal ((27), respectiv (28)), găsim:

 
n m m n n m
30   xijui    xijv j    ui  v j xij
i 1 j 1 j 1 i 1 i 1 j 1

Inegalitatea gY   f  X  devine:

  
n m n m
31 ui  v j xij    cij xij unde xij  0
i 1 j 1 i 1 j 1
sau:

  u  v 
n m
32 i j  cij xij  0, xij  0.
i 1 j 1
Dacă X este optim finit pentru problema primală avem
max g Y   min f  X  şi inegalitatea (32) se transformă în egalitate. Cum
xij  0   i , j ajungem la concluzia:

29
 33 ui  v j  cij  0 dacã xij  0.
Tot de aici reiese că dacă pentru un xij  0 avem ui  v j  cij  0 atunci
X nu este optim.
Cum xij  0 sunt în număr de m+n-1 atunci (33) reprezintă m+n-1 relaţii
cu m+n necunoscute ( ui sunt în număr de n, iar v j în număr de m). Ţinând
seama şi de forma sistemului (33) este suficient să facem u1  0 pentru a
obţine restul necunoscutelor.
Condiţia ca X să fie optim revine la faptul că ui  v j  cij  0 pentru
xij nebazici.
Notând ui  v j  C0 şi cij  C0   0 condiţia ca X să fie optim
devine  0  0 pentru xij nebazici. Dacă nu toţi  0  0 pentru xij nebazici,
se trece la îmbunătăţirea programului:

Se alege crs  C0  min  0  0  0 .
i , j 

xrs corespunzătoare, nebazică se introduce în bază. Pe linia r,
Variabila
dintr-un xrk bazic trebuie scăzut un xrs , pentru a nu modifica disponibilul
Dr şi atunci pe coloana k, la un x pk bazic trebuie adăugat xrs pentru a nu
modifica necesarul N k şi în consecinţă pe linia p la un x ps trebuie scăzut
xrs pentru a nu modifica disponibilul Ds .
Notând xrs   , se formează astfel un ciclu:
x ps    x pk  

  x rk  
Alegând   minx ps , xrk  se obţine o nouă soluţie de bază. Se calculează
din nou C0 , 0 , ş.a.m.d., până în momentul în care nu mai avem  0  0 .
Toate aceste rezultate se pun într-un tabel specific pe care îl prezentăm
în contextul problemei exemplu anterioare.

30
X0 C0
v1 v2 v3 vj 2 5 4 0 Ciclul
ui
u1 80 20 0 /// /// 4 -1 20- 
u2 90 30 -3 -1 /// /// 5 90+ 30-
u3 70 -1 1 4 /// 6 4

X  avem programul de bază determinat cu metoda colţului N-V.


În caseta
Corespunzător acestuia sistemul ui  v j  cij  0 devine:
u  v  2
 1 1
 u1  v 2  5

 u2  v 2  2

 u2  v 3  1

 u3  v 3  3
Punând u1=0 obţinem v1  2, v2  5, u2  3, v3  4, u3  1valori pe
care le-am trecut în prima coloană, respectiv prima linie din caseta C . Apoi
căsuţele din această casetă, corespunzătoare programului de bază se haşurează,
iar celelalte se completează cu valorile C corespunzătoare. Se calculează
valorile  0  cij  C0 care au fost trecute în căsuţele corespunzătoare.
Observăm că  13  1  0 , deci X  nu este soluţie optimă şi trebuie
îmbunătăţită.
Formăm ciclul cu  şi găsim   min20,30  20. Scriem un nou tabel
cu noua soluţie găsită pe care am notat-o X1 .

X1 C0
v1 v2 v3 vj 2 4 3 0
ui
u1 80 20 0 //// 4 //// //// 1 ////
u2 110 10 -2 0 //// //// 4 ////
u3 70 0 2 4 //// 5 4 ////

31
Am obţinut  0  0   i , j nebazici, deci soluţia X1 este optimă.
Observăm că ea coincide cu soluţia de bază determinată cu ajutorul metodei
costului minim pe linie.

Propunem spre rezolvare următoarele probleme de transport:


1.
C1 C2 C3 C4 (D)
D1 5 6 2 5 15
D2 1 3 4 2 25
D3 7 1 3 4 20
(N) 10 30 5 15

Observaţie: Soluţia de bază obţinută cu metoda colţului N-V este:


10 5 0 0 
 
X N V   0 25 0 0  care are 5 componente nenule.
 
0 0 5 15
Cum m+n-1=3+4-1=6 rezultă că X N V este degenerată. Se caută altă soluţie de
0 0 5 10
 
bază cu metoda costului minim pe linie, obţinându-se:10 10 0 5
 
0 20 0 0

2.
D1 D2 D3 D4 N
C1 1 3 2 5 50
C2 6 2 3 2 20
C3 4 5 1 1 60
 D 30 10 10 80

Observaţie: Mai întâi trebuie transpus acest tabel. Se va găsi soluţia de bază:
 30 0 0
 
 0 10 0 
 .
0 0 10
 
 20 10 50 

32
3.
C1 C2 C3  D
D1 2 3 1 50
D2 4 5 2 30
N 30 10 40

4.
C1 C2 C3  D
D1 5 2 1 20
D2 3 4 2 40
D3 5 4 3 40
(N) 40 10 30

Observaţie: Deoarece (D) > (N) problema este neechilibrată. Introducem un


consumator fictiv:

C1 C2 C3 C4  D
D1 5 2 1 0 20
D2 3 4 2 0 40
D3 5 4 3 0 40
N 40 10 30 20

Probleme de programare liniară propuse spre rezolvare:

I. Să se rezolve următoarele probleme puse sub forma standard:

max f  x   3 x1  x2
2 x  3x  x  4 T
 44 4 
1.) 
1 2 3  136
Sol. X optim   ; ;0;0  max f 
5 x1  2 x2  x4  12  19 19  19

 xi  0 i  1,4.

33
min f  x    x1  2 x2  2 x3
 2 x1  x2  x3  x4  1

Sol: X optim   5,0,11,0,19,0
T
2.)  x1  2 x2  2 x3  x5  2 min f  27

 3 x1  x2  x3  x6  4

 xi  0 i  1,6

min f  x    x 4  2 x5  3x 6
 x1  x 4  2 x 5  x 6  3

Sol: X optim   0,0,0,2,7,11
T
3.)  x 2  3x 4  x5  x 6  4 min f  47

 x 3  x 4  3x5  2 x 6  1

 xi  0

max f  x   3 x1  2 x2  4 x3  2 x4
 x1  2 x2  x3  2 x4  x5  2

4.)   x1  3x2  x3  x4  x6  1

  x1  x2  4 x3  x4  x7  2

 xi  0 i  1,7
Sol: X optim   0,0,0,1,4,0,3 ;
T
max f  2.

min f  x   3 x1  x 2  2 x 3  x 7  4
 x1  2 x 2  3 x 3  x 4  x 7  1

5.)  x1  x 2  x 3  x 5  x 7  2 Sol: nu are optim finit

  x1  x 2  2 x 3  x 6  2 x 7  3

 xi  0

34
II. Să se aducă la forma standard şi apoi să se rezolve problemele:

max f  x   3x1  2 x 2  4 x 3
x  2x  x  5
6.) 
1 2 3
Sol: nu are optim finit
 x1  4 x 2  x 3  1

 xi  0

max f  x   7 x1  4 x 2
 x  x  1
7.)  Sol: X optim   2,1,2,0,0
1 2 T
max f  18
 x1  2 x 2  4

 x1  2 x1,2  0

min f  x   2 x1  3 x 2  x 4
 x1  2 x 2  3 x 3  x 4  1

8.)  x1  x 2  x 3  x 4  2 Sol: X optim   8,11,0,5
T


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

 xi  0 i  1,4

max f  x  y  z
2 x  y  3

Sol: X optim  111
,,
T
9.)  2 y  z  3

x  2z  3

 x, y, z  0

max f  x  y  z
x  y  1
T
  1 1 1
10.)  y  z  1 Sol: X optim   ; ; 
  2 2 2
x  z  1

 x, y, z  0

35
min f  x   2 x1  x 2  x 3

x1  x 2  x 3  1
11.)  Sol: nu există minim
2 x 2  x 3  4

 x i  0 i  1,3

max f  x   2 x1  x 2
 2 x1  x 2  4
Sol: X optim   4,0
T
12.) 
  x1  x 2  4

 x  R, y  0

min f  2 x1  3 x 2  2 x 3
 x1  x 2  x 3  1

13.)  x1  2 x 2  3 x 3  4

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

 xi  0 i  1,3

min f  x   x1  2 x 2  x 3
x  x  2x  1
14.) 
1 2 3
Sol: X optim  0,0,1 / 2 T
  x1  x 2  x 3  4

 x1 , x 2  0 x3  R

max f  x   x1  2 x 2  3x 3
x  x  x  6
15.) 
1 2 3

 2 x1  3 x 2  x 3  6

 x1  2, x 2  3, x 3  0
Indicaţie: Se face mai întâi schimbarea de variabile:
x  x1  2, x  x2  3 Sol: X optim  2,3,1 .
' ' T
1 2

36
III. Folosind metoda celor două faze să se rezolve programele liniare:

min f  x    x1  3 x 2  2 x 3  x 4  2 x 5
2 x  x  2 x  x  x  1
16.) 
1 2 3 4 5
Sol: X optim  0,0,5 / 3,7 / 3,0
 3 x1  x 2  x 3  2 x 4  2 x 5  3

 x i  0 i  1,5

min f  x   3 x1  x 2  x 3  x 4
 x1  x 2  x 3  x 4  x 5  1

Sol: X optim  111
, , ,0 min f  1
T
17.)  2 x1  x 2  x 3  2 x 4  x 5  2

 2 x1  x 2  x 3  x 4  4

 xi  0

min f  x   2 x1  3 x 2
 x1  x 2  1

18.)  x1  x 2  2 Sol: X optim  1,0

 x1  2 x 2  1

 x1/ 2  0

max f  x   x1  x 2  x 3
 x  3x  5x  2
 1 2 4 
19.)
2 3
Sol: X optim   ; ;0
 3 x1  2 x 2  2 x 3  2 7 7 

 x i  0 i  1,3

37
min f  x   2 x1  x 2  x 3
x  x  x  2
20.)  1 2 3

 2 x1  x 2  x 3  3

 xi  0

IV. Să se transcrie matematic şi apoi să se rezolve următoarele probleme:

21.) O maşină care lucrează 25 de ore pe săptămână produce trei articole.


Beneficiul obţinut în urma vânzării acestor articole este de 40 lei/buc pentru
primul articol, respectiv 120 lei/buc pentru al doilea articol şi 30 lei/buc pentru
ultimul articol. Într-o oră maşina poate realiza 50 buc din primul articol sau 25
buc din al doilea articol sau 75 buc din al treilea articol. Cererea săptămânală nu
depăşeşte 1000 buc din primul articol, 500 buc din al doilea articol, 1500 buc
din al treilea articol. Cum trebuie repartizată producţia celor trei articole pentru
ca întreprinderea să-şi asigure un beneficiu maxim:

Răspuns: Fie x1 , x 2 , x 3 cantităţile din cele trei articole ce trebuiesc produse.


Atunci avem de rezolvat problema:
max f  40 x1  120 x 2  30 x 3


 x1  1000
 x  500
 2
 x 3  1500

1 1 1
 50 x1  25 x 2  75 x 3  25

 x1 , x 2 , x 3  0
1
(  x1 reprezintă numărul de ore pe săptămână în care maşina produce
50
cantitatea x1 din primul articol).
22.) O fabrică de zahăr trebuie să producă între 1 noiembrie - 28 februarie.
Livrările de zahăr se fac lunar, după contract: în noiembrie 20.000 t, în
decembrie 30.000 t, în ianuarie 50.000 t şi în februarie 40.000 t. Producţia
excedentară a unei luni poate fi livrată luna următoare, suportând cheltuielile de
depozitare de 2.000 lei/tonă pe lună. Capacitatea lunară de producţie a fabricii
este: 55.000 t în noiembrie, 40.000 t în decembrie, 25.000 t în ianuarie, 50.000 t
în februarie. Preţurile de cost sunt: 140.000 lei/tonă în noiembrie, 160.000

38
lei/tonă în decembrie, 150.000 lei/tonă în ianuarie, 170.000 lei/tonă în
februarie.
Să se stabilească nivelul de producţie lunar astfel încât contractele să fie
satisfăcute cu cheltuieli minime.

Răspuns. Vom presupune că producţia se termină fără stoc.


Fie x1 , x2 , x3 , x4 cantităţile de zahăr ce trebuiesc produse respectiv în lunile:
noiembrie, decembrie, ianuarie, februarie. Avem:
x i  0 i  1,4
 x1  55000

 x 2  40000

 x 3  25000
 x  50000
 4
 x  20000
 1
 
 x  x  20000  30000
 2 1


 
 x 3  x1  x 2  50000  50000

 
 x 4  x1  x 2  x 3  100.000  40.000

(  x1  20000 - reprezintă excedentul din noiembrie.)


Considerând cheltuielile de producţie şi cele de depozitare în mii lei
funcţia obiectiv devine:
   
f  x   140 x1  160 x 2  150 x 3  170 x 4  2 x1  20000  2 x1  x 2  50000 


 2 x1  x 2  x 3  100000 
Deci avem de calculat minimul funcţiei:
f  x  146x1  164 x2  152 x3  170x 4  340000.

23.) Un atelier de construcţii metalice dispune de ţevi cu lungimea de 5m,


din care trebuie să taie cel puţin 35 ţevi în lungime de 2m, 25 ţevi de 2,5m şi 10
ţevi de 3m lungime. Cum trebuie procedat astfel ca să se realizeze consumuri
minime de material?

Răspuns: Există patru variante de a tăia o ţeavă de 5m lungime în bucăţi


cu lungimile specificate:

39
v1 : 5  2  2 1
v2 : 5  2,5  2,5
v3 : 5  3 2
v4 : 5  2  2,5  0,5

Observăm că la prima variantă se pierde 1m de ţeavă, la cea de-a patra


0,5m iar la variantele a II-a şi a III-a nimic. Notând cu x1 , x2 , x3 , x4 numărul
ţevilor de 5m care se taie respectiv după variantele v1 , v2 , v3 , v4 vom avea:

min f  x1  0,5 x 4 .
 2 x1  x 3  x 4  35

 2 x 2  x 4  25

 x 3  10

 x i  0 i  1,4

Vom obţine x1  0, x2  5, x3  10, x4  15

24.) Fiecare animal dintr-o fermă are nevoie de o cantitate minimă de


principii nutririve pe zi care depinde de specie, vârstă, scop urmărit în
alimentaţie.
Principiile nutritive se află în diferite proporţii în produsele ce compun
raţia furajeră. Folosind datele din tabelul de mai jos să se determine cantitatea x
din alimentul A1 şi cantitatea y din alimentul A2 exprimate în kilograme, ce
trebuie să intre în compoziţia raţiei furajere a unui animal astfel încât costul ei
să fie minim.

Denumirea Conţinutul în principii Cantităţile minime


principiilor nutritive nutritive al alimentelor (kg) prescrise (kg)
A1 A2
P1 0,1 0 0,4
P2 0 0,1 0,6
P3 0,1 0,2 2
P4 0,2 0,1 1,7
Costul (lei/kg) 240 80

40
Indicaţie: problema se transcrie matematic astfel:

 0,1x  0,4

 0,1 y  0,6

 0,1x  0,2 y  2
 Se găseşte x  4, y  9
 0,2 x  0,1 y  1,7

 x, y  0
 min f  240 x  80 y

41

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